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 fromGinto the complete graph onα, and colorings have a coercion toV → α.G.Colorable nis the proposition thatGisn-colorable, which is whether there exists a coloring with at most n colors.G.chromaticNumberis the minimalnsuch thatGisn-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 cis the set of vertices colored byc : αin the coloringC : G.Coloring α.C.colorClassesis the set containing all color classes.
TODO #
Gather material from:
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.
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.)
Instances For
The color class of a given color.
Instances For
The set containing all color classes.
Instances For
Whether a graph can be colored by at most n colors.
Instances For
The coloring of an empty graph.
Instances For
Alias of SimpleGraph.Coloring.ofIsEmpty.
The coloring of an empty graph.
Instances For
Alias of SimpleGraph.Colorable.of_isEmpty.
If G is n-colorable, then mapping the vertices of G produces an n-colorable simple
graph.
The "tautological" coloring of a graph, using the vertices of the graph as colors.
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.
Instances For
Given an embedding, there is an induced embedding of colorings.
Instances For
Given an equivalence, there is an induced equivalence between colorings.
Instances For
There is a noncomputable embedding of α-colorings to β-colorings if
β has at least as large a cardinality as α.
Instances For
Noncomputably get a coloring from colorability.
Instances For
If the chromatic number of G is n + 1, then G is colorable in no fewer than n + 1
colors.
The bicoloring of a complete bipartite graph using whether a vertex is on the left or on the right.
Instances For
Cliques #
Given a coloring α of G, and a clique of size at least the number of colors, the clique
contains a vertex of each color.
The canonical ι-coloring of a completeMultipartiteGraph with parts indexed by ι
Instances For
If H is not n-colorable and G is n-colorable, then G is H.Free.