Graph partitions #
This module provides an interface for dealing with partitions on simple graphs. A partition of
a graph G, with vertices V, is a set P of disjoint nonempty subsets of V such that:
The union of the subsets in
PisV.Each element of
Pis an independent set. (Each subset contains no pair of adjacent vertices.)
Graph partitions are graph colorings that do not name their colors. They are adjoint in the following sense. Given a graph coloring, there is an associated partition from the set of color classes, and given a partition, there is an associated graph coloring from using the partition's subsets as colors. Going from graph colorings to partitions and back makes a coloring "canonical": all colors are given a canonical name and unused colors are removed. Going from partitions to graph colorings and back is the identity.
Main definitions #
SimpleGraph.Partitionis a structure to represent a partition of a simple graphSimpleGraph.Partition.PartsCardLeis whether a given partition is ann-partition. (a partition with at mostnparts).SimpleGraph.Partitionable nis whether a given graph isn-partiteSimpleGraph.Partition.toColoringcreates colorings from partitionsSimpleGraph.Coloring.toPartitioncreates partitions from colorings
Main statements #
SimpleGraph.partitionable_iff_colorableis thatn-partitionability andn-colorability are equivalent.
A Partition of a simple graph G is a structure constituted by
parts: a set of subsets of the verticesVofGisPartition: a proof thatpartsis a proper partition ofVindependent: a proof that each element ofpartsdoesn't have a pair of adjacent vertices
parts: a set of subsets of the verticesVofG.- isPartition : Setoid.IsPartition self.parts
isPartition: a proof thatpartsis a proper partition ofV. - independent (s : Set V) : s ∈ self.parts → IsAntichain G.Adj s
independent: a proof that each element ofpartsdoesn't have a pair of adjacent vertices.
Instances For
Whether a partition P has at most n parts. A graph with a partition
satisfying this predicate called n-partite. (See SimpleGraph.Partitionable.)
Instances For
Whether a graph is n-partite, which is whether its vertex set
can be partitioned in at most n independent sets.
Equations
- G.Partitionable n = ∃ (P : G.Partition), P.PartsCardLe n
Instances For
The part in the partition that v belongs to
Equations
- P.partOfVertex v = Classical.choose ⋯
Instances For
Create a coloring using the parts themselves as the colors. Each vertex is colored by the part it's contained in.
Equations
- P.toColoring = SimpleGraph.Coloring.mk (fun (v : V) => ⟨P.partOfVertex v, ⋯⟩) ⋯
Instances For
Like SimpleGraph.Partition.toColoring but uses Set V as the coloring type.
Equations
Instances For
Creates a partition from a coloring.
Equations
- C.toPartition = { parts := C.colorClasses, isPartition := ⋯, independent := ⋯ }
Instances For
The partition where every vertex is in its own part.
Equations
- SimpleGraph.Partition.instInhabited = { default := G.selfColoring.toPartition }