Skip to content

Commit 03ced9c

Browse files
phasetrclaude
andauthored
feat: correlation graph-equality congruence + induced-union bridge (union form) — #2965 (#2978)
* feat: correlation graph-equality congruence + inducedGraph-union bridge (Part of #2965) * feat: correlation graph-equality congruence + induced-union bridge (union form) Complete Phase A step 1 (the Fintype-instance transport): - correlation_congr_of_eq: G₁ = G₂ ⇒ correlation G₁ p A = correlation G₂ p A, invariant across different Fintype edgeSet instances (edgeFinset coerces to the instance-free edgeSet). Bridges propositional graph equalities without rw's motive obstruction. - correlation_inducedGraph_union_inl_of_no_cross: the component-factorization bridge stated directly on inducedGraph (Λ₁ ∪ Λ₂): correlation (inducedGraph (Λ₁ ∪ Λ₂)) p ((A.map inl).map union) = correlation (inducedGraph Λ₁) p A for disjoint Λ₁,Λ₂ with no cross edge, via inducedGraph_sum_map_eq_union_of_no_cross + correlation_congr_of_eq + correlation_inducedGraph_sum_map_inl. This is the form usable for exhaustion stages. Part of #2965 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
1 parent fe9b676 commit 03ced9c

3 files changed

Lines changed: 73 additions & 0 deletions

File tree

IsingModel/AmbientLatticeSum/InducedUnion.lean

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,4 +248,56 @@ theorem correlation_inducedGraph_sum_map_inl (G : SimpleGraph V)
248248
= correlation (inducedGraph G Λ₁) p A := by
249249
rw [correlation_map_equiv, correlation_sum_inl]
250250

251+
/-- **Correlation is invariant under graph equality**, regardless of which
252+
`Fintype edgeSet` instance is used: if `G₁ = G₂` then their correlations agree.
253+
Correlation depends on the graph only through `edgeFinset` (inside the
254+
Hamiltonian's interaction energy), and `edgeFinset` is instance-independent
255+
since it coerces to `edgeSet`. This lets one transport correlations across the
256+
graph equalities of this file (e.g. `inducedGraph_sum_map_eq_union_of_no_cross`)
257+
without the `Fintype` motive obstruction that blocks `rw`. -/
258+
theorem correlation_congr_of_eq {W : Type*} [Fintype W] [DecidableEq W]
259+
{G₁ G₂ : SimpleGraph W}
260+
[inst₁ : Fintype G₁.edgeSet] [inst₂ : Fintype G₂.edgeSet]
261+
(h : G₁ = G₂) (p : IsingParams ℝ) (A : Finset W) :
262+
correlation G₁ p A = correlation G₂ p A := by
263+
subst h
264+
-- After `subst`, both sides are the same graph; the only residual difference is
265+
-- the `Fintype G₁.edgeSet` instance the Hamiltonian's interaction energy feeds to
266+
-- `edgeFinset`. Since `edgeFinset` coerces to the instance-free `edgeSet`, the two
267+
-- edge finsets are equal, which `simp` propagates through `correlation`.
268+
have hef : @SimpleGraph.edgeFinset _ G₁ inst₁ = @SimpleGraph.edgeFinset _ G₁ inst₂ := by
269+
apply Finset.coe_injective
270+
rw [SimpleGraph.coe_edgeFinset, SimpleGraph.coe_edgeFinset]
271+
simp only [correlation, gibbsExpectation, partitionFunction, boltzmannWeight,
272+
hamiltonian, interactionEnergy, hef]
273+
274+
set_option linter.unusedFintypeInType false in
275+
/-- **Component factorization of an induced-union correlation (union form)**:
276+
the bridge of `correlation_inducedGraph_sum_map_inl` transported onto
277+
`inducedGraph G (Λ₁ ∪ Λ₂)` itself, via `inducedGraph_sum_map_eq_union_of_no_cross`
278+
and `correlation_congr_of_eq` (which absorbs the `Fintype` instance change). For
279+
disjoint `Λ₁, Λ₂` with no `G`-edge between them, an observable supported on `Λ₁`
280+
has the same correlation in the induced subgraph on the union as in the induced
281+
subgraph on `Λ₁` alone — the component-factorization bridge in the form directly
282+
usable for exhaustion stages (Issue #2965, Phase A). -/
283+
theorem correlation_inducedGraph_union_inl_of_no_cross (G : SimpleGraph V)
284+
{Λ₁ Λ₂ : Finset V} (hd : Disjoint Λ₁ Λ₂)
285+
(hcross : ∀ a ∈ Λ₁, ∀ b ∈ Λ₂, ¬ G.Adj a b)
286+
[Fintype (inducedGraph G Λ₁).edgeSet]
287+
[Fintype (inducedGraph G Λ₂).edgeSet]
288+
[Fintype (((inducedGraph G Λ₁).sum (inducedGraph G Λ₂)).map
289+
(Equiv.Finset.union Λ₁ Λ₂ hd).toEmbedding).edgeSet]
290+
[Fintype (inducedGraph G (Λ₁ ∪ Λ₂)).edgeSet]
291+
(p : IsingParams ℝ) (A : Finset (↑Λ₁ : Type _)) :
292+
correlation (inducedGraph G (Λ₁ ∪ Λ₂)) p
293+
((A.map ⟨Sum.inl, Sum.inl_injective⟩).map
294+
(Equiv.Finset.union Λ₁ Λ₂ hd).toEmbedding)
295+
= correlation (inducedGraph G Λ₁) p A :=
296+
Eq.trans
297+
(correlation_congr_of_eq
298+
(inducedGraph_sum_map_eq_union_of_no_cross G hd hcross).symm p
299+
((A.map ⟨Sum.inl, Sum.inl_injective⟩).map
300+
(Equiv.Finset.union Λ₁ Λ₂ hd).toEmbedding))
301+
(correlation_inducedGraph_sum_map_inl G hd p A)
302+
251303
end IsingModel

docs/index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,8 @@ Named specializations at `A = {i}`:
364364
| `Ambient.freeEnergyΛ_weighted_super_additive_of_nonempty` | `|Λ₁|·f_{Λ₁} + |Λ₂|·f_{Λ₂} ≤ |Λ₁∪Λ₂|·f_{Λ₁∪Λ₂}` (disjoint nonempty, ferromagnetic) | `AmbientLatticeSum.lean` | `freeEnergyΛ` wrapper |
365365
| `inducedGraph_sum_map_eq_union_of_no_cross` | `Disjoint Λ₁ Λ₂` + no `G`-edge between `Λ₁,Λ₂` ⇒ `((inducedGraph Λ₁) ⊕g (inducedGraph Λ₂)).map (union) = inducedGraph (Λ₁ ∪ Λ₂)` (upgrades `inducedGraph_sum_map_le_union` to equality: no cross edges ⇒ every union edge stays within one part) | `InducedUnion.lean` | Component split (Issue #2965) |
366366
| `correlation_inducedGraph_sum_map_inl` | `correlation ((inducedGraph Λ₁ ⊕g inducedGraph Λ₂).map union) p ((A.map inl).map union) = correlation (inducedGraph Λ₁) p A` (component factorization of an induced-union correlation; by `correlation_map_equiv` + `correlation_sum_inl`) | `InducedUnion.lean` | Component split (Issue #2965) |
367+
| `correlation_congr_of_eq` | `G₁ = G₂ ⇒ correlation G₁ p A = correlation G₂ p A` (correlation is invariant under graph equality even across different `Fintype edgeSet` instances; via `edgeFinset = edgeSet` coercion). Bridges propositional graph equalities without `rw`'s motive obstruction | `InducedUnion.lean` | Component split (Issue #2965) |
368+
| `correlation_inducedGraph_union_inl_of_no_cross` | `Disjoint Λ₁ Λ₂` + no cross edge ⇒ `correlation (inducedGraph (Λ₁ ∪ Λ₂)) p ((A.map inl).map union) = correlation (inducedGraph Λ₁) p A` (the component-factorization bridge directly on `inducedGraph (Λ₁ ∪ Λ₂)`, via `inducedGraph_sum_map_eq_union_of_no_cross` + `correlation_congr_of_eq` + `correlation_inducedGraph_sum_map_inl`) — the form usable for exhaustion stages | `InducedUnion.lean` | Component split (Issue #2965) |
367369
| `partitionFunction_ge_one_of_ferromagnetic` / `log_partitionFunction_nonneg_of_ferromagnetic` | `Z_G ≥ 1` (ferromagnetic), log form | `FreeEnergy.lean` | Step 5/Fekete infra |
368370
| `{log_,}partitionFunction{,Λ}_inducedGraph_le_of_disjoint_union` | `Disjoint Λ₁ Λ₂ ⇒ Z_{Λ₁} ≤ Z_{Λ₁∪Λ₂}` (ferromagnetic), log / multiplicative and generic / `Λ`-wrapped forms | `AmbientLatticeSum.lean` | Monotonicity step toward Fekete |
369371
| `Ambient.card_mul_freeEnergyΛ_le_of_disjoint_union` | `Λ₁.Nonempty, Disjoint Λ₁ Λ₂ ⇒ |Λ₁|·f_{Λ₁} ≤ |Λ₁∪Λ₂|·f_{Λ₁∪Λ₂}` (ferromagnetic) | `AmbientLatticeSum.lean` | `freeEnergyΛ` weighted monotonicity |

tex/proof-guide.tex

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12537,6 +12537,25 @@ \subsection{Super-additivity on Finset disjoint union
1253712537
finite-volume system to the isolated-component correlation.
1253812538
\end{proposition}
1253912539

12540+
\begin{proposition}[\texttt{IsingModel.correlation\_inducedGraph\_union\_inl\_of\_no\_cross}]
12541+
Under the no-cross hypothesis, the same factorization holds directly on the
12542+
induced subgraph of the union:
12543+
\[
12544+
\langle\sigma^{A}\rangle_{\mathrm{inducedGraph}\,G\,(\Lambda_1\cup\Lambda_2)}
12545+
= \langle\sigma^{A}\rangle_{\mathrm{inducedGraph}\,G\,\Lambda_1}.
12546+
\]
12547+
\end{proposition}
12548+
12549+
\begin{proof}
12550+
Transport the previous proposition across the graph equality
12551+
\texttt{inducedGraph\_sum\_map\_eq\_union\_of\_no\_cross} using
12552+
\texttt{correlation\_congr\_of\_eq}: correlation is invariant under graph
12553+
equality even across distinct \texttt{Fintype edgeSet} instances, since
12554+
$\mathrm{edgeFinset}$ coerces to the instance-free $\mathrm{edgeSet}$. This
12555+
absorbs the \texttt{Fintype} motive obstruction that blocks a direct
12556+
\texttt{rw}.
12557+
\end{proof}
12558+
1254012559
\paragraph{Closing Prop 4.6.1.} Combined with the uniform upper
1254112560
bound (PR \#122, \#123), Fekete's lemma now yields
1254212561
convergence of $f_\Lambda = (\log Z_\Lambda)/|\Lambda|$ along

0 commit comments

Comments
 (0)