pith. machine review for the scientific record. sign in

IndisputableMonolith.NavierStokes.EightTickDynamics

IndisputableMonolith/NavierStokes/EightTickDynamics.lean · 91 lines · 10 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   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

source mirrored from github.com/jonwashburn/shape-of-logic