The stream decider has a lane for this stream. A @decide directive names the start as its six modes, the window, the radius and the error; the decider recomputes K=3, L=3, M=3L=9, ρ=72LK=648 and the certified bound M(ρr)N/(1−ρr), writes the application of euler_l1_geometric and truncationBound_rat with every side condition left to the kernel, and the proof lifts these bounds through Fourier.solution_contract and Contract.consequence. Each generated theorem is a total contract for vorticityCircuit .ogf 0, with only the initial slice prescribed and convergence and bounds on every circuit output. Lean checks that contract as part of this file. These trig-* readings do not claim classical realization; that is included in circuit_contract above and the euler-* section below. The first directive asks the bound of truncation_through_t2 and is checked, over the start spelled out as a table of modes. The second asks a band on the sum itself rather than on its distance from the start's field: the ℓ¹ norms 3,58,260223 of the window through t2, recomputed by the kernel from the Picard tables (exact for these tables of distinct modes; the proof uses only ∥ωn∥ℓ1≤ Table.absSum), plus the tail 1001 bound it by about 3.0102 on ∣t∣≤64801, so [−1031,1031] is checked. The third asks u≤3, the start's own ℓ¹ norm: no window's bound separates it, and this lane evaluates the sum at no point, so it stays undecided — exhausted, not refuted, and no claim is written. Whether the sum ever exceeds 3 is not settled here either way.
Decisiontruncation_decided · stream · forsetiNever runL429–431
stream vorticity viscosity 0 interpretation trig-truncation basis ogf start modes [1, 0, 1/2], [-1, 0, 1/2], [1, 1, 1/2], [-1, -1, 1/2], [2, 1, 1/2], [-2, -1, 1/2] truncation u window 3 radius 1/6480 epsilon 1/100
Not run yet.
namespace Decided_truncation_decided
L433–433
Namespace Notebook.Euler.Decided_truncation_decided
Lean source · 2 lines
def forsetiTable : Gimle.Asgard.Streams.Torus.Table :=
[((1, 0), (mkRat (1) 2)), ((-1, 0), (mkRat (1) 2)), ((1, 1), (mkRat (1) 2)), ((-1, -1), (mkRat (1) 2)), ((2, 1), (mkRat (1) 2)), ((-2, -1), (mkRat (1) 2))]
Namespace Notebook.Euler.Decided_truncation_decided
Lean source · 2 lines
noncomputable def forsetiStart : Gimle.Asgard.Streams.TrigStream :=
fun _ => Gimle.Asgard.Streams.Torus.Table.toTrig forsetiTable
Details
Namespace Notebook.Euler.Decided_truncation_decided
Lean source · 5 lines
def forsetiPost (output : Gimle.Asgard.Streams.Fourier.Point 1) : Prop :=
(∀ (t : ℝ) (x : ℝ × ℝ), |t| ≤ (((mkRat (1) 6480) : ℚ) : ℝ) →
HasSum (Gimle.Asgard.Streams.TrigStream.seriesTerm (output 0) t x)
(Gimle.Asgard.Streams.TrigStream.analyticField (output 0) t x)) ∧
Gimle.Asgard.Streams.TrigStream.TruncationBound (output 0) (((mkRat (1) 6480) : ℚ) : ℝ) 3 (((mkRat (1) 100) : ℚ) : ℝ)
Namespace Notebook.Euler.Decided_truncation_decided
Lean source · 4 lines
def forsetiRoot : Prop :=
Gimle.Forseti.Fourier.Contract
(Gimle.Asgard.Streams.NS.vorticityCircuit .ogf (mkRat (0) 1))
(fun input => input 0 0 = forsetiStart 0) forsetiPost
Namespace Notebook.Euler.Decided_truncation_decided
The Fourier feedback circuit (ν = 0; ν = 0 is the Euler equation) admits every input whose initial vorticity is Σ c·e^(i k·x) over the listed ((k₁, k₂), c); higher boundary coefficients are free. In basis ogf, a unique formal output exists and every output ω satisfies the bound: its series converges for |t| ≤ 1/6480, and the window through t^2 is within 1/100 of the sum there. This claim does not assert classical PDE realization; that theorem additionally needs an even, mean-zero start. The stream decider proved it. Goal (stream): stream vorticity viscosity 0 interpretation trig-truncation basis ogf start modes [1, 0, 1/2], [-1, 0, 1/2], [1, 1, 1/2], [-1, -1, 1/2], [2, 1, 1/2], [-2, -1, 1/2] truncation u window 3 radius 1/6480 epsilon 1/100
Assumptions: propext, Classical.choice, Quot.sound
Lean source & proof · 47 lines
/-- The Fourier feedback circuit (ν = 0; ν = 0 is the Euler equation) admits every input whose initial vorticity is Σ c·e^(i k·x) over the listed ((k₁, k₂), c); higher boundary coefficients are free. In basis ogf, a unique formal output exists and every output ω satisfies the bound: its series converges for |t| ≤ 1/6480, and the window through t^2 is within 1/100 of the sum there. This claim does not assert classical PDE realization; that theorem additionally needs an even, mean-zero start. The stream decider proved it. Goal (stream): stream vorticity viscosity 0 interpretation trig-truncation basis ogf start modes [1, 0, 1/2], [-1, 0, 1/2], [1, 1, 1/2], [-1, -1, 1/2], [2, 1, 1/2], [-2, -1, 1/2] truncation u window 3 radius 1/6480 epsilon 1/100 -/
theorem truncation_decided :
Gimle.Forseti.Fourier.Contract (Gimle.Asgard.Streams.NS.vorticityCircuit .ogf 0)
(fun input => input 0 0 = Gimle.Asgard.Streams.Torus.Table.toTrig [((1, 0), (1/2)), ((-1, 0), (1/2)), ((1, 1), (1/2)), ((-1, -1), (1/2)), ((2, 1), (1/2)), ((-2, -1), (1/2))])
(fun output =>
have ω := output 0;
(∀ (t : ℝ) (x : ℝ × ℝ), |t| ≤ (1/6480) →
HasSum (Gimle.Asgard.Streams.TrigStream.seriesTerm ω t x)
(Gimle.Asgard.Streams.TrigStream.analyticField ω t x)) ∧
Gimle.Asgard.Streams.TrigStream.TruncationBound ω (1/6480) 3 (1/100)) := by
have root : forsetiRoot := by
unfold forsetiRoot
apply (Gimle.Forseti.Fourier.solution_contract .ogf (mkRat (0) 1) forsetiStart).consequence (fun _ h => h)
intro output same
subst output
unfold forsetiPost
simp only [Matrix.cons_val_zero]
have geo : Gimle.Asgard.Streams.TrigStream.GeometricBound (Gimle.Asgard.Streams.NS.stream .ogf (mkRat (0) 1) forsetiStart) (((mkRat (9) 1) : ℚ) : ℝ) (((mkRat (648) 1) : ℚ) : ℝ) := by
intro n
have h := Gimle.Asgard.Streams.NS.euler_l1_geometric forsetiStart (K := 3) (by decide) (Gimle.Asgard.Streams.Torus.Table.sizeLE_toTrig (by decide)) (L := (mkRat (3) 1)) ((Gimle.Asgard.Streams.Torus.Table.l1_le_absSum _).trans (le_of_eq (by decide +kernel))) n
have e : (3 * ((mkRat (3) 1) : ℚ) * (72 * (mkRat (3) 1) * ((3 : ℕ) : ℚ)) ^ n) = (mkRat (9) 1) * (mkRat (648) 1) ^ n := by norm_num [Rat.mkRat_eq_div]
rw [e] at h
have h' : ((Gimle.Asgard.Streams.Torus.l1 (Gimle.Asgard.Streams.NS.stream .ogf (mkRat (0) 1) forsetiStart n) : ℚ) : ℝ) ≤ (((mkRat (9) 1) * (mkRat (648) 1) ^ n : ℚ) : ℝ) := by exact_mod_cast h
push_cast at h'
exact h'
refine ⟨fun t x ht => ?_, ?_⟩
· exact Gimle.Asgard.Streams.TrigStream.hasSum_analyticField geo (by norm_num [Rat.mkRat_eq_div]) (by norm_num [Rat.mkRat_eq_div]) ht
· refine (Gimle.Asgard.Streams.TrigStream.truncationBound_rat geo (by decide +kernel) (by decide +kernel) _).mono ?_
exact_mod_cast (show Gimle.Asgard.Streams.TrigStream.tailBound (mkRat (9) 1) (mkRat (648) 1) (mkRat (1) 6480) 3 ≤ (mkRat (1) 100) by decide +kernel)
have forsetiInitial : forsetiStart 0 = Gimle.Asgard.Streams.Torus.Table.toTrig [((1, 0), (1/2)), ((-1, 0), (1/2)), ((1, 1), (1/2)), ((-1, -1), (1/2)), ((2, 1), (1/2)), ((-2, -1), (1/2))] := by
unfold forsetiStart forsetiTable
norm_num [Rat.mkRat_eq_div]
have forsetiViscosity : ((mkRat (0) 1) : ℚ) = 0 := by norm_num [Rat.mkRat_eq_div]
have forsetiCast0 : (((mkRat (1) 6480) : ℚ) : ℝ) = (1/6480) := by norm_num [Rat.mkRat_eq_div]
have forsetiCast1 : (((mkRat (1) 100) : ℚ) : ℝ) = (1/100) := by norm_num [Rat.mkRat_eq_div]
refine (fun (bridge : _ ↔ forsetiRoot) => bridge.mpr root) ?_
constructor
· intro claim
dsimp only at claim
unfold forsetiRoot forsetiPost
set_option linter.unusedSimpArgs false in simp only [forsetiInitial, forsetiViscosity, forsetiCast0, forsetiCast1]
exact claim
· intro lane
unfold forsetiRoot forsetiPost at lane
set_option linter.unusedSimpArgs false in simp only [forsetiInitial, forsetiViscosity, forsetiCast0, forsetiCast1] at lane
dsimp only
exact lane
end Decided_truncation_decided
L500–500Decisionband_decided · stream · forsetiNever runL505–507
stream vorticity viscosity 0 interpretation trig-band basis ogf start modes [1, 0, 1/2], [-1, 0, 1/2], [1, 1, 1/2], [-1, -1, 1/2], [2, 1, 1/2], [-2, -1, 1/2] band u radius 1/6480 : u >= -31/10 and u <= 31/10
Not run yet.
namespace Decided_band_decided
L509–509
Namespace Notebook.Euler.Decided_band_decided
Lean source · 2 lines
def forsetiTable : Gimle.Asgard.Streams.Torus.Table :=
[((1, 0), (mkRat (1) 2)), ((-1, 0), (mkRat (1) 2)), ((1, 1), (mkRat (1) 2)), ((-1, -1), (mkRat (1) 2)), ((2, 1), (mkRat (1) 2)), ((-2, -1), (mkRat (1) 2))]
Namespace Notebook.Euler.Decided_band_decided
Lean source · 2 lines
noncomputable def forsetiStart : Gimle.Asgard.Streams.TrigStream :=
fun _ => Gimle.Asgard.Streams.Torus.Table.toTrig forsetiTable
Details
Namespace Notebook.Euler.Decided_band_decided
Lean source · 6 lines
def forsetiPost (output : Gimle.Asgard.Streams.Fourier.Point 1) : Prop :=
(∀ (t : ℝ) (x : ℝ × ℝ), |t| ≤ (((mkRat (1) 6480) : ℚ) : ℝ) →
HasSum (Gimle.Asgard.Streams.TrigStream.seriesTerm (output 0) t x)
(Gimle.Asgard.Streams.TrigStream.analyticField (output 0) t x)) ∧
∀ (t : ℝ) (x : ℝ × ℝ), |t| ≤ (((mkRat (1) 6480) : ℚ) : ℝ) →
(((mkRat (-31) 10) : ℚ) : ℝ) ≤ Gimle.Asgard.Streams.TrigStream.analyticField (output 0) t x ∧ Gimle.Asgard.Streams.TrigStream.analyticField (output 0) t x ≤ (((mkRat (31) 10) : ℚ) : ℝ)
Namespace Notebook.Euler.Decided_band_decided
Lean source · 4 lines
def forsetiRoot : Prop :=
Gimle.Forseti.Fourier.Contract
(Gimle.Asgard.Streams.NS.vorticityCircuit .ogf (mkRat (0) 1))
(fun input => input 0 0 = forsetiStart 0) forsetiPost
Namespace Notebook.Euler.Decided_band_decided
Lean source · 1 line
def forsetiBound : ℚ := (mkRat (32864382943) 10917504000)
Namespace Notebook.Euler.Decided_band_decided
The Fourier feedback circuit (ν = 0; ν = 0 is the Euler equation) admits every input whose initial vorticity is Σ c·e^(i k·x) over the listed ((k₁, k₂), c); higher boundary coefficients are free. In basis ogf, a unique formal output exists and every output ω satisfies the bound: its series converges for |t| ≤ 1/6480, and its sum stays within the band there. This claim does not assert classical PDE realization; that theorem additionally needs an even, mean-zero start. The stream decider proved it. Goal (stream): stream vorticity viscosity 0 interpretation trig-band basis ogf start modes [1, 0, 1/2], [-1, 0, 1/2], [1, 1, 1/2], [-1, -1, 1/2], [2, 1, 1/2], [-2, -1, 1/2] band u radius 1/6480 : u >= -31/10 and u <= 31/10
Assumptions: propext, Classical.choice, Quot.sound
Lean source & proof · 65 lines
/-- The Fourier feedback circuit (ν = 0; ν = 0 is the Euler equation) admits every input whose initial vorticity is Σ c·e^(i k·x) over the listed ((k₁, k₂), c); higher boundary coefficients are free. In basis ogf, a unique formal output exists and every output ω satisfies the bound: its series converges for |t| ≤ 1/6480, and its sum stays within the band there. This claim does not assert classical PDE realization; that theorem additionally needs an even, mean-zero start. The stream decider proved it. Goal (stream): stream vorticity viscosity 0 interpretation trig-band basis ogf start modes [1, 0, 1/2], [-1, 0, 1/2], [1, 1, 1/2], [-1, -1, 1/2], [2, 1, 1/2], [-2, -1, 1/2] band u radius 1/6480 : u >= -31/10 and u <= 31/10 -/
theorem band_decided :
Gimle.Forseti.Fourier.Contract (Gimle.Asgard.Streams.NS.vorticityCircuit .ogf 0)
(fun input => input 0 0 = Gimle.Asgard.Streams.Torus.Table.toTrig [((1, 0), (1/2)), ((-1, 0), (1/2)), ((1, 1), (1/2)), ((-1, -1), (1/2)), ((2, 1), (1/2)), ((-2, -1), (1/2))])
(fun output =>
have ω := output 0;
(∀ (t : ℝ) (x : ℝ × ℝ), |t| ≤ (1/6480) →
HasSum (Gimle.Asgard.Streams.TrigStream.seriesTerm ω t x)
(Gimle.Asgard.Streams.TrigStream.analyticField ω t x)) ∧
∀ (t : ℝ) (x : ℝ × ℝ), |t| ≤ (1/6480) →
(-31/10) ≤ Gimle.Asgard.Streams.TrigStream.analyticField ω t x ∧ Gimle.Asgard.Streams.TrigStream.analyticField ω t x ≤ (31/10)) := by
have root : forsetiRoot := by
unfold forsetiRoot
apply (Gimle.Forseti.Fourier.solution_contract .ogf (mkRat (0) 1) forsetiStart).consequence (fun _ h => h)
intro output same
subst output
unfold forsetiPost
simp only [Matrix.cons_val_zero]
have geo : Gimle.Asgard.Streams.TrigStream.GeometricBound (Gimle.Asgard.Streams.NS.stream .ogf (mkRat (0) 1) forsetiStart) (((mkRat (9) 1) : ℚ) : ℝ) (((mkRat (648) 1) : ℚ) : ℝ) := by
intro n
have h := Gimle.Asgard.Streams.NS.euler_l1_geometric forsetiStart (K := 3) (by decide) (Gimle.Asgard.Streams.Torus.Table.sizeLE_toTrig (by decide)) (L := (mkRat (3) 1)) ((Gimle.Asgard.Streams.Torus.Table.l1_le_absSum _).trans (le_of_eq (by decide +kernel))) n
have e : (3 * ((mkRat (3) 1) : ℚ) * (72 * (mkRat (3) 1) * ((3 : ℕ) : ℚ)) ^ n) = (mkRat (9) 1) * (mkRat (648) 1) ^ n := by norm_num [Rat.mkRat_eq_div]
rw [e] at h
have h' : ((Gimle.Asgard.Streams.Torus.l1 (Gimle.Asgard.Streams.NS.stream .ogf (mkRat (0) 1) forsetiStart n) : ℚ) : ℝ) ≤ (((mkRat (9) 1) * (mkRat (648) 1) ^ n : ℚ) : ℝ) := by exact_mod_cast h
push_cast at h'
exact h'
refine ⟨fun t x ht => ?_, fun t x ht => ?_⟩
· exact Gimle.Asgard.Streams.TrigStream.hasSum_analyticField geo (by norm_num [Rat.mkRat_eq_div]) (by norm_num [Rat.mkRat_eq_div]) ht
· have b := Gimle.Asgard.Streams.TrigStream.abs_analyticField_le (x := x) geo (by norm_num [Rat.mkRat_eq_div]) (by norm_num [Rat.mkRat_eq_div]) ht 3
simp only [Finset.sum_range_succ, Finset.sum_range_zero] at b
have h0 : ((Gimle.Asgard.Streams.Torus.l1 (Gimle.Asgard.Streams.NS.stream .ogf (mkRat (0) 1) forsetiStart 0) : ℚ) : ℝ) ≤ (((mkRat (3) 1) : ℚ) : ℝ) := by
rw [Gimle.Asgard.Streams.NS.stream_eq_table (mkRat (0) 1) forsetiTable forsetiStart rfl]
exact_mod_cast (Gimle.Asgard.Streams.Torus.Table.l1_le_absSum _).trans (le_of_eq (by decide +kernel))
have h1 : ((Gimle.Asgard.Streams.Torus.l1 (Gimle.Asgard.Streams.NS.stream .ogf (mkRat (0) 1) forsetiStart 1) : ℚ) : ℝ) ≤ (((mkRat (8) 5) : ℚ) : ℝ) := by
rw [Gimle.Asgard.Streams.NS.stream_eq_table (mkRat (0) 1) forsetiTable forsetiStart rfl]
exact_mod_cast (Gimle.Asgard.Streams.Torus.Table.l1_le_absSum _).trans (le_of_eq (by decide +kernel))
have h2 : ((Gimle.Asgard.Streams.Torus.l1 (Gimle.Asgard.Streams.NS.stream .ogf (mkRat (0) 1) forsetiStart 2) : ℚ) : ℝ) ≤ (((mkRat (223) 260) : ℚ) : ℝ) := by
rw [Gimle.Asgard.Streams.NS.stream_eq_table (mkRat (0) 1) forsetiTable forsetiStart rfl]
exact_mod_cast (Gimle.Asgard.Streams.Torus.Table.l1_le_absSum _).trans (le_of_eq (by decide +kernel))
have hB : |Gimle.Asgard.Streams.TrigStream.analyticField (Gimle.Asgard.Streams.NS.stream .ogf (mkRat (0) 1) forsetiStart) t x| ≤ ((forsetiBound : ℚ) : ℝ) := by
refine b.trans ?_
norm_num [forsetiBound, Rat.mkRat_eq_div] at h0 h1 h2 ⊢
linarith
have hb := abs_le.mp hB
norm_num [forsetiBound, Rat.mkRat_eq_div] at hb ⊢
exact ⟨by linarith [hb.1], by linarith [hb.2]⟩
have forsetiInitial : forsetiStart 0 = Gimle.Asgard.Streams.Torus.Table.toTrig [((1, 0), (1/2)), ((-1, 0), (1/2)), ((1, 1), (1/2)), ((-1, -1), (1/2)), ((2, 1), (1/2)), ((-2, -1), (1/2))] := by
unfold forsetiStart forsetiTable
norm_num [Rat.mkRat_eq_div]
have forsetiViscosity : ((mkRat (0) 1) : ℚ) = 0 := by norm_num [Rat.mkRat_eq_div]
have forsetiCast0 : (((mkRat (1) 6480) : ℚ) : ℝ) = (1/6480) := by norm_num [Rat.mkRat_eq_div]
have forsetiCast1 : (((mkRat (-31) 10) : ℚ) : ℝ) = (-31/10) := by norm_num [Rat.mkRat_eq_div]
have forsetiCast2 : (((mkRat (31) 10) : ℚ) : ℝ) = (31/10) := by norm_num [Rat.mkRat_eq_div]
refine (fun (bridge : _ ↔ forsetiRoot) => bridge.mpr root) ?_
constructor
· intro claim
dsimp only at claim
unfold forsetiRoot forsetiPost
set_option linter.unusedSimpArgs false in simp only [forsetiInitial, forsetiViscosity, forsetiCast0, forsetiCast1, forsetiCast2]
exact claim
· intro lane
unfold forsetiRoot forsetiPost at lane
set_option linter.unusedSimpArgs false in simp only [forsetiInitial, forsetiViscosity, forsetiCast0, forsetiCast1, forsetiCast2] at lane
dsimp only
exact lane
end Decided_band_decided
L597–597Decisionband_tighter · stream · forsetiNever runL602–604
stream vorticity viscosity 0 interpretation trig-band basis ogf start modes [1, 0, 1/2], [-1, 0, 1/2], [1, 1, 1/2], [-1, -1, 1/2], [2, 1, 1/2], [-2, -1, 1/2] band u radius 1/6480 : u <= 3
Not run yet.