Skip to content

Commit 7673e6e

Browse files
phasetrclaude
andcommitted
Build tight (diagonal-free) per-stage increment chain
The weak derivBound carries a diagonal term ⟨σ_rσ_s⟩⟨σ_kσ_l⟩ whose shell sum is ⟨σ_rσ_s⟩·O(|∂box_k|), which diverges with shell size and cannot prove convergence of c_k. Re-derive the entire per-stage increment chain with the tight ball-boundary Simon-Lieb bound derivBoundTight (cross products only, via cor_4_3_3_scaled): - Tight.lean: scaledCorrelation_one_sub_zero_le_derivBoundTight, correlation_sub_deleteEdges_le_derivBoundTight, derivBoundTight_le_of_correlation_le. - PerStageIncrement.lean: correlation_pair_sub_inducedGraph_le_derivBoundTight, correlation_pair_two_box_le_derivBoundTight. - CubicPerStageIncrement.lean: correlationAlongExhaustion_cubic_succ_sub_le_derivBoundTight. - CubicShellInfiniteVolumeBound.lean: derivBoundTight_inducedGraph_cubic_le_infiniteVolume_sum. Net diagonal-free bound: c_{k+1} − c_k ≤ β·J·∑_{⟨a,b⟩∈shell}[g{r,a}g{s,b} + g{r,b}g{s,a}] (g = infinite-volume correlation), the summable form on which Phase B spatial decay yields a geometric rate. Each tight lemma mirrors its weak counterpart (#2972/#2974/#2989/#2992/ #2993/#2994/#2995); the component-factorization and observable-matching infrastructure is bound-independent and reused unchanged. Docs and proof-guide synced. Part of #2965 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent cee39bd commit 7673e6e

6 files changed

Lines changed: 290 additions & 0 deletions

File tree

IsingModel/AmbientLatticeSum/PerStageIncrement.lean

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import IsingModel.BallBoundarySimonLieb.WeakBound
2+
import IsingModel.BallBoundarySimonLieb.Tight
23
import IsingModel.AmbientLatticeSum.InducedUnion
34

45
/-!
@@ -241,4 +242,95 @@ theorem correlation_pair_two_box_le_derivBound (G : SimpleGraph V) {T₁ T₂ :
241242
correlation_inducedGraph_nested_finset G hsub p {⟨r, hr₁⟩, ⟨s, hs₁⟩}] at h1
242243
exact h1
243244

245+
set_option linter.unusedFintypeInType false in
246+
/-- **Tight numeric per-stage correlation increment**: tight analogue of
247+
`correlation_pair_sub_inducedGraph_le_derivBound` bounding the same single-box
248+
increment by the *tight* `derivBoundTight` (cross products only, no diagonal
249+
`⟨σ_r σ_s⟩·⟨σ_k σ_l⟩` term). Composes `correlation_sub_deleteEdges_le_derivBoundTight`
250+
with `correlation_deleteEdges_filter_pair_eq`. Dropping the diagonal term is what
251+
makes the per-stage exhaustion increment summable under spatial decay (Issue #2965,
252+
Phase A→B). -/
253+
theorem correlation_pair_sub_inducedGraph_le_derivBoundTight (G : SimpleGraph V)
254+
[Fintype G.edgeSet] (S : Finset V) (p : IsingParams ℝ) (hf : Ferromagnetic p)
255+
(hh : p.h = 0) (r s : V) (hr : r ∈ S) (hs : s ∈ S) (hrs : r ≠ s)
256+
(hsep : ∀ e ∈ G.edgeFinset.filter (straddlePred S),
257+
¬ Sym2.Mem r e ∧ ¬ Sym2.Mem s e)
258+
[Fintype (G.deleteEdges ↑(G.edgeFinset.filter (straddlePred S))).edgeSet]
259+
[Fintype (G.deleteEdges {e : Sym2 V | straddlePred S e}).edgeSet]
260+
[Fintype (inducedGraph (G.deleteEdges {e : Sym2 V | straddlePred S e}) S).edgeSet]
261+
[Fintype (inducedGraph (G.deleteEdges {e : Sym2 V | straddlePred S e}) Sᶜ).edgeSet]
262+
[Fintype (((inducedGraph (G.deleteEdges {e : Sym2 V | straddlePred S e}) S).sum
263+
(inducedGraph (G.deleteEdges {e : Sym2 V | straddlePred S e}) Sᶜ)).map
264+
(Equiv.Finset.union S Sᶜ disjoint_compl_right).toEmbedding).edgeSet]
265+
[Fintype (inducedGraph (G.deleteEdges {e : Sym2 V | straddlePred S e}) (S ∪ Sᶜ)).edgeSet]
266+
[Fintype ((G.deleteEdges {e : Sym2 V | straddlePred S e}).induce
267+
(↑(S ∪ Sᶜ) : Set V)).edgeSet]
268+
[Fintype (inducedGraph G S).edgeSet] :
269+
correlation G p {r, s}
270+
- correlation (inducedGraph G S) p {⟨r, hr⟩, ⟨s, hs⟩}
271+
≤ derivBoundTight G (G.edgeFinset.filter (straddlePred S)) p r s := by
272+
have hnd : ∀ e ∈ G.edgeFinset.filter (straddlePred S), ¬ e.IsDiag := fun e he =>
273+
G.not_isDiag_of_mem_edgeFinset (Finset.mem_of_mem_filter e he)
274+
have h1 := correlation_sub_deleteEdges_le_derivBoundTight G
275+
(G.edgeFinset.filter (straddlePred S)) hnd (Finset.filter_subset _ _) p hf hh r s hrs hsep
276+
rwa [correlation_deleteEdges_filter_pair_eq G S p hr hs] at h1
277+
278+
set_option linter.unusedFintypeInType false in
279+
omit [Fintype V] in
280+
/-- **Tight two-box per-stage correlation increment** (Issue #2965, Phase A→B):
281+
tight analogue of `correlation_pair_two_box_le_derivBound`, bounding the nested-box
282+
pair correlation increment by the *tight* `derivBoundTight` over the cut edges of
283+
the `T₁`-slice. Composes the tight single-box increment
284+
`correlation_pair_sub_inducedGraph_le_derivBoundTight` with the double-induce
285+
identification `correlation_inducedGraph_nested_finset`. The cross-product-only
286+
`derivBoundTight` is what makes the cubic per-stage increment summable. -/
287+
theorem correlation_pair_two_box_le_derivBoundTight (G : SimpleGraph V) {T₁ T₂ : Finset V}
288+
(hsub : T₁ ⊆ T₂) (p : IsingParams ℝ) (hf : Ferromagnetic p) (hh : p.h = 0)
289+
{r s : V} (hr₁ : r ∈ T₁) (hs₁ : s ∈ T₁) (hrs : r ≠ s)
290+
[Fintype (inducedGraph G T₂).edgeSet]
291+
(hsep : ∀ e ∈ (inducedGraph G T₂).edgeFinset.filter
292+
(straddlePred (T₁.subtype (· ∈ T₂))),
293+
¬ Sym2.Mem (⟨r, hsub hr₁⟩ : (↑T₂ : Type _)) e ∧
294+
¬ Sym2.Mem (⟨s, hsub hs₁⟩ : (↑T₂ : Type _)) e)
295+
[Fintype ((inducedGraph G T₂).deleteEdges
296+
↑((inducedGraph G T₂).edgeFinset.filter
297+
(straddlePred (T₁.subtype (· ∈ T₂))))).edgeSet]
298+
[Fintype ((inducedGraph G T₂).deleteEdges
299+
{e : Sym2 (↑T₂ : Type _) | straddlePred (T₁.subtype (· ∈ T₂)) e}).edgeSet]
300+
[Fintype (inducedGraph ((inducedGraph G T₂).deleteEdges
301+
{e : Sym2 (↑T₂ : Type _) | straddlePred (T₁.subtype (· ∈ T₂)) e})
302+
(T₁.subtype (· ∈ T₂))).edgeSet]
303+
[Fintype (inducedGraph ((inducedGraph G T₂).deleteEdges
304+
{e : Sym2 (↑T₂ : Type _) | straddlePred (T₁.subtype (· ∈ T₂)) e})
305+
(T₁.subtype (· ∈ T₂))ᶜ).edgeSet]
306+
[Fintype (((inducedGraph ((inducedGraph G T₂).deleteEdges
307+
{e : Sym2 (↑T₂ : Type _) | straddlePred (T₁.subtype (· ∈ T₂)) e})
308+
(T₁.subtype (· ∈ T₂))).sum
309+
(inducedGraph ((inducedGraph G T₂).deleteEdges
310+
{e : Sym2 (↑T₂ : Type _) | straddlePred (T₁.subtype (· ∈ T₂)) e})
311+
(T₁.subtype (· ∈ T₂))ᶜ)).map
312+
(Equiv.Finset.union (T₁.subtype (· ∈ T₂)) (T₁.subtype (· ∈ T₂))ᶜ
313+
disjoint_compl_right).toEmbedding).edgeSet]
314+
[Fintype (inducedGraph ((inducedGraph G T₂).deleteEdges
315+
{e : Sym2 (↑T₂ : Type _) | straddlePred (T₁.subtype (· ∈ T₂)) e})
316+
((T₁.subtype (· ∈ T₂)) ∪ (T₁.subtype (· ∈ T₂))ᶜ)).edgeSet]
317+
[Fintype (((inducedGraph G T₂).deleteEdges
318+
{e : Sym2 (↑T₂ : Type _) | straddlePred (T₁.subtype (· ∈ T₂)) e}).induce
319+
(↑((T₁.subtype (· ∈ T₂)) ∪ (T₁.subtype (· ∈ T₂))ᶜ) : Set (↑T₂ : Type _))).edgeSet]
320+
[Fintype (inducedGraph (inducedGraph G T₂) (T₁.subtype (· ∈ T₂))).edgeSet]
321+
[Fintype (inducedGraph G T₁).edgeSet]
322+
[Fintype ((inducedGraph G T₁).map (nestedFinsetEquiv hsub).symm.toEmbedding).edgeSet] :
323+
correlation (inducedGraph G T₂) p {⟨r, hsub hr₁⟩, ⟨s, hsub hs₁⟩}
324+
- correlation (inducedGraph G T₁) p {⟨r, hr₁⟩, ⟨s, hs₁⟩}
325+
≤ derivBoundTight (inducedGraph G T₂) ((inducedGraph G T₂).edgeFinset.filter
326+
(straddlePred (T₁.subtype (· ∈ T₂)))) p ⟨r, hsub hr₁⟩ ⟨s, hsub hs₁⟩ := by
327+
have hrs' : (⟨r, hsub hr₁⟩ : (↑T₂ : Type _)) ≠ ⟨s, hsub hs₁⟩ := by
328+
simpa [Subtype.ext_iff] using hrs
329+
have h1 := correlation_pair_sub_inducedGraph_le_derivBoundTight (inducedGraph G T₂)
330+
(T₁.subtype (· ∈ T₂)) p hf hh ⟨r, hsub hr₁⟩ ⟨s, hsub hs₁⟩
331+
(Finset.mem_subtype.mpr hr₁) (Finset.mem_subtype.mpr hs₁) hrs' hsep
332+
rw [← pair_map_nestedFinsetEquiv_symm hsub hr₁ hs₁,
333+
correlation_inducedGraph_nested_finset G hsub p {⟨r, hr₁⟩, ⟨s, hs₁⟩}] at h1
334+
exact h1
335+
244336
end IsingModel

IsingModel/BallBoundarySimonLieb/Tight.lean

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,4 +245,111 @@ theorem ball_boundary_simon_lieb_tight (G : SimpleGraph ι) [Fintype G.edgeSet]
245245
Real.norm_of_nonneg (derivBoundTight_nonneg G E₀ p hf r s)] at hmvt
246246
linarith
247247

248+
/-- **Tight finite-volume coupling difference bound**: the `s = 1` minus `s = 0`
249+
scaled-correlation difference is at most the *tight* ball-boundary derivative
250+
bound `derivBoundTight` (no extra `⟨σ_r σ_s⟩·⟨σ_k σ_l⟩` diagonal term). This is the
251+
tight analogue of `scaledCorrelation_one_sub_zero_le_derivBound`
252+
(`WeakBound.lean`); same mean-value argument, but the per-`t` derivative is bounded
253+
by `derivBoundTight` via `scaledCorrelation_pair_deriv_le_derivBoundTight` (which
254+
drops the diagonal term using `cor_4_3_3_scaled`). Dropping the diagonal term is
255+
what makes the resulting per-stage increment *summable* over an exhaustion's cut
256+
edges (Issue #2965, Phase A→B). -/
257+
theorem scaledCorrelation_one_sub_zero_le_derivBoundTight (G : SimpleGraph ι)
258+
[Fintype G.edgeSet] (E₀ : Finset (Sym2 ι)) (hE₀_nd : ∀ e ∈ E₀, ¬e.IsDiag)
259+
(hE₀_sub : E₀ ⊆ G.edgeFinset)
260+
(p : IsingParams ℝ) (hf : Ferromagnetic p) (hh : p.h = 0)
261+
(r s : ι) (hrs : r ≠ s)
262+
(hE₀_sep : ∀ e ∈ E₀, ¬ Sym2.Mem r e ∧ ¬ Sym2.Mem s e) :
263+
scaledCorrelation G E₀ p 1 {r, s} - scaledCorrelation G E₀ p 0 {r, s}
264+
≤ derivBoundTight G E₀ p r s := by
265+
have hderiv : ∀ t ∈ Set.Icc (0 : ℝ) 1,
266+
HasDerivWithinAt (fun s' => scaledCorrelation G E₀ p s' {r, s})
267+
(p.β * p.J * ∑ e ∈ E₀,
268+
Sym2.lift ⟨fun u v =>
269+
scaledCorrelation G E₀ p t (symmDiff {r, s} {u, v}) -
270+
scaledCorrelation G E₀ p t {r, s} *
271+
scaledCorrelation G E₀ p t {u, v},
272+
fun u v => by simp [Finset.pair_comm v u]⟩ e)
273+
(Set.Icc 0 1) t :=
274+
fun t _ => (hasDerivAt_scaledCorrelation G E₀ hE₀_nd p t {r, s}).hasDerivWithinAt
275+
have hbound : ∀ t ∈ Set.Ico (0 : ℝ) 1,
276+
‖p.β * p.J * ∑ e ∈ E₀,
277+
Sym2.lift ⟨fun u v =>
278+
scaledCorrelation G E₀ p t (symmDiff {r, s} {u, v}) -
279+
scaledCorrelation G E₀ p t {r, s} *
280+
scaledCorrelation G E₀ p t {u, v},
281+
fun u v => by simp [Finset.pair_comm v u]⟩ e‖ ≤
282+
‖derivBoundTight G E₀ p r s‖ := by
283+
intro t ht
284+
rw [Real.norm_of_nonneg
285+
(scaledCorrelation_deriv_nonneg' G E₀ hE₀_nd hE₀_sub p hf t ht.1 {r, s}),
286+
Real.norm_of_nonneg (derivBoundTight_nonneg G E₀ p hf r s)]
287+
exact scaledCorrelation_pair_deriv_le_derivBoundTight G E₀ hE₀_nd hE₀_sub p hf hh r s hrs
288+
hE₀_sep t ht.1 ht.2.le
289+
have hmvt := norm_image_sub_le_of_norm_deriv_le_segment_01' hderiv hbound
290+
rw [Real.norm_of_nonneg (derivBoundTight_nonneg G E₀ p hf r s)] at hmvt
291+
calc scaledCorrelation G E₀ p 1 {r, s} - scaledCorrelation G E₀ p 0 {r, s}
292+
≤ |scaledCorrelation G E₀ p 1 {r, s} - scaledCorrelation G E₀ p 0 {r, s}| :=
293+
le_abs_self _
294+
_ = ‖scaledCorrelation G E₀ p 1 {r, s} - scaledCorrelation G E₀ p 0 {r, s}‖ :=
295+
(Real.norm_eq_abs _).symm
296+
_ ≤ derivBoundTight G E₀ p r s := hmvt
297+
298+
/-- **Tight bond-deletion correlation increment**: adding the bond set `E₀`
299+
(with `r, s` on no `E₀`-edge) raises the pair correlation `⟨σ_r σ_s⟩` by at most the
300+
*tight* ball-boundary derivative bound `derivBoundTight` (cross terms only):
301+
302+
`correlation G p {r,s} − correlation (G.deleteEdges ↑E₀) p {r,s}
303+
≤ derivBoundTight G E₀ p r s`.
304+
305+
Tight analogue of `correlation_sub_deleteEdges_le_derivBound` (`WeakBound.lean`):
306+
combines the tight mean-value difference bound with the `s = 0` bond-deleted
307+
identification `scaledCorrelation_zero`. Because `derivBoundTight` carries only the
308+
cross products `⟨σ_r σ_k⟩·⟨σ_s σ_l⟩ + ⟨σ_r σ_l⟩·⟨σ_s σ_k⟩` (no diagonal
309+
`⟨σ_r σ_s⟩·⟨σ_k σ_l⟩` term), the resulting per-stage exhaustion increment is
310+
summable under spatial decay — the form needed for the volume-convergence rate
311+
(Issue #2965, Phase A→B). -/
312+
theorem correlation_sub_deleteEdges_le_derivBoundTight (G : SimpleGraph ι)
313+
[Fintype G.edgeSet] (E₀ : Finset (Sym2 ι)) (hE₀_nd : ∀ e ∈ E₀, ¬e.IsDiag)
314+
(hE₀_sub : E₀ ⊆ G.edgeFinset) (p : IsingParams ℝ) (hf : Ferromagnetic p)
315+
(hh : p.h = 0) (r s : ι) (hrs : r ≠ s)
316+
(hE₀_sep : ∀ e ∈ E₀, ¬ Sym2.Mem r e ∧ ¬ Sym2.Mem s e)
317+
[Fintype (G.deleteEdges ↑E₀).edgeSet] :
318+
correlation G p {r, s} - correlation (G.deleteEdges ↑E₀) p {r, s}
319+
≤ derivBoundTight G E₀ p r s := by
320+
have h := scaledCorrelation_one_sub_zero_le_derivBoundTight G E₀ hE₀_nd hE₀_sub p hf hh
321+
r s hrs hE₀_sep
322+
rwa [scaledCorrelation_one, scaledCorrelation_zero G E₀ hE₀_sub p {r, s}] at h
323+
324+
/-- **`derivBoundTight` monotonicity under correlation upper bounds**: tight
325+
analogue of `derivBound_le_of_correlation_le`. If a nonnegative
326+
`c : ι → ι → ℝ` dominates every two-point correlation, then `derivBoundTight` is
327+
dominated by the same edge sum (cross products only) with each correlation replaced
328+
by `c`. Each summand is a sum of two products of nonnegative correlations
329+
(`gks_first`), monotone under the pointwise bound (no symmetry of `c` is needed:
330+
the cross-product summand is symmetric in `k, l` by `+`-commutativity alone).
331+
Separates the boundary-sum decay step (Issue #2965, Phase A→B): one may substitute
332+
`c a b =` an infinite-volume decay bound without re-touching the `derivBoundTight`
333+
algebra. -/
334+
theorem derivBoundTight_le_of_correlation_le (G : SimpleGraph ι) [Fintype G.edgeSet]
335+
(E₀ : Finset (Sym2 ι)) (p : IsingParams ℝ) (hf : Ferromagnetic p)
336+
(r s : ι) (c : ι → ι → ℝ)
337+
(hc_nonneg : ∀ a b, 0 ≤ c a b)
338+
(hcorr : ∀ a b, correlation G p {a, b} ≤ c a b) :
339+
derivBoundTight G E₀ p r s
340+
≤ p.β * p.J * ∑ e ∈ E₀, Sym2.lift ⟨fun k l =>
341+
c r k * c s l + c r l * c s k,
342+
fun k l => by
343+
change c r k * c s l + c r l * c s k = c r l * c s k + c r k * c s l
344+
ring⟩ e := by
345+
unfold derivBoundTight
346+
apply mul_le_mul_of_nonneg_left _ (mul_nonneg hf.hβ.le hf.hJ)
347+
apply Finset.sum_le_sum
348+
intro e _he
349+
obtain ⟨⟨k, l⟩, rfl⟩ := Quot.exists_rep e
350+
simp only [Sym2.lift_mk]
351+
refine add_le_add ?_ ?_
352+
· exact mul_le_mul (hcorr r k) (hcorr s l) (gks_first G p hf _) (hc_nonneg r k)
353+
· exact mul_le_mul (hcorr r l) (hcorr s k) (gks_first G p hf _) (hc_nonneg r l)
354+
248355
end IsingModel

IsingModel/Concrete/LatticeGraphCorrelation/CubicPerStageIncrement.lean

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,40 @@ theorem correlationAlongExhaustion_cubic_succ_sub_le_derivBound (d : ℕ)
7373
exact correlation_pair_two_box_le_derivBound (latticeGraph d)
7474
(cubicBox_mono d (Nat.le_succ k)) p hf hh hr hs hrs hsep
7575

76+
/-- **Tight cubic-exhaustion per-stage correlation increment** (Issue #2965,
77+
Phase A→B): tight analogue of `correlationAlongExhaustion_cubic_succ_sub_le_derivBound`
78+
bounding the successive correlation difference by the *tight* `derivBoundTight`
79+
(cross products only) over the cut edges of the `box_k`-slice. Instantiates the
80+
tight two-box increment `correlation_pair_two_box_le_derivBoundTight` on
81+
`box_k ⊆ box_{k+1}`. The cross-product-only form is what makes `c_{k+1} − c_k`
82+
summable under the infinite-volume spatial decay. -/
83+
theorem correlationAlongExhaustion_cubic_succ_sub_le_derivBoundTight (d : ℕ)
84+
(p : IsingParams ℝ) (hf : Ferromagnetic p) (hh : p.h = 0)
85+
{r s : Fin d → ℤ} (hrs : r ≠ s) (k : ℕ)
86+
(hr : r ∈ cubicBox d k) (hs : s ∈ cubicBox d k)
87+
(hsep : ∀ e ∈ (inducedGraph (latticeGraph d) (cubicBox d (k + 1))).edgeFinset.filter
88+
(straddlePred ((cubicBox d k).subtype (· ∈ cubicBox d (k + 1)))),
89+
¬ Sym2.Mem (⟨r, cubicBox_mono d (Nat.le_succ k) hr⟩ : (↑(cubicBox d (k + 1)) : Type _)) e ∧
90+
¬ Sym2.Mem (⟨s, cubicBox_mono d (Nat.le_succ k) hs⟩ :
91+
(↑(cubicBox d (k + 1)) : Type _)) e) :
92+
correlationAlongExhaustion (latticeGraph d) (cubicExhaustion d) p {r, s} (k + 1)
93+
- correlationAlongExhaustion (latticeGraph d) (cubicExhaustion d) p {r, s} k
94+
≤ derivBoundTight (inducedGraph (latticeGraph d) (cubicBox d (k + 1)))
95+
((inducedGraph (latticeGraph d) (cubicBox d (k + 1))).edgeFinset.filter
96+
(straddlePred ((cubicBox d k).subtype (· ∈ cubicBox d (k + 1))))) p
97+
⟨r, cubicBox_mono d (Nat.le_succ k) hr⟩ ⟨s, cubicBox_mono d (Nat.le_succ k) hs⟩ := by
98+
have hsubk : ({r, s} : Finset (Fin d → ℤ)) ⊆ (cubicExhaustion d).volume k := by
99+
change ({r, s} : Finset (Fin d → ℤ)) ⊆ cubicBox d k
100+
rw [Finset.insert_subset_iff, Finset.singleton_subset_iff]; exact ⟨hr, hs⟩
101+
have hsubk1 : ({r, s} : Finset (Fin d → ℤ)) ⊆ (cubicExhaustion d).volume (k + 1) :=
102+
hsubk.trans (cubicBox_mono d (Nat.le_succ k))
103+
rw [correlationAlongExhaustion, correlationAlongExhaustion,
104+
dif_pos hsubk1, dif_pos hsubk, correlationΛ, correlationΛ,
105+
liftFinset_pair hsubk1 (cubicBox_mono d (Nat.le_succ k) hr)
106+
(cubicBox_mono d (Nat.le_succ k) hs),
107+
liftFinset_pair hsubk hr hs]
108+
exact correlation_pair_two_box_le_derivBoundTight (latticeGraph d)
109+
(cubicBox_mono d (Nat.le_succ k)) p hf hh hr hs hrs hsep
110+
76111
end Ambient
77112
end IsingModel

IsingModel/Concrete/LatticeGraphCorrelation/CubicShellInfiniteVolumeBound.lean

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,5 +92,34 @@ theorem derivBound_inducedGraph_cubic_le_infiniteVolume_sum (d : ℕ)
9292
(fun α β => correlationInfinite_nonneg (latticeGraph d) (cubicExhaustion d) p hf _)
9393
(fun α β => correlation_inducedGraph_cubic_le_correlationInfinite d p n α β)
9494

95+
/-- **Tight cubic-shell `derivBoundTight` bounded by an infinite-volume cross sum**
96+
(Issue #2965, Phase A→B): tight analogue of
97+
`derivBound_inducedGraph_cubic_le_infiniteVolume_sum` using the
98+
cross-product-only `derivBoundTight`. For sites `r, s ∈ box_n` and any edge set
99+
`E₀`, `derivBoundTight … E₀ … ⟨r,_⟩ ⟨s,_⟩` is bounded by `β·J` times the edge sum
100+
of the infinite-volume cross products `g{r,a}·g{s,b} + g{r,b}·g{s,a}` (no diagonal
101+
`g{r,s}·g{a,b}` term). Combined with the tight per-stage increment
102+
`correlationAlongExhaustion_cubic_succ_sub_le_derivBoundTight`, this gives
103+
`c_{k+1} − c_k` bounded by a **summable** infinite-volume cross boundary sum — the
104+
diagonal-free form on which the Phase B spatial decay yields a geometric rate. -/
105+
theorem derivBoundTight_inducedGraph_cubic_le_infiniteVolume_sum (d : ℕ)
106+
(p : IsingParams ℝ) (hf : Ferromagnetic p) (n : ℕ)
107+
(E₀ : Finset (Sym2 (↑(cubicBox d n) : Type _)))
108+
{r s : Fin d → ℤ} (hr : r ∈ cubicBox d n) (hs : s ∈ cubicBox d n) :
109+
derivBoundTight (inducedGraph (latticeGraph d) (cubicBox d n)) E₀ p ⟨r, hr⟩ ⟨s, hs⟩
110+
≤ p.β * p.J * ∑ e ∈ E₀, Sym2.lift ⟨fun a b =>
111+
correlationInfinite (latticeGraph d) (cubicExhaustion d) p {r, a.val} *
112+
correlationInfinite (latticeGraph d) (cubicExhaustion d) p {s, b.val} +
113+
correlationInfinite (latticeGraph d) (cubicExhaustion d) p {r, b.val} *
114+
correlationInfinite (latticeGraph d) (cubicExhaustion d) p {s, a.val},
115+
fun a b => by
116+
change _ * _ + _ * _ = _ * _ + _ * _
117+
ring⟩ e := by
118+
exact derivBoundTight_le_of_correlation_le (inducedGraph (latticeGraph d) (cubicBox d n)) E₀ p hf
119+
⟨r, hr⟩ ⟨s, hs⟩
120+
(fun α β => correlationInfinite (latticeGraph d) (cubicExhaustion d) p {α.val, β.val})
121+
(fun α β => correlationInfinite_nonneg (latticeGraph d) (cubicExhaustion d) p hf _)
122+
(fun α β => correlation_inducedGraph_cubic_le_correlationInfinite d p n α β)
123+
95124
end Ambient
96125
end IsingModel

0 commit comments

Comments
 (0)