Componentwise numerical genus zero is equivalent to an actual polygonal
embedding realizing the supplied literal clockwise rotation, when all incident
endpoints are declared. Both general directions are proved below.
Topological taming, indexed FZ versus DK set conventions and
source comparison, frozen-switch completeness, Hanani–Tutte recognition and the
full #3091 endpoint remain open.
The ordinary imports at the start of this chapter include
CslibFrontier.Computability.Complexity.Problems.Graph.PolygonalDrawing.Germs,
CslibFrontier.Computability.Complexity.Problems.Graph.PolygonalDrawing.Neighborhood,
CslibFrontier.Computability.Complexity.Problems.Graph.PolygonalDrawing.Points,
CslibFrontier.Computability.Complexity.Problems.Graph.PolygonalDrawing.Star and
CslibFrontier.Computability.Complexity.Problems.Graph.ClosedPassages.Loop.
They expose the following clients without import all.
Cslib.Polygonal.Route lists bends + 2 complex points and has bends + 1
actual real affine segments. eval i t tests every real t in [0,1];
support is their union. IsSimple permits equal global parameters at adjacent
junctions and first/last endpoint closure, excluding all other contacts.
A one-segment loop therefore fails simplicity:
Graph.PolygonalDrawing G uses the existing natural-number vertex names and
listed edge occurrences. Its data are vertex coordinates, one route per edge
position and endpoint equations; it stores no numerical genus or geometry
provider. IsEmbedding requires distinct declared names to have distinct points,
simple routes, declared-vertex contacts only at their corresponding ends, and
contacts of different routes only at common named ends. Undeclared names are
unconstrained. Repeated declarations name the same point; identical edge pairs
keep separate routes; a loop retains two end parameters and outgoing germs.
star_isEmbedding n works at every degree, including zero. It asserts no
arbitrary-degree star realization theorem. points_realizes covers every
rotation of the edgeless graph, including sparse and repeated declarations.
For any embedding, equal directions at one vertex force equal darts, even
when the darts are the two ends of one loop:
IsEmbedding.exists_vertex_ball hD v hv constructs a positive-radius ball
about a declared vertex. Every route segment meeting that ball is a first
segment starting at v or a last segment ending at v. The proof separates
finitely many compact real segments internally; it supplies neither a
topological disk theorem nor a vertex-splitting patch.
PolygonalDrawing.Realizes r is separate from IsEmbedding. It requires
nonzero germs, injective incident directions and, for distinct incident
a,b,c, the literal equivalence
sbtw (D.direction c) (D.direction b) (D.direction a) ↔
b ∈ r.rotationInterval a c. Reversing Mathlib's counterclockwise angle
betweenness makes forward rotate clockwise in the fixed complex plane;
reflection is not allowed. The existing faceNext = rotate⁻¹ ∘ reversal
(σ⁻¹ α) retains its right-side face convention.
The extracted ClosedPassages.loop e he pairs the two actual ends of a listed
loop, with support fun i => decide (i = e). The numerical noninterlacing
corollary retains the explicit declared-endpoint guard hG:
This needs no connectedness or degree bound and constructs no drawing.
CslibFrontierTests/PolygonalDrawing.lean checks actual bridge, closed-loop and
parallel-digon realizations, star embeddings at degrees 0, 5 and 20, sparse
isolates, clockwise sign and reverse-order rejection.
CslibFrontierTests/PolygonalDrawingAudit.lean audits stored declarations and
environment linters; CslibFrontierTests/RotationIntersection.lean uses the
extracted loop constructor in finite parity clients. These are original
geometric constructions, with no DK, FKP or Hanani–Tutte formalization,
coordinate bit bound or native runtime claim.
Import CslibFrontier.Computability.Complexity.Problems.Graph.RotationSystem.Realization.Bouquet.
Every listed edge must be a loop. Declared endpoints and numerical genus zero
then suffice for an actual embedding realizing the exact given clockwise
rotation, with no noncrossing or geometric provider premise:
PolygonalDrawing.bouquet r hloop is the explicit drawing. Each loop has
five affine segments, with radial ports ranked in literal clockwise order.
Numerical nonalternation supplies disjoint or nested port intervals; the
construction proves actual real-parameter nonintersection internally.
CslibFrontierTests/PolygonalBouquet.lean also checks a nonvacuous unbounded-degree
family, nested/disjoint loops, interlacing obstruction and reversed-order
rejection. This loop-only theorem supplies the base of the general forward
construction. No coordinate-bit or native-runtime claim is made.
2.17.2. General Forward Realization and Restoration🔗
Ordinary import
CslibFrontier.Computability.Complexity.Problems.Graph.RotationSystem.Realization.Forward
gives the provider-free theorem for every supplied rotation:
There is no degree, connectedness, loop, bridge, cofaciality, rational-coordinate
or geometric-provider premise. In particular, every nonloop star degree is
included, using the numerical star API imported at the start of this chapter:
The proof reindexes a nonloop occurrence, contracts it, recurses on edge count,
restores it and transports back to the exact original edge/declaration lists.
Ordinary Realization.Restoration imports also expose complete restoration of
any supplied actual contracted drawing:
The radius, centers, separated fans and exact connector insertion gaps are
chosen internally. Exterior pieces remain, and both ends of a target loop
reattach independently. Empty retained blocks keep their prescribed slots;
all real contacts, simplicity, declared points and clockwise triples are proved.
The generic rank API lives in RotationSystem.IntervalOrder; ordinary
Realization.BouquetOrder imports continue to expose it without aliases.
CslibFrontierTests/PolygonalForward.lean applies the theorem to bridges,
parallel occurrences, endpoint loops, untouched components, sparse repeated
declarations, isolates and emptiness. PolygonalContractionSplit.lean applies
automatic restoration to an actual drawing with two independent loop ends.
PolygonalJoin, PolygonalRestriction and PolygonalSplitFans check local APIs.
Ordinary import
CslibFrontier.Computability.Complexity.Problems.Graph.RotationSystem.Realization.Converse
supplies the arbitrary finite PL direction, on the existing genuine drawing
and numerical models:
There is no genus, face-color, disk, Jordan or HT provider. The proof retains
all real segment parameters, both loop ends, indexed parallel occurrences,
arbitrary degree, sparse/duplicate declarations, disconnected components and
points. Endpoint declarations remain explicit.
The actual intermediate colors are also available to clients:
Right-side ray values transport through actual segments and bends, then through
the empty literal clockwise vertex sectors. They descend to the existing face
quotient. The indexed-dual/lifting exactness criterion supplies Euler equality;
its face-color premise is discharged internally in the final theorem.
Ordinary Realization.Equivalence imports combine the general endpoints:
Use .mp hr for the forward construction and .mpr ⟨D, hD, hR⟩ for the
converse. CslibFrontierTests/PolygonalEquivalence.lean checks both directions
through this ordinary import on nonloop stars at arbitrary degree.
A failure of numerical genus excludes that specific realized rotation:
This does not assert nonplanarity of the underlying graph. The complete
CslibFrontierTests/PolygonalConverse.lean applies the endpoint to actual loop,
bridge, parallel-digon and degree-five clockwise star drawings; it also checks
nonzero loop face colors, sparse/duplicate points, emptiness and a torus
rotation obstruction. PolygonalConverseAudit.lean records scoped stored
declaration/axiom/environment checks.
These are original finite PL proofs. Arbitrary topological-arc taming,
indexed FZ versus DK set source comparison, frozen-switch completeness,
Hanani–Tutte, bare recognition and full #3091 remain open. No coordinate-bit,
runtime/P bound or CSP dichotomy is claimed.