Rotation systems of listed multigraphs #
A dart is an edge-list position and one of its two ends. Loops retain two different darts; parallel edges retain their different list positions. A rotation permutes darts in one cycle at each incident vertex. This extra structure retains argument order when the graph comes from CSP incidences. It does not impose a degree bound.
The face successor reverses an edge and then takes the inverse vertex rotation. Faces are all its orbits, including singleton orbits. Isolated declared vertices have no darts and are not represented by this face quotient. No genus-zero condition, geometric realization or planarity recognition theorem is asserted here.
Main definitions #
Cslib.Complexity.Graph.Dart: indexed ends of listed edges.Cslib.Complexity.Graph.RotationSystem: one rotation cycle per nonempty vertex fiber.Cslib.Complexity.Graph.RotationSystem.faceNext: the face successor permutation.Cslib.Complexity.Graph.RotationSystem.Face: face orbits, including fixed points.
A listed edge occurrence together with a choice of endpoint.
Instances For
The endpoint of an indexed edge end; false selects the first endpoint.
Instances For
Reverse an edge while retaining its edge-list occurrence.
Instances For
Edge reversal as a permutation of all indexed ends.
Instances For
There are two darts per listed edge, counting loops and parallel occurrences.
A cyclic order of the darts at each incident vertex. No cyclic start point is chosen.
- rotate : Equiv.Perm G.Dart
One successor permutation on all darts.
Its orbits are exactly the nonempty endpoint fibers.
Instances For
Rotating around a vertex keeps that endpoint.
Reverse an edge, then turn backwards around its new endpoint.
Instances For
All face orbits, including the singleton orbits omitted by nontrivial cycle factors.
Instances For
Reverse every vertex rotation, corresponding to reversal of the global orientation.