Skip to content

feat: Step 576 — polymer incompatibility relation (Mayer expansion foundation, GJ §18.4) - #1418

Merged
phasetr merged 2 commits into
mainfrom
feat/step576-polymer-incompatible-relation
May 2, 2026
Merged

feat: Step 576 — polymer incompatibility relation (Mayer expansion foundation, GJ §18.4)#1418
phasetr merged 2 commits into
mainfrom
feat/step576-polymer-incompatible-relation

Conversation

@phasetr

@phasetr phasetr commented May 2, 2026

Copy link
Copy Markdown
Owner

Part of #1344

Summary

  • Define PolymersIncompatible P Q := ¬ Disjoint (polymerSupport P) (polymerSupport Q) as the foundation of cluster decomposition for Mayer expansion
  • Provide decidability instance (via Disjoint decidable on Finset)
  • Symmetry via disjoint_comm
  • Characterise via support overlap (mem_polymerSupport_inter)
  • Establish dual relation with the existing IsPolymerVertexDisjoint

Motivation

The §18.4 deferred item "Mayer expansion: log Ξ = ∑ Ursell terms" requires a notion of cluster: a multi-set of polymers whose incompatibility graph is connected. This PR introduces the underlying incompatibility relation as the smallest foundation step.

Test plan

  • lake build succeeds
  • lake exe GKSTest passes
  • grep -rn "sorry" IsingModel/ is zero
  • linter warning-free
  • docs/index.md updated (§18.4 row)
  • codex cross-check

🤖 Generated with Claude Code

phasetr and others added 2 commits May 2, 2026 16:47
…undation, GJ §18.4)

Empty start commit. Defines PolymersIncompatible foundation for cluster
expansion / Mayer expansion.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…undation, GJ §18.4)

Introduce `PolymersIncompatible P Q := ¬ Disjoint (polymerSupport P) (polymerSupport Q)`
as the foundation for cluster decomposition and Mayer expansion:

- `Decidable` instance (inherited from `Disjoint` on `Finset`)
- `symm` via `disjoint_comm`
- `iff_not_isPolymerVertexDisjoint`: definitional equality (`Iff.rfl`) since
  `IsPolymerVertexDisjoint` is literally `Disjoint (polymerSupport _) (polymerSupport _)`
- `iff_exists_shared_vertex` via `Finset.not_disjoint_iff`
- `self_of_isPolymer`: a non-empty polymer is incompatible with itself,
  reflecting the multi-set convention for clusters in Mayer expansion
  (FV §5.7: clusters are multi-sets where polymers can repeat)

This is the first step toward the §18.4 deferred Mayer expansion:
`log Ξ = ∑_{clusters} Ursell coefficient · ∏ activity`. The clusters
are connected components of the incompatibility graph defined by this
relation.

Cross-checked with codex (FV §5.7 alignment, self-incompatibility
convention, Lean proof soundness all confirmed).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@phasetr
phasetr marked this pull request as ready for review May 2, 2026 07:50
@phasetr
phasetr merged commit 6431524 into main May 2, 2026
1 check passed
@phasetr
phasetr deleted the feat/step576-polymer-incompatible-relation branch May 3, 2026 05:36
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