pith. machine review for the scientific record. sign in

IndisputableMonolith.NavierStokes.StretchingPairs

IndisputableMonolith/NavierStokes/StretchingPairs.lean · 98 lines · 11 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import Mathlib
   2import IndisputableMonolith.NavierStokes.PhiLadderCutoff
   3import IndisputableMonolith.NavierStokes.DiscreteVorticity
   4
   5/-!
   6# RCL Pair Events for Discrete Stretching
   7
   8This module isolates the algebraic core behind the J-cost monotonicity program:
   9
  10- paired stretching/compression events,
  11- the exact Recognition Composition Law balance for such pairs,
  12- finite pair budgets indexed either by lists or by lattice sites.
  13
  14It is intentionally PDE-free so that concrete discrete Navier--Stokes operator
  15surfaces can reuse the same definitions without introducing abstraction cycles.
  16-/
  17
  18namespace IndisputableMonolith
  19namespace NavierStokes
  20namespace StretchingPairs
  21
  22open PhiLadderCutoff
  23open DiscreteVorticity
  24
  25noncomputable section
  26
  27/-- Cost change for a paired stretching event
  28`x -> lam*x` together with `x -> x/lam`. -/
  29def pairwiseStretchingChange (x lam : ℝ) : ℝ :=
  30  Jcost (x * lam) + Jcost (x / lam) - 2 * Jcost x
  31
  32/-- Exact Recognition Composition Law identity for the canonical cost. -/
  33theorem pairwise_RCL_balance {x lam : ℝ} (hx : 0 < x) (hlam : 0 < lam) :
  34    pairwiseStretchingChange x lam =
  35      2 * Jcost x * Jcost lam + 2 * Jcost lam := by
  36  unfold pairwiseStretchingChange Jcost
  37  have hxne : x ≠ 0 := ne_of_gt hx
  38  have hlamne : lam ≠ 0 := ne_of_gt hlam
  39  field_simp [hxne, hlamne]
  40  ring
  41
  42/-- Equivalent factorized form of the paired stretching balance. -/
  43theorem pairwise_RCL_balance_factored {x lam : ℝ} (hx : 0 < x) (hlam : 0 < lam) :
  44    pairwiseStretchingChange x lam =
  45      2 * (Jcost x + 1) * Jcost lam := by
  46  rw [pairwise_RCL_balance hx hlam]
  47  ring
  48
  49/-- Paired stretching cannot decrease J-cost: it is nonnegative by RCL and
  50nonnegativity of `Jcost`. -/
  51theorem pairwiseStretching_nonneg {x lam : ℝ} (hx : 0 < x) (hlam : 0 < lam) :
  52    0 ≤ pairwiseStretchingChange x lam := by
  53  rw [pairwise_RCL_balance_factored hx hlam]
  54  have hxJ : 0 ≤ Jcost x := Jcost_nonneg hx
  55  have hlamJ : 0 ≤ Jcost lam := Jcost_nonneg hlam
  56  nlinarith
  57
  58/-- A concrete paired stretching event. -/
  59structure PairEvent where
  60  amplitude : ℝ
  61  stretchFactor : ℝ
  62  amplitude_pos : 0 < amplitude
  63  stretchFactor_pos : 0 < stretchFactor
  64
  65/-- The J-cost budget contributed by one paired stretching event. -/
  66def pairEventBudget (ev : PairEvent) : ℝ :=
  67  pairwiseStretchingChange ev.amplitude ev.stretchFactor
  68
  69theorem pairEventBudget_nonneg (ev : PairEvent) : 0 ≤ pairEventBudget ev :=
  70  pairwiseStretching_nonneg ev.amplitude_pos ev.stretchFactor_pos
  71
  72/-- Total RCL pair budget carried by a finite family of stretching events. -/
  73def totalPairBudget (events : List PairEvent) : ℝ :=
  74  (events.map pairEventBudget).sum
  75
  76theorem totalPairBudget_nonneg (events : List PairEvent) : 0 ≤ totalPairBudget events := by
  77  induction events with
  78  | nil =>
  79      simp [totalPairBudget]
  80  | cons ev events ih =>
  81      simp [totalPairBudget]
  82      exact add_nonneg (pairEventBudget_nonneg ev) ih
  83
  84/-- Indexed pair budget over a finite lattice window. -/
  85def indexedPairBudget {siteCount : ℕ} (event : Fin siteCount → PairEvent) : ℝ :=
  86  total (fun i => pairEventBudget (event i))
  87
  88theorem indexedPairBudget_nonneg {siteCount : ℕ} (event : Fin siteCount → PairEvent) :
  89    0 ≤ indexedPairBudget event := by
  90  unfold indexedPairBudget total
  91  exact Finset.sum_nonneg (fun i _ => pairEventBudget_nonneg (event i))
  92
  93end
  94
  95end StretchingPairs
  96end NavierStokes
  97end IndisputableMonolith
  98

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