IndisputableMonolith.NavierStokes.EightTickDynamics
IndisputableMonolith/NavierStokes/EightTickDynamics.lean · 91 lines · 10 declarations
show as:
view math explainer →
1import Mathlib
2import IndisputableMonolith.Patterns
3
4/-!
5# Eight-Tick Discrete-Time Dynamics
6
7This module formalizes the temporal side of the Navier--Stokes lattice program.
8The main point is simple but important: once time is treated as discrete, an
98-step window becomes the natural stability unit, and certificates over one
10window propagate to all later windows by iteration.
11-/
12
13namespace IndisputableMonolith
14namespace NavierStokes
15namespace EightTickDynamics
16
17open Patterns
18
19noncomputable section
20
21/-- An abstract one-step discrete dynamics with a defect functional. -/
22structure OneStepDynamics (α : Type) where
23 step : α → α
24 defect : α → ℝ
25 defect_nonincreasing : ∀ s, defect (step s) ≤ defect s
26
27/-- The 8-step evolution operator. -/
28def step8 {α : Type} (dyn : OneStepDynamics α) : α → α :=
29 dyn.step^[8]
30
31/-- Iterating a one-step defect-nonincreasing map preserves defect monotonicity. -/
32theorem iterate_defect_nonincreasing {α : Type} (dyn : OneStepDynamics α) :
33 ∀ n s, dyn.defect ((dyn.step^[n]) s) ≤ dyn.defect s := by
34 intro n
35 induction n with
36 | zero =>
37 intro s
38 simp
39 | succ n ihn =>
40 intro s
41 rw [Function.iterate_succ_apply']
42 exact le_trans (dyn.defect_nonincreasing ((dyn.step^[n]) s)) (ihn s)
43
44/-- A single 8-tick window is defect-nonincreasing. -/
45theorem step8_defect_nonincreasing {α : Type} (dyn : OneStepDynamics α) :
46 ∀ s, dyn.defect (step8 dyn s) ≤ dyn.defect s := by
47 intro s
48 simpa [step8] using iterate_defect_nonincreasing dyn 8 s
49
50/-- The 8-step dynamics itself is a one-step defect-nonincreasing system. -/
51def windowDynamics {α : Type} (dyn : OneStepDynamics α) : OneStepDynamics α where
52 step := step8 dyn
53 defect := dyn.defect
54 defect_nonincreasing := step8_defect_nonincreasing dyn
55
56/-- Repeated 8-tick windows remain defect-nonincreasing. -/
57theorem window_certificate_extends {α : Type} (dyn : OneStepDynamics α) :
58 ∀ n s, dyn.defect (((step8 dyn)^[n]) s) ≤ dyn.defect s := by
59 simpa [windowDynamics] using iterate_defect_nonincreasing (windowDynamics dyn)
60
61/-- The pattern-level 8-tick cycle exists in D=3. -/
62theorem eight_tick_cycle_exists : ∃ w : CompleteCover 3, w.period = 8 :=
63 period_exactly_8
64
65/-- Any full cover of 3-bit patterns needs at least 8 ticks. -/
66theorem eight_tick_minimal {T : Nat}
67 (pass : Fin T → Pattern 3) (covers : Function.Surjective pass) :
68 8 ≤ T :=
69 eight_tick_min pass covers
70
71/-- A finite-window certificate for the 8-step operator. -/
72structure EightTickCertificate (α : Type) where
73 dyn : OneStepDynamics α
74 initial : α
75 one_window_bound :
76 dyn.defect (step8 dyn initial) ≤ dyn.defect initial
77
78/-- The one-window certificate propagates to every later 8-tick window. -/
79theorem eight_tick_certificate_propagates {α : Type} (cert : EightTickCertificate α) :
80 ∀ n, cert.dyn.defect (((step8 cert.dyn)^[n]) cert.initial) ≤
81 cert.dyn.defect cert.initial :=
82by
83 intro n
84 exact window_certificate_extends cert.dyn n cert.initial
85
86end
87
88end EightTickDynamics
89end NavierStokes
90end IndisputableMonolith
91