Modular decompositions
Lax183560.ModularDecomposition · concepts/Lax183560/ModularDecomposition.lean · lax-183560
No public endorsements yet.
Loading review…
Sign in with ORCIDNatural Language Statement
Definition
A modular decomposition recursively partitions a graph into nonempty modules. A module is a vertex set whose vertices have the same neighbors outside the set. Between any two parts, either all possible edges are present or none are; a quotient graph records which parts are adjacent. Each part is decomposed recursively, with graphs on at most one vertex as the base case.
A decomposition has width at most if every substitution uses at most parts, except for disjoint unions and complete joins, whose numbers of parts are unrestricted. The quotient graphs need not be prime.
Concept map
Lean source view on GitHub
| 1 | import Mathlib.Combinatorics.SimpleGraph.Maps |
| 2 | |
| 3 | /-! |
| 4 | --- |
| 5 | title: Modular decompositions |
| 6 | type: definition |
| 7 | --- |
| 8 | A modular decomposition recursively partitions a graph into nonempty modules. |
| 9 | A module is a vertex set whose vertices have the same neighbors outside the |
| 10 | set. Between any two parts, either all possible edges are present or none |
| 11 | are; a quotient graph records which parts are adjacent. Each part is |
| 12 | decomposed recursively, with graphs on at most one vertex as the base case. |
| 13 | |
| 14 | A decomposition has width at most if every substitution uses at most |
| 15 | parts, except for disjoint unions and complete joins, whose numbers of |
| 16 | parts are unrestricted. The quotient graphs need not be prime. |
| 17 | -/ |
| 18 | |
| 19 | namespace Lax183560.ModularDecomposition |
| 20 | |
| 21 | /-- A recursive modular decomposition whose nontrivial substitutions use at |
| 22 | most `k` parts. -/ |
| 23 | inductive ModularDecomposition : |
| 24 | (V : Type) → SimpleGraph V → ℕ → Prop where |
| 25 | | atom {V : Type} [Fintype V] (G : SimpleGraph V) (k : ℕ) |
| 26 | (h : Fintype.card V ≤ 1) : ModularDecomposition V G k |
| 27 | | substitute {V : Type} [Fintype V] [DecidableEq V] |
| 28 | (G : SimpleGraph V) (k n : ℕ) |
| 29 | (part : V → Fin n) (Q : SimpleGraph (Fin n)) |
| 30 | (nontrivial : 2 ≤ n) |
| 31 | (surjective : Function.Surjective part) |
| 32 | (cross : ∀ u v : V, part u ≠ part v → |
| 33 | (G.Adj u v ↔ Q.Adj (part u) (part v))) |
| 34 | (children : ∀ i : Fin n, |
| 35 | ModularDecomposition {v : V // part v = i} |
| 36 | (G.induce {v : V | part v = i}) k) |
| 37 | (arity : Q = ⊥ ∨ Q = ⊤ ∨ n ≤ k) : |
| 38 | ModularDecomposition V G k |
| 39 | |
| 40 | |
| 41 | end Lax183560.ModularDecomposition |
| 42 |
Discussion
Ask a question or add context. Endorsements and structured flags are kept in the review panel above.
0 comments