Documentation

Mathlib.Combinatorics.SimpleGraph.Tutte

Tutte's theorem #

Main definitions #

Main results #

def SimpleGraph.IsTutteViolator {V : Type u_1} (G : SimpleGraph V) (u : Set V) :

A set certifying non-existence of a perfect matching

Equations
Instances For
    theorem SimpleGraph.IsTutteViolator.mono {V : Type u_1} {G G' : SimpleGraph V} [Finite V] {u : Set V} (h : G G') (ht : G'.IsTutteViolator u) :

    If the universal vertices of a graph G decompose G into cliques such that the Tutte isn't violated, then G has a perfect matching.

    Proves the necessity part of Tutte's theorem

    theorem SimpleGraph.exists_isTutteViolator {V : Type u_1} {G : SimpleGraph V} [Finite V] (h : ∀ (M : G.Subgraph), ¬M.IsPerfectMatching) (hvEven : Even (Nat.card V)) :
    ∃ (u : Set V), G.IsTutteViolator u

    From a graph on an even number of vertices with no perfect matching, we can remove an odd number of vertices such that there are more odd components in the resulting graph than vertices we removed.

    This is the sufficiency side of Tutte's theorem.

    theorem SimpleGraph.tutte {V : Type u_1} {G : SimpleGraph V} [Finite V] :
    (∃ (M : G.Subgraph), M.IsPerfectMatching) ∀ (u : Set V), ¬G.IsTutteViolator u

    Tutte's theorem

    A graph has a perfect matching if and only if: For every subset u of vertices, removing this subset induces at most u.ncard components of odd size. This is formally stated using the predicate IsTutteViolator, which is satisfied exactly when this condition does not hold.