Graph Coloring #
This module defines colorings of simple graphs (also known as proper colorings in the literature). A graph coloring is the attribution of "colors" to all of its vertices such that adjacent vertices have different colors. A coloring can be represented as a homomorphism into a complete graph, whose vertices represent the colors.
Main definitions #
-
G.Coloring α
is the type ofα
-colorings of a simple graphG
, withα
being the set of available colors. The type is defined to be homomorphisms fromG
into the complete graph onα
, and colorings have a coercion toV → α
. -
G.Colorable n
is the proposition thatG
isn
-colorable, which is whether there exists a coloring with at most n colors. -
G.chromaticNumber
is the minimaln
such thatG
isn
-colorable, or⊤
if it cannot be colored with finitely many colors. (Cardinal-valued chromatic numbers are more niche, so we stick toℕ∞
.) We writeG.chromaticNumber ≠ ⊤
to mean a graph is colorable with finitely many colors. -
C.colorClass c
is the set of vertices colored byc : α
in the coloringC : G.Coloring α
. -
C.colorClasses
is the set containing all color classes.
Todo: #
-
Gather material from:
- https://github.com/leanprover-community/mathlib/blob/simple_graph_matching/src/combinatorics/simple_graph/coloring.lean
- https://github.com/kmill/lean-graphcoloring/blob/master/src/graph.lean
-
Trees
-
Planar graphs
-
Chromatic polynomials
-
develop API for partial colorings, likely as colorings of subgraphs (
H.coe.Coloring α
)
An α
-coloring of a simple graph G
is a homomorphism of G
into the complete graph on α
.
This is also known as a proper coloring.
Equations
- SimpleGraph.Coloring G α = (G →g ⊤)
Instances For
Construct a term of SimpleGraph.Coloring
using a function that
assigns vertices to colors and a proof that it is as proper coloring.
(Note: this is a definitionally the constructor for SimpleGraph.Hom
,
but with a syntactically better proper coloring hypothesis.)
Equations
- SimpleGraph.Coloring.mk color valid = { toFun := color, map_rel' := valid }
Instances For
The color class of a given color.
Equations
- SimpleGraph.Coloring.colorClass C c = {v : V | C v = c}
Instances For
The set containing all color classes.
Equations
Instances For
Equations
- SimpleGraph.instFintypeColoring = let_fun this := Fintype.ofInjective (fun (f : G.Adj →r ⊤.Adj) => ⇑f) (_ : Function.Injective fun (f : G.Adj →r ⊤.Adj) => ⇑f); this
Whether a graph can be colored by at most n
colors.
Equations
- SimpleGraph.Colorable G n = Nonempty (SimpleGraph.Coloring G (Fin n))
Instances For
The coloring of an empty graph.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The "tautological" coloring of a graph, using the vertices of the graph as colors.
Equations
- SimpleGraph.selfColoring G = SimpleGraph.Coloring.mk id (_ : ∀ {x x_1 : V}, G.Adj x x_1 → x ≠ x_1)
Instances For
The chromatic number of a graph is the minimal number of colors needed to color it.
This is ⊤
(infinity) iff G
isn't colorable with finitely many colors.
If G
is colorable, then ENat.toNat G.chromaticNumber
is the ℕ
-valued chromatic number.
Equations
- SimpleGraph.chromaticNumber G = ⨅ n ∈ setOf (SimpleGraph.Colorable G), ↑n
Instances For
Given an embedding, there is an induced embedding of colorings.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given an equivalence, there is an induced equivalence between colorings.
Equations
- One or more equations did not get rendered due to their size.
Instances For
There is a noncomputable embedding of α
-colorings to β
-colorings if
β
has at least as large a cardinality as α
.
Equations
- SimpleGraph.recolorOfCardLE G hn = SimpleGraph.recolorOfEmbedding G (Nonempty.some (_ : Nonempty (α ↪ β)))
Instances For
Noncomputably get a coloring from colorability.
Equations
- SimpleGraph.Colorable.toColoring hc hn = (SimpleGraph.recolorOfCardLE G (_ : Fintype.card (Fin n) ≤ Fintype.card α)) (Nonempty.some hc)
Instances For
The bicoloring of a complete bipartite graph using whether a vertex is on the left or on the right.
Equations
- One or more equations did not get rendered due to their size.