Skip to content

feat: numeric per-stage correlation increment (Phase A) — #2965#2989

Merged
phasetr merged 3 commits into
mainfrom
feat/per-stage-increment-2965
May 26, 2026
Merged

feat: numeric per-stage correlation increment (Phase A) — #2965#2989
phasetr merged 3 commits into
mainfrom
feat/per-stage-increment-2965

Conversation

@phasetr
Copy link
Copy Markdown
Owner

@phasetr phasetr commented May 26, 2026

Part of #2965. Closes the numeric per-stage increment — the culmination of the Phase A component-factorization bridge.

Adds correlation_pair_sub_inducedGraph_le_derivBound (new PerStageIncrement.lean, imports WeakBound + InducedUnion): for r,s ∈ S, r≠s, ferromagnetic, h=0, and r,s not on any cut edge,
correlation G p {r,s} − correlation (inducedGraph G S) p {⟨r,_⟩,⟨s,_⟩} ≤ derivBound G (G.edgeFinset.filter straddle) p r s.

Composes #2974 (ball-boundary bond-deletion increment) with #2986 (component-factorization bridge) via #2987 (Finset↔Set deletion) + correlation_congr_all + #2988 (observable identity).

Elaboration-performance resolution (the earlier monolithic calc timed out): the straddle predicate is @[reducible] (matches the inline straddle set of the component lemmas under unification), and the graph/observable bridge is a separate lemma to keep each elaboration within the heartbeat budget.

lake build IsingModel.AmbientLatticeSum.PerStageIncrement green, sorry 0, file linter-clean, tex compiles.

🤖 Generated with Claude Code

phasetr and others added 3 commits May 27, 2026 07:00
Add correlation_pair_sub_inducedGraph_le_derivBound (new PerStageIncrement.lean):
for r,s ∈ S, r≠s, ferromagnetic, h=0, and r,s not on any cut (straddle) edge,

  correlation G p {r,s} − correlation (inducedGraph G S) p {⟨r,_⟩,⟨s,_⟩}
    ≤ derivBound G (G.edgeFinset.filter straddle) p r s.

The full-model pair correlation exceeds the isolated induced-subgraph pair
correlation by at most the ball-boundary derivBound over the cut edges.

Composes the ball-boundary bond-deletion increment
correlation_sub_deleteEdges_le_derivBound (#2974) with the component-factorization
bridge correlation_deleteEdges_straddle_eq_inducedGraph (#2986), via
deleteEdges_filter_edgeFinset_eq (#2987) + correlation_congr_all +
triple_map_subtypeUnivEquiv_eq (#2988). The straddle predicate is @[reducible]
(to match the inline straddle set of the component lemmas under unification) and
the graph/observable bridge is a separate lemma (correlation_deleteEdges_filter_pair_eq)
to keep elaboration within the heartbeat budget.

Part of #2965

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…s the composition)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@phasetr phasetr merged commit 42d000c into main May 26, 2026
1 check passed
phasetr added a commit that referenced this pull request May 26, 2026
* feat: nested induced-subgraph graph equality (Part of #2965)

* feat: nested induced-subgraph graph equality

Add nestedSubtypeEquiv and inducedGraph_induce_preimage_map_eq: for S ⊆ T,
((inducedGraph G T).induce {x : ↥T | x.val ∈ S}).map nestedSubtypeEquiv =
inducedGraph G S — inducing box_k inside inducedGraph G box_{k+1} equals, up to
the nested-subtype relabeling {x : ↥T // x.val ∈ S} ≃ ↥S, the direct induced
subgraph on S. An edge survives iff its deep endpoints are G-adjacent and both
in S.

Graph-level foundation for instantiating the per-stage increment
(correlation_pair_sub_inducedGraph_le_derivBound, #2989) on cubic exhaustion
stages box_k ⊆ box_{k+1}. The correlation-level transport across this iso is a
follow-up (it currently hits a whnf elaboration wall in correlation_map_equiv on
the nested-subtype graph, needing a lighter sum-level encoding).

Part of #2965

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
phasetr added a commit that referenced this pull request May 27, 2026
…#2992)

* feat: two-box per-stage increment (Part of #2965)

* Build two-box per-stage increment for cubic exhaustion stages

Add `correlation_pair_two_box_le_derivBound`: for nested finsets T₁ ⊆ T₂
and a pair r,s interior to T₁, the pair correlation on the larger box
exceeds the one on the smaller box by at most the ball-boundary
`derivBound` over the cut edges of the T₁-slice. This is the form
instantiated on cubic exhaustion stages box_k ⊆ box_{k+1} to bound the
per-stage difference c_{k+1} − c_k (Issue #2965, Phase A).

Supporting declarations:
- `nestedFinsetEquiv`: the double-subtype relabeling
  ↥(T₁.subtype (· ∈ T₂)) ≃ ↥T₁.
- `correlation_inducedGraph_nested_finset`: concrete-layer companion of
  `correlation_inducedGraph_induce_preimage` (#2991) using the
  `Finset.subtype` slice instead of a `Set`-predicate, so it matches the
  `S : Finset ↥T₂` region of the single-box increment directly and avoids
  the ↥S vs {x // x.val ∈ T₁} subtype-type mismatch.

Composes the single-box increment `correlation_pair_sub_inducedGraph_le_derivBound`
(#2989) on G' = inducedGraph G T₂ with the double-induce identification,
recovering inducedGraph G T₁ on the inner box.

Docs and proof-guide synced.

Part of #2965

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Update module doc Main declarations list (codex cross-check)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
phasetr added a commit that referenced this pull request May 27, 2026
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>
phasetr added a commit that referenced this pull request May 27, 2026
* feat: tight bond-deletion increment (Part of #2965)

* 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>

* Weaken convergence wording to convergence-rate bound (codex cross-check)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant