Documentation

LeanPool.HighContrastHomogenization.Entry.Multiscale.Global.RunSteps

High-contrast homogenization: Entry.Multiscale.Global.RunSteps #

Imported from the Apache-2.0 HighContrastHomogenization development at commit 7a13dbcd8d6609264a713373f5c69ceeac870472.

The fixed-geometry steps of the run #

The three fixed-geometry clauses of SelectionData.Selects that keep the metric and the retained generation (𝔪, k) and advance only n: R3a (Alternative 1, service), R3e (Alternative 3, synchronized) and R3f (Alternative 3, long). Each turns its propagation guard into the potential decrease of the matching one-grid estimate and transfers that decrease, through the determinant reserve, into a drop of c in the run gauge, carrying the run-state invariants to the successor state. These are the continuing moves of the run whose stopping output is Proposition p.global.selection, and through that proposition they enter the assembly of Theorem t.polynomial.entry.

theorem HCPolySupport.HighContrast.Multiscale.run_step_service {d : ℕ} (hd : 2 ≤ d) (γ : ℝ) (hγ : γ ∈ Set.Ico 0 1) (P : MeasureTheory.Measure (CoeffSpace d)) (E : BlockMat d) (Ψ : ℝ → ℝ) (K : ℝ) (Src : CoeffSpace d → ℝ) (hP : MeasureTheory.IsProbabilityMeasure P) (hst : IsStationaryLaw P) (hur : IsUnitRangeLaw P) (hce : CoarseEllipticityDagger P γ E Ψ K Src) (S : SelectionData) (ε σ B : ℝ) (hε : ε ∈ Set.Ioc 0 S.eps0) (hσ : σ ∈ Set.Ioc 0 ε) (H jStar : ℕ) (hjStar : 2 * d ≤ 3 ^ jStar) (n₀ : ℤ) (a c C w : ℝ) (hC : 1 ≤ C) (ha : ↑d ≤ a) (hw : w = a * C / ↑d) (hc : c = 1 / 2 * S.eta ε σ * Real.log (16 / 9)) (st : RunState P γ S ε σ B E H jStar n₀) (hlt : st.k < st.n) (hbig : profile P γ (Geometry.explicitRoundedGrid jStar st.m) jStar st.k st.n + determinantDrift P γ (Geometry.explicitRoundedGrid jStar st.m) jStar st.n > S.eta ε σ) (hprop : profile P γ (Geometry.explicitRoundedGrid jStar st.m) jStar st.k (st.n + ↑S.h) + determinantDrift P γ (Geometry.explicitRoundedGrid jStar st.m) jStar (st.n + ↑S.h) ≤ 1 / 4 * (profile P γ (Geometry.explicitRoundedGrid jStar st.m) jStar st.k st.n + determinantDrift P γ (Geometry.explicitRoundedGrid jStar st.m) jStar st.n) + C * synchCharge P (Geometry.explicitRoundedGrid jStar st.m) (↑S.h) st.n) (hone' : st.k = st.n + ↑S.h → profile P γ (Geometry.explicitRoundedGrid jStar st.m) jStar (st.n + ↑S.h) (st.n + ↑S.h) + determinantDrift P γ (Geometry.explicitRoundedGrid jStar st.m) jStar (st.n + ↑S.h) ≤ 1) (hgap' : st.k < st.n + ↑S.h → st.k + ↑S.h ≤ st.n + ↑S.h) :
∃ (st' : RunState P γ S ε σ B E H jStar n₀), st'.m = st.m ∧ st'.k = st.k ∧ st'.n = st.n + ↑S.h ∧ st'.i = st.i + 1 ∧ runGauge P γ jStar (S.eta ε σ) a w S.h st'.m st'.k st'.n - runGauge P γ jStar (S.eta ε σ) a w S.h st.m st.k st.n ≤ -c

(R3a) Alternative 1, service step (SelectionData.lean). The guard supplies x > η and the quarter propagation x'@(n+h) ≤ x/4 + C Δ̂; potential_step_sub_le_of_quarter_bound (Run.lean) converts it into the potential decrease with the charge a C / d · Δ̂_h(n), and run_reserve_sync pays that charge out of the reserve, so the transferred gauge drops by c. The nonnegativities hx' and hΔ are tree facts (Annealed.logDetLoss_nonneg, profile_add_determinantDrift_nonneg, logDetLoss_le_synchronizedLogDetLoss). The new state keeps (m, k), so hecc, hm, hpr transport; hone/hgap are the tail clauses hone'/hgap'; hgen uses S.h ≤ 2L+H+h.

theorem HCPolySupport.HighContrast.Multiscale.run_step_sync {d : ℕ} (hd : 2 ≤ d) (γ : ℝ) (hγ : γ ∈ Set.Ico 0 1) (P : MeasureTheory.Measure (CoeffSpace d)) (E : BlockMat d) (Ψ : ℝ → ℝ) (K : ℝ) (Src : CoeffSpace d → ℝ) (hP : MeasureTheory.IsProbabilityMeasure P) (hst : IsStationaryLaw P) (hur : IsUnitRangeLaw P) (hce : CoarseEllipticityDagger P γ E Ψ K Src) (S : SelectionData) (ε σ B : ℝ) (hε : ε ∈ Set.Ioc 0 S.eps0) (hσ : σ ∈ Set.Ioc 0 ε) (H jStar : ℕ) (hjStar : 2 * d ≤ 3 ^ jStar) (n₀ : ℤ) (hh : 2 * bigQ d γ ≤ S.h) (Csrc : ℝ) (hsrc : ⌈Csrc * Real.logb 3 (2 * K)⌉ ≤ ↑jStar) (Cone : ℝ) (hCone : 0 < Cone) (hprop1 : ∀ (metric : Mat d), Matrix.PosDef metric → ∀ (n m : ℤ), ↑jStar ≤ n → n ≤ m → n + ↑S.h ≤ m → profile P γ (Geometry.explicitRoundedGrid jStar metric) jStar n (m + ↑S.h) + determinantDrift P γ (Geometry.explicitRoundedGrid jStar metric) jStar (m + ↑S.h) ≤ 1 / 8 * Real.exp (↑(bigQ d γ) * synchCharge P (Geometry.explicitRoundedGrid jStar metric) (↑S.h) m) * (profile P γ (Geometry.explicitRoundedGrid jStar metric) jStar n m + determinantDrift P γ (Geometry.explicitRoundedGrid jStar metric) jStar m) + Cone * (Real.exp (↑(bigQ d γ) * synchCharge P (Geometry.explicitRoundedGrid jStar metric) (↑S.h) m) - 1)) (a c C w : ℝ) (hC : 1 ≤ C) (hCone' : Cone ≤ C) (ha : ↑d ≤ a) (hw : w = a * C / ↑d) (hweight : 4 * ↑(bigQ d γ) * max 1 C ≤ a * C / ↑d) (hc : c = 1 / 2 * S.eta ε σ * Real.log (16 / 9)) (st : RunState P γ S ε σ B E H jStar n₀) (hlt : st.k < st.n) (hbig : profile P γ (Geometry.explicitRoundedGrid jStar st.m) jStar st.k st.n + determinantDrift P γ (Geometry.explicitRoundedGrid jStar st.m) jStar st.n > S.eta ε σ) (hobst : (↑d)⁻¹ * synchCharge P (Geometry.explicitRoundedGrid jStar st.m) (↑S.h) st.n > σ) (hone' : st.k = st.n + ↑S.h → profile P γ (Geometry.explicitRoundedGrid jStar st.m) jStar (st.n + ↑S.h) (st.n + ↑S.h) + determinantDrift P γ (Geometry.explicitRoundedGrid jStar st.m) jStar (st.n + ↑S.h) ≤ 1) (hgap' : st.k < st.n + ↑S.h → st.k + ↑S.h ≤ st.n + ↑S.h) :
∃ (st' : RunState P γ S ε σ B E H jStar n₀), st'.m = st.m ∧ st'.k = st.k ∧ st'.n = st.n + ↑S.h ∧ st'.i = st.i + 1 ∧ runGauge P γ jStar (S.eta ε σ) a w S.h st'.m st'.k st'.n - runGauge P γ jStar (S.eta ε σ) a w S.h st.m st.k st.n ≤ -c

(R3e) Alternative 3, synchronized (SelectionData.lean). Selects supplies only the three guards and no propagation clause; the propagation is conjunct 6 of Entry.fixed_geometry_one_grid_propagation_full instantiated at h := S.h, which needs hh : 2 * bigQ d γ ≤ S.h (conjunct C1 of Selects), L := 1, n := st.k, m := st.n, with st.k + S.h ≤ st.n from st.hgap and the source threshold ⌈Csrc * Real.logb 3 (2 * K)⌉ ≤ (jStar : ℤ). Its shape 1/8·e^{QΔ̂}·x + C(e^{QΔ̂} − 1) is exactly potential_step_sub_le_of_exp_bound.hprop, so the target here is potential_step_sub_le_of_exp_bound (Containment.lean), not the quarter variant. The charge aC/d·Δ̂ is paid by run_reserve_sync. The state transition is as in R3a.

theorem HCPolySupport.HighContrast.Multiscale.run_step_long {d : ℕ} (hd : 2 ≤ d) (γ : ℝ) (hγ : γ ∈ Set.Ico 0 1) (P : MeasureTheory.Measure (CoeffSpace d)) (E : BlockMat d) (Ψ : ℝ → ℝ) (K : ℝ) (Src : CoeffSpace d → ℝ) (hP : MeasureTheory.IsProbabilityMeasure P) (hst : IsStationaryLaw P) (hur : IsUnitRangeLaw P) (hce : CoarseEllipticityDagger P γ E Ψ K Src) (S : SelectionData) (ε σ B : ℝ) (hε : ε ∈ Set.Ioc 0 S.eps0) (hσ : σ ∈ Set.Ioc 0 ε) (H jStar : ℕ) (hjStar : 2 * d ≤ 3 ^ jStar) (n₀ : ℤ) (hh : 2 * bigQ d γ ≤ S.h) (hL1 : 1 ≤ S.L ε σ) (a c C w : ℝ) (hC : 1 ≤ C) (ha1 : 1 ≤ a) (ha : ↑d ≤ a) (hw : w = a * C / ↑d) (hc : c = 1 / 2 * S.eta ε σ * Real.log (16 / 9)) (haQ : 4 * ↑(bigQ d γ) * max 1 C ≤ a * C / ↑d) (hweight : 4 * (Real.log (1 + 2 * C * ↑(S.L ε σ)) + Real.log (1 + C * ↑H) + c) ≤ a * C * ε * σ) (hlogH : 0 ≤ Real.log (1 + C * ↑H)) (st : RunState P γ S ε σ B E H jStar n₀) (hlt : st.k < st.n) (hsmall : profile P γ (Geometry.explicitRoundedGrid jStar st.m) jStar st.k st.n + determinantDrift P γ (Geometry.explicitRoundedGrid jStar st.m) jStar st.n ≤ S.eta ε σ) (hobst : (↑d)⁻¹ * detIncrement P (Geometry.explicitRoundedGrid jStar st.m) st.n (st.n + 2 * ↑(S.L ε σ)) > ε * σ) (hspan : profile P γ (Geometry.explicitRoundedGrid jStar st.m) jStar st.k (st.n + 2 * ↑(S.L ε σ)) + determinantDrift P γ (Geometry.explicitRoundedGrid jStar st.m) jStar (st.n + 2 * ↑(S.L ε σ)) ≤ C * (2 * ↑(S.L ε σ)) * (profile P γ (Geometry.explicitRoundedGrid jStar st.m) jStar st.k st.n + determinantDrift P γ (Geometry.explicitRoundedGrid jStar st.m) jStar st.n + (Real.exp (↑(bigQ d γ) * detIncrement P (Geometry.explicitRoundedGrid jStar st.m) st.n (st.n + 2 * ↑(S.L ε σ))) - 1))) (hone' : st.k = st.n + 2 * ↑(S.L ε σ) → profile P γ (Geometry.explicitRoundedGrid jStar st.m) jStar (st.n + 2 * ↑(S.L ε σ)) (st.n + 2 * ↑(S.L ε σ)) + determinantDrift P γ (Geometry.explicitRoundedGrid jStar st.m) jStar (st.n + 2 * ↑(S.L ε σ)) ≤ 1) (hgap' : st.k < st.n + 2 * ↑(S.L ε σ) → st.k + ↑S.h ≤ st.n + 2 * ↑(S.L ε σ)) :
∃ (st' : RunState P γ S ε σ B E H jStar n₀), st'.m = st.m ∧ st'.k = st.k ∧ st'.n = st.n + 2 * ↑(S.L ε σ) ∧ st'.i = st.i + 1 ∧ runGauge P γ jStar (S.eta ε σ) a w S.h st'.m st'.k st'.n - runGauge P γ jStar (S.eta ε σ) a w S.h st.m st.k st.n ≤ -c

(R3f) Alternative 3, long (SelectionData.lean). Target: long_step_decrease (Containment.lean). hΔ is the guard through det_bridge_gt; hx1 : x ≤ 1 is the guard x ≤ S.eta ε σ through selectionData_eta_le_one; hL : 1 ≤ L is conjunct C2a of Selects, the binder hL1; hw, ha, hlogH are weight_choice_ge_d; hspan is conjunct 3 (or 8) of fixed_geometry_one_grid_propagation_full at h := S.h — which needs hh : 2 * bigQ d γ ≤ S.h (conjunct C1 of Selects: the alternatives only give k + S.h ≤ n, while the supplier's guard is k + 2 * bigQ d γ ≤ n) — with L := 2 * (S.L ε σ : ℤ). The charge aC/d·Δ_{n,n+2L} is paid by run_reserve_advance. The state keeps (m, k) and advances n by 2L. The binder haQ : 4 * bigQ d γ * max 1 C ≤ a * C / d is the third conjunct of weight_choice_ge_d.