Walks and edge cuts #
This file relates Mathlib's edge cuts Graph.edgeCut to edge-labelled multigraph walks.
A walk that starts inside a vertex set and ends outside it traverses an edge of the cut, so a
vertex set is closed under reachability exactly when its edge cut is empty. In particular, the
set of vertices reachable from a point has empty edge cut, and every vertex set separating two
mutually reachable vertices has a nonempty edge cut. Deleting edges removes them from every
edge cut, and loops never cross a cut. In a graph on two distinct vertices, the edge cut of
either vertex consists of all edges.
An actual edge crosses a cut exactly when its unordered pair of ends crosses the corresponding
set of actual vertices.
If the edge cut of T is contained in that of S, then the subgraph induced on S has empty
edge cut along T; conversely when T ⊆ S.
These facts are the interface between cut-based and walk-based descriptions of connectivity, used for instance to characterize bridges by deletion.
For a simple graph, an edge of Graph.ofSimpleGraph G crosses a vertex set exactly when the
corresponding unordered pair crosses it.
Implementation notes #
Mathlib does not expose the body of Graph.IsEdgeCut and provides only elimination lemmas for it,
so no edge cut can be produced outside its defining module. Graph.isEdgeCut_iff supplies the
missing characterization; its proof unfolds the definition through import all.
The boundary of the vertices reachable from x after deleting F is contained in F.
Thus every edge separator contains an edge cut separating the same vertices.
Edge cuts of induced subgraphs #
An edge of Graph.ofSimpleGraph G belongs to the edge cut of S exactly when its unordered
pair of endpoints crosses S.