Finite endpoint multigraphs with loops #
Edges are labelled objects with two numbered half-edges. The endpoints may coincide, so loops are represented without quotienting or special cases. Degree and parity always count half-edge incidences; consequently a loop contributes two incidences at its vertex.
Occurrences of v in the cyclic transition word.
Instances For
Equations
- T.instFintypeOccurrence v = Subtype.fintype fun (i : T.Pos) => T.vertexAt i = v
The two edge ends paired at an occurrence of a transition vertex.
Side 0 is the departing end of the current edge; side 1 is the arriving end of the previous
edge. The two numbered half-edges remain distinct even when the underlying edge is a loop.
Equations
Instances For
A transition occurrence with a chosen side, mapped to the corresponding incident half-edge.
Equations
- T.occurrenceSideToHalfEdge v os = ⟨T.transitionHalfEdge os.1 os.2, ⋯⟩
Instances For
The underlying map from a position and transition side to an edge end.
Equations
Instances For
The inverse map: a departure end belongs to its own position, and an arrival end belongs to
side 1 of the next position.
Equations
Instances For
Edge positions with a choice of transition side are exactly all edge ends.
Equations
- T.positionSideEquivHalfEdge = { toFun := T.positionSideToHalfEdge, invFun := T.halfEdgeToPositionSide, left_inv := ⋯, right_inv := ⋯ }
Instances For
The two sides of all occurrences of v are exactly the half-edges incident with v.
Equations
Instances For
The degree at v is twice its number of occurrences in the transition word.
The incidence indicator of an edge at a vertex, with both edge ends counted.
Equations
Instances For
An edge set is even when every vertex has even degree in the induced multigraph.
Equations
- G.IsEvenEdgeSet F = ∀ (v : V), ∑ e ∈ F, G.edgeIncidence v e = 0
Instances For
A (multigraph) cycle is a nonempty inclusion-minimal even edge set.
This includes singleton loops and pairs of parallel non-loop edges.
- edges : Finset E
The edges of the cycle.
A cycle is nonempty.
- even : G.IsEvenEdgeSet self.edges
Every vertex has even degree in the cycle.
The edge set is inclusion-minimal among nonempty even edge sets.
Instances For
Both incidences of a loop cancel in characteristic two.
A loop is a one-edge circuit in the minimal-even-set definition.
Instances For
Every finite even edge set is an edge-disjoint union of multigraph cycles. The displayed equation records edge multiplicities and is stronger than mere equality of unions.
A partition of all edge objects into circuits.
The list of circuits partitioning the edges.
- coveredOnce (e : E) : (List.filter (fun (C : G.Cycle) => decide (e ∈ C.edges)) self.circuits).length = 1
Every edge object lies in exactly one circuit.
Instances For
A circuit decomposition is compatible with an Euler tour when no one circuit contains both edge objects of a transition.
Equations
Instances For
The four-colour certificate produced by the cyclic-word part of the proof.
- color : E → Color
The colour assigned to each edge object.
Consecutive edges of the tour receive different colours.
- color_even (z : Color) : G.IsEvenEdgeSet {e : E | self.color e = z}
Each colour class is an even edge set.
Instances For
Every compatible four-colouring yields a compatible circuit decomposition.