Edge positions in framed graphs #
Graph.edgeList enumerates the edges of the existing Graph.induced, discarding loops,
undeclared endpoints and repeated edges in either orientation. positions and ofPositions
relate edge positions to Mathlib subgraphs. The latter is spanning, so incomplete matchings
must restrict its vertex set to their covered vertices.
These declarations and proofs were extracted from Graph.PerfectMatching for constructive
matching algorithms, preserving the original public names and normalization conventions.
cover_positions now also applies at each covered vertex of an incomplete matching.
exists_getD_edgeList_of_adj supplies a valid edge position directly from adjacency,
so coverage, edge-cardinality and legacy counting proofs share the same orientation witness.
The edge list #
Distinct positions of the edge list hold distinct edges, in either orientation.
Exactly one selected incident edge at every declared vertex gives a perfect matching.
A covered vertex of any matching has exactly one incident original edge position.