pith. machine review for the scientific record. sign in
theorem

one_step_factor_le_one

proved
show as:
view math explainer →
module
IndisputableMonolith.NavierStokes.DiscreteMaximumPrinciple
domain
NavierStokes
line
79 · github
papers citing
none yet

open explainer

Generate a durable explainer page for this declaration.

open lean source

IndisputableMonolith.NavierStokes.DiscreteMaximumPrinciple on GitHub at line 79.

browse module

All declarations in this module, on Recognition.

explainer page

Tracked in the explainer inventory; generation is lazy so crawlers do not trigger LLM jobs.

open explainer

depends on

used by

formal source

  76  le_trans data.advectionBound_le_gradMax hsubK
  77
  78/-- The one-step contraction factor under the sub-Kolmogorov condition. -/
  79theorem one_step_factor_le_one (data : OneStepData)
  80    (hsubK : data.subKolmogorov) :
  81    1 + data.dt * (data.advectionBound - data.viscousRate) ≤ 1 := by
  82  have h1 : data.advectionBound - data.viscousRate ≤ 0 :=
  83    sub_nonpos.mpr (advection_dominated_by_viscosity data hsubK)
  84  linarith [mul_nonpos_of_nonneg_of_nonpos data.dt_pos.le h1]
  85
  86/-- The gradient maximum is non-increasing under one NS time step when
  87the sub-Kolmogorov condition holds. -/
  88theorem gradient_nonincreasing (data : OneStepData)
  89    (hsubK : data.subKolmogorov)
  90    (newGradMax : ℝ)
  91    (h_update : newGradMax ≤
  92      data.gradMax * (1 + data.dt * (data.advectionBound - data.viscousRate))) :
  93    newGradMax ≤ data.gradMax := by
  94  have hfactor := one_step_factor_le_one data hsubK
  95  exact le_trans h_update (mul_le_of_le_one_right data.gradMax_nonneg hfactor)
  96
  97/-- The sub-Kolmogorov condition is preserved by one step. -/
  98theorem subK_preserved (data : OneStepData)
  99    (hsubK : data.subKolmogorov)
 100    (newGradMax : ℝ)
 101    (h_update : newGradMax ≤
 102      data.gradMax * (1 + data.dt * (data.advectionBound - data.viscousRate)))
 103    (newData : OneStepData)
 104    (h_same_params : newData.viscousRate = data.viscousRate)
 105    (h_new_grad : newData.gradMax = newGradMax) :
 106    newData.subKolmogorov := by
 107  unfold OneStepData.subKolmogorov
 108  rw [h_new_grad, h_same_params]
 109  exact le_trans (gradient_nonincreasing data hsubK newGradMax h_update) hsubK