The Nash-Williams–Tutte tree packing theorem and Nash-Williams' arboricity theorem #
For a finite simple graph G on V:
NashWilliamsTutte.tree_packing: Nash-Williams (1961), Tutte (1961).Ghaskedge-disjoint spanning trees if and only if, for every partition ofVintomparts, at leastk (m - 1)edges ofGjoin different parts. A partition is given by a mapf : V → V(its parts are the nonempty fibres,#(univ.image f)of them), and the edges ofGjoining different parts are those ofG ⊓ (⊤ : SimpleGraph V).comap f.NashWilliamsTutte.arboricity: Nash-Williams (1964). The edges ofGcan be covered bykforests if and only if every nonempty vertex setSspans at mostk (#S - 1)edges.NashWilliamsTutte.exists_trees_of_isEdgeConnected: corollary. A2k-edge-connected finite graph (Mathlib'sSimpleGraph.IsEdgeConnected) haskedge-disjoint spanning trees.
Spanning trees are subgraphs T ≤ G on the same vertex type with Mathlib's SimpleGraph.IsTree;
forests are subgraphs with SimpleGraph.IsAcyclic; edge-disjointness is Disjoint in the lattice
of simple graphs.
Nash-Williams–Tutte tree packing theorem. A finite graph on a nonempty vertex type has k
pairwise edge-disjoint spanning trees if and only if, for every map f : V → V, the number of
edges of G whose endpoints have different images under f is at least k times the number of
nonempty fibres of f minus one.
Nash-Williams' arboricity theorem. The edges of a finite graph can be covered by k
forests if and only if every nonempty set S of vertices spans at most k (#S - 1) edges.
Corollary. A finite 2k-edge-connected graph on a nonempty vertex type has k pairwise
edge-disjoint spanning trees.