Documentation

LeanPool.StructuralGraphClasses.CographTwins

Twins and nontrivial decompositions of cographs #

Twins have the same adjacency to every other vertex; they may be adjacent (true twins) or nonadjacent (false twins). Decomposition statements require two nonempty parts and do not constrain the root of an arbitrary unreduced cotree.

def SimpleGraph.AreTwins {V : Type u_1} (G : SimpleGraph V) (a b : V) :

Distinct vertices with identical adjacency outside the pair.

Equations
Instances For
    theorem SimpleGraph.AreTwins.symm {V : Type u_1} {G : SimpleGraph V} {a b : V} (h : G.AreTwins a b) :
    G.AreTwins b a

    The twin relation is symmetric.

    theorem SimpleGraph.AreTwins.compl {V : Type u_1} {G : SimpleGraph V} {a b : V} (h : G.AreTwins a b) :

    Complementation exchanges true and false twins while preserving the twin relation.

    theorem SimpleGraph.AreTwins.mapIso {V : Type u_1} {W : Type u_2} {G : SimpleGraph V} {H : SimpleGraph W} {a b : V} (h : G.AreTwins a b) (f : G ≃g H) :
    H.AreTwins (f a) (f b)

    Relabel a pair of twins along a graph isomorphism.

    theorem SimpleGraph.AreTwins.sum_left {V : Type u_1} {W : Type u_2} {G : SimpleGraph V} {a b : V} (h : G.AreTwins a b) (H : SimpleGraph W) :

    A left-child twin pair remains twins in a disjoint union.

    theorem SimpleGraph.AreTwins.sum_right {V : Type u_1} {W : Type u_2} {H : SimpleGraph W} {a b : W} (h : H.AreTwins a b) (G : SimpleGraph V) :

    A right-child twin pair remains twins in a disjoint union.

    theorem SimpleGraph.Cotree.exists_twins (t : Cotree) :
    Nontrivial t.Vertex → ∃ (a : t.Vertex) (b : t.Vertex), t.graph.AreTwins a b

    Every cotree with at least two leaves has a twin pair.

    theorem SimpleGraph.IsCograph.exists_twins {V : Type u_1} {G : SimpleGraph V} [Finite V] [Nontrivial V] (h : G.IsCograph) :
    ∃ (a : V) (b : V), G.AreTwins a b

    Every nontrivial finite cograph has true or false twins.

    theorem SimpleGraph.IsCograph.exists_join_cut {V : Type u_1} {G : SimpleGraph V} [Finite V] [Nontrivial V] (h : G.IsCograph) (hc : G.Preconnected) :
    ∃ (s : Set V), s.Nonempty ∧ sᶜ.Nonempty ∧ ∀ u ∈ s, ∀ v ∉ s, G.Adj u v

    A connected nontrivial finite cograph admits a join cut with two nonempty parts.

    noncomputable def SimpleGraph.isoJoinInduce {V : Type u_1} {G : SimpleGraph V} (s : Set V) (hcross : ∀ u ∈ s, ∀ v ∉ s, G.Adj u v) :

    A cut with every cross edge gives an exact join decomposition.

    Equations
    Instances For
      noncomputable def SimpleGraph.CotreeRepresentation.joinInduce {V : Type u_1} {G : SimpleGraph V} (s : Set V) (hcross : ∀ u ∈ s, ∀ v ∉ s, G.Adj u v) (L : (SimpleGraph.induce s G).CotreeRepresentation) (R : (SimpleGraph.induce sᶜ G).CotreeRepresentation) :

      Assemble the supplied cotrees across a complete join cut.

      Equations
      Instances For

        A disconnected cograph splits as a union of two nonempty cographs.

        A connected nontrivial finite cograph splits as a join of two nonempty cographs.

        A disconnected finite cograph admits a union-root cotree with nonempty children.

        A connected nontrivial finite cograph admits a join-root cotree with nonempty children.