Reconstruction Conjecture — Chordal Graphs #
This module begins the chordal-graph structure layer for rung 3 of the separator-decomposition programme. Chordal graphs are entirely absent from Mathlib (confirmed by source audit), so the definition and its basic closure properties are built from scratch here.
A graph is chordal if it has no induced cycle of length ≥ 4. The key
formalization observation: a SimpleGraph.Embedding (↪g) is a RelEmbedding,
so it not only preserves but reflects adjacency — therefore cycleGraph n ↪g G
is exactly an induced n-cycle in G, and "no induced C_n for n ≥ 4" is
the clean definition.
Main definitions #
SimpleGraph.IsChordal G— no induced cycle of length≥ 4.
Main results #
SimpleGraph.IsChordal.map— chordality is an isomorphism invariant.SimpleGraph.IsChordal.induce— chordality is hereditary (induced subgraphs of chordal graphs are chordal).
Staged targets (stated as Prop, not proved) #
SimpleGraph.DiracSimplicial— Dirac's theorem: every finite chordal graph on a nonempty vertex set has a simplicial vertex. The inductive engine of perfect elimination orderings.SimpleGraph.DiracCliqueSeparator— Dirac's theorem: a non-complete chordal graph has a clique separator. This is what makes the clean-clique-separation hypothesis ofSeparatorAssembler.nonempty_iso_of_separator_piecesalways available for chordal graphs — the structural input for rung 3.
Both are classical (Dirac 1961) but genuinely hard to formalize (they need cycle/chord analysis and a perfect-elimination induction), and are the real Mathlib-gap content; they are recorded here as the precise next targets.
References #
- Dirac, G. A. (1961). "On rigid circuit graphs." Abh. Math. Sem. Univ. Hamburg 25, 71–76.
- Fulkerson, D. R., Gross, O. A. (1965). "Incidence matrices and interval graphs." (Perfect elimination orderings.)
A graph is chordal if it contains no induced cycle of length ≥ 4.
An induced n-cycle is exactly an embedding cycleGraph n ↪g G (a graph
embedding is a RelEmbedding, hence reflects non-adjacency too).
Instances For
Chordality is an isomorphism invariant. An induced cycle in H would,
composed with e⁻¹, give an induced cycle in G.
Chordality is hereditary. An induced cycle in G.induce S includes into
G as an induced cycle, so if G has none then neither does G.induce S.
A graph on at most three vertices is chordal: an induced n-cycle for
n ≥ 4 would embed Fin n into the vertex type, forcing n ≤ |V| ≤ 3. (A
sanity check that the definition behaves on small graphs.)
The empty graph is chordal: it has no edges, so no cycle — in particular no
induced ≥ 4-cycle — can embed (a cycleGraph edge would reflect to a
⊥-edge). A validation that the definition handles the edgeless case.
Deleting any vertex preserves chordality (deleteVert is induce). This is
the recursion step of a perfect elimination ordering: delete a simplicial vertex
and recurse on the still-chordal remainder.
Simplicial vertices: the base cases #
IsSimplicial lives in Reconstruction.CliqueSeparator. These are the cases
where a simplicial vertex is immediate — the base of the perfect-elimination
induction, and the complete-graph case of Dirac's theorem.
A vertex whose neighbourhood has at most one element is simplicial (a
≤ 1-element set is vacuously a clique). In particular isolated vertices and
leaves are simplicial.
Every vertex of the complete graph is simplicial; so DiracSimplicial holds
for complete graphs, and the genuine content is the non-complete case.
TARGET — Dirac 1961. Every finite chordal graph on a nonempty vertex set has a simplicial vertex. The inductive base of perfect elimination orderings; hard to formalize (needs cycle/chord analysis).
Equations
- SimpleGraph.DiracSimplicial V = ∀ (G : SimpleGraph V), G.IsChordal → Nonempty V → ∃ (v : V), G.IsSimplicial v
Instances For
TARGET — Dirac 1961. A non-complete chordal graph has a separator that induces a clique. This guarantees the clean-clique-separation hypothesis of the reassembly engine is always available for chordal graphs, and is the structural input for rung 3.
Equations
- SimpleGraph.DiracCliqueSeparator V = ∀ (G : SimpleGraph V), G.IsChordal → G ≠ ⊤ → G.Connected → ∃ (S : Set V), G.IsCliqueSeparator S
Instances For
The crux behind Dirac. In a chordal graph an inclusion-minimal
separator induces a clique. (Two non-adjacent vertices of a minimal separator
would, via shortest paths through two different G − S components, yield an
induced ≥ 4-cycle, contradicting chordality.) From this, both DiracSimplicial
and DiracCliqueSeparator follow by induction on the components of G − S.
Proved as SimpleGraph.minimalSeparatorClique in MinimalSeparatorClique.lean,
via the induced-cycle-extraction machinery (Geodesic, InducedCycle,
CycleFromPaths, MinimalSeparator).
Equations
- SimpleGraph.MinimalSeparatorClique V = ∀ (G : SimpleGraph V) (S : Set V), G.IsChordal → G.IsSeparator S → (∀ T ⊂ S, ¬G.IsSeparator T) → G.IsClique S