Public API map #
This file is the preferred first Lean file to read. It re-exports the completed proof and documents its main interfaces.
Eval input #
EvalSurfaceChartBoundaryInvariantchartBoundaryInvariant_of_invarianceOfDomainevalSurfaceeval_surface_hypotheses- the typeclass hypothesis block used by
classification_of_surfaces
Moise--Radó triangulation route #
GeometricTriangulationandGeometricRealization(Moise/GeometricTriangulation.lean)TriangleFamily.FaceAdjacentAtVertex,TriangleFamily.IsStrongVertexStarConnected, and the strong-to-legacy and strong-to-dual connectivity bridges (Moise/GeometricTriangulation.lean)PlaneComplex,IsPLOn,IsPLOnSet(Moise/PlaneComplex.lean)IntrinsicTwoComplex, its faithfulSubdivision,IsPLMap, andPLHomeomorph(Moise/IntrinsicComplex.lean)- intrinsic one-skeleton polygonal replacement, exact finite edge complexes, and embedding
(
Moise/IntrinsicGraphApproximation.lean,Moise/IntrinsicGraphPL.lean) - standard plane models, exact polygonal face-boundary cycles, certified relative PL fillings,
and faithful arbitrarily fine midpoint subdivisions (
Moise/IntrinsicFaceModel.lean,Moise/IntrinsicFaceBoundary.lean,Moise/IntrinsicFaceExtension.lean,Moise/IntrinsicFaceFilling.lean,Moise/IntrinsicCellwiseExtension.lean,Moise/IntrinsicFineSubdivision.lean) - strongly positive frontier controls and continuous vanishing-error gluing
(
Moise/FrontierGlue.lean) PolygonalCircle,polygonal_jordan, the crossingindex(Moise/PolygonalJordan.lean)closedRegion_is_polyhedron,polygonal_schoenflies_rel(Moise/PolygonalSchoenflies.lean)pl_approximation_two_manifold(Moise/PLApproximation.lean)JoinedByBrokenLine(Moise/BrokenLine.lean)MoiseChart,MoiseChart.BoundaryFaithful,exists_moiseChart_core_mem_nhds(Moise/ChartExtraction.lean)PartialTriangulation,RadoInvariant,moise_finite_chart_cover,moise_induction_step,moise_triangulation_of_boundaries(Moise/ChartInduction.lean)nonempty_geometricTriangulation_iff_explicit,moise_triangulation, andmoise_triangulation_explicit(Moise/GeometricTriangulation.lean,Triangulation.lean)- anchors and countermodels:
Moise/Anchors.lean,Moise/Countermodels.lean
The triangulation route uses the faithful geometric and intrinsic-complex APIs above. Superseded experimental APIs are not part of the public surface; git history remains available for historical implementations.
Shared triangulation and cell-complex boundary #
OrientedEdgeFiniteSurfaceTriangulation(ledgered; fed by theGeometricTriangulationbridge)compact_eval_surface_finitely_triangulableFiniteSurfaceTriangulation.toCellComplexFiniteSurfaceTriangulation.toFiniteCyclicPresentationFiniteSurfaceTriangulation.toFiniteCyclicPresentation_isSurfaceValidFiniteSurfaceTriangulation.toFiniteCyclicPresentation_isConnectedcompactEvalSurfaceFiniteCyclicPresentationcompact_eval_surface_has_valid_connected_finiteCyclicPresentationGeometricTriangulation.polygonalRealizationHomeomorphGeometricTriangulation.polygonalRealization_homeomorphic_of_surfacecompact_eval_surface_polygonalRealization_certificatescompact_eval_surface_polygonalRealization_homeomorphic_surface
The cell-complex adapter preserves the certified triangle-boundary incidence. The faithful finite-cyclic handoff enumerates that incidence directly and identifies its polygonal quotient with the geometric triangulation.
Shared finite surface cell complexes #
SurfaceCellComplexSurfaceCellComplex.BoundaryOccurrenceSurfaceCellComplex.IsBoundaryDartSurfaceCellComplex.IsSurfaceValidSurfaceCellComplex.FaceAdjacentSurfaceCellComplex.IsConnectedSurfaceCellComplex.SignedDartSurfaceCellComplex.oneFacePresentationSurfaceCellComplex.EdgeOrbitSurfaceCellComplex.edgeOrbitSurfaceCellComplex.signedDartEquivSurfaceCellComplex.finSignedDartEquivSurfaceCellComplex.normalizedBoundary
SurfaceCellComplex contains only finite incidence data. Its topology is the faithful
occurrence-indexed PolygonalRealization described below.
Finite cyclic presentation layer #
FiniteCyclicPresentationFiniteCyclicPresentation.inverseWordFiniteCyclicPresentation.OrientedFaceFiniteCyclicPresentation.orientedBoundaryFiniteCyclicPresentation.edgeMultiplicityFiniteCyclicPresentation.IsSurfaceValidFiniteCyclicPresentation.FaceAdjacentFiniteCyclicPresentation.IsConnectedFiniteCyclicPresentation.emptyWordSphereFiniteCyclicPresentation.twoMonogonSphereFiniteCyclicPresentation.IsEmptyWordSphereFiniteCyclicPresentation.IsGallierValidFiniteCyclicPresentation.EdgeRelabelingFiniteCyclicPresentation.EdgeRelabeling.dartEquivFiniteCyclicPresentation.PresentationIsoFiniteCyclicPresentation.PresentationIso.isSurfaceValid_iffFiniteCyclicPresentation.PresentationIso.isConnected_iffFiniteCyclicPresentation.BoundaryOccurrenceFiniteCyclicPresentation.BoundaryPairingFiniteCyclicPresentation.PolygonalRealizationFiniteCyclicPresentation.RealizationEquivDataFiniteCyclicPresentation.PolygonallyEquivalentFiniteCyclicPresentation.ofOneFaceWordFiniteCyclicPresentation.ofOneFaceWord_isSurfaceValidFiniteCyclicPresentation.ofOneFaceWord_isConnectedFiniteCyclicPresentation.SubdivisionStepFiniteCyclicPresentation.SubdividesFiniteCyclicPresentation.HasCommonSubdivisionFiniteCyclicPresentation.MoveEquivalentFiniteCyclicPresentation.HasCommonSubdivision.polygonallyEquivalentFiniteCyclicPresentation.SignedPresentationIso.preHomeomorphFiniteCyclicPresentation.SignedPresentationIso.realizationHomeomorphFiniteCyclicPresentation.SignedPresentationIso.polygonallyEquivalentPolygonCell.radialHomeomorphPolygonCell.radialHomeomorph_ofCircleGeometricTriangulation.toFiniteCyclicPresentationGeometricTriangulation.toFiniteCyclicPresentation_valid_and_connectedFiniteCyclicPresentation.SignedPresentationIsoFiniteCyclicPresentation.SignedPresentationIso.ofPresentationIsoFiniteCyclicPresentation.SignedPresentationIso.orientedFaceEquivFiniteCyclicPresentation.SignedPresentationIso.orientedBoundary_rotatedFiniteCyclicPresentation.SignedPresentationIso.isSurfaceValid_iffFiniteCyclicPresentation.SignedPresentationIso.isConnected_iffFiniteCyclicPresentation.SignedPresentationIso.isGallierValid_iffFiniteCyclicPresentation.P1.expandDartFiniteCyclicPresentation.P1.expandWordFiniteCyclicPresentation.P1.contractWordFiniteCyclicPresentation.P1.expandDart_flipFiniteCyclicPresentation.P1.expandWord_inverseWordFiniteCyclicPresentation.P1.expandWord_isRotated_iffFiniteCyclicPresentation.P1.expandFiniteCyclicPresentation.P1.expand_isSurfaceValidFiniteCyclicPresentation.P1.expand_isConnectedFiniteCyclicPresentation.P1.expand_isGallierValidFiniteCyclicPresentation.P1SubdivisionFiniteCyclicPresentation.P1Subdivision.isGallierValidFiniteCyclicPresentation.P1Subdivision.preservesPolygonalRealizationFiniteCyclicPresentation.P2CutFiniteCyclicPresentation.P2Cut.canonicalFiniteCyclicPresentation.P2Cut.IsNondegenerateFiniteCyclicPresentation.P2Cut.swapFiniteCyclicPresentation.P2Cut.flipFiniteCyclicPresentation.P2.splitFiniteCyclicPresentation.P2.split_orientedBoundary_selectedFiniteCyclicPresentation.P2.split_orientedBoundary_rightFiniteCyclicPresentation.P2.edgeMultiplicity_split_castSuccFiniteCyclicPresentation.P2.edgeMultiplicity_split_freshEdgeFiniteCyclicPresentation.P2.split_isSurfaceValidFiniteCyclicPresentation.P2.split_isConnectedFiniteCyclicPresentation.P2.split_isGallierValidFiniteCyclicPresentation.P2.split_emptyWordSphereFiniteCyclicPresentation.P2SubdivisionFiniteCyclicPresentation.P2Subdivision.isGallierValidFiniteCyclicPresentation.P2Subdivision.preservesPolygonalRealizationFiniteCyclicPresentation.subdivisionStep_preservesPolygonalRealizationFiniteCyclicPresentation.Subdivides.toPolygonallyEquivalentFiniteCyclicPresentation.HasCommonSubdivision.toPolygonallyEquivalentFiniteCyclicPresentation.Dyck.hasCommonSubdivisionFiniteCyclicPresentation.Dyck.polygonallyEquivalentFiniteCyclicPresentation.UnorientedPresentationIsoFiniteCyclicPresentation.UnorientedPresentationIso.realizationHomeomorphFiniteCyclicPresentation.Crosscap.polygonallyEquivalentFiniteCyclicPresentation.ValidPresentationFiniteCyclicPresentation.NormalizationStepFiniteCyclicPresentation.NormalizationEquivalentFiniteCyclicPresentation.NormalizationEquivalent.ofSubdividesFiniteCyclicPresentation.NormalizationEquivalent.polygonallyEquivalentFiniteCyclicPresentation.P1.contractionNormalizationEquivalentFiniteCyclicPresentation.P2.mergeNormalizationEquivalentFiniteCyclicPresentation.P2.oneSidedMergeNormalizationEquivalentFiniteCyclicPresentation.P2.oneSidedPolygonallyEquivalentFiniteCyclicPresentation.Dyck.normalizationEquivalentFiniteCyclicPresentation.Crosscap.normalizationEquivalentFiniteCyclicPresentation.Dyck.negativeNormalizationEquivalentFiniteCyclicPresentation.Crosscap.negativeNormalizationEquivalentFiniteCyclicPresentation.Crosscap.adjacentNormalizationEquivalentFiniteCyclicPresentation.Handle.normalizationEquivalentFiniteCyclicPresentation.HandleToCrosscaps.normalizationEquivalentFiniteCyclicPresentation.LoopGrouping.normalizationEquivalentFiniteCyclicPresentation.Cancellation.normalizationEquivalentFiniteCyclicPresentation.Cancellation.Context.normalizationEquivalentFiniteCyclicPresentation.FaceMerge.normalizationEquivalentFiniteCyclicPresentation.FaceMerge.ContextMerge.normalizationEquivalentFiniteCyclicPresentation.canonicalValidPresentationFiniteCyclicPresentation.NormalizationResultFiniteCyclicPresentation.NormalizationResult.polygonallyEquivalentFiniteCyclicPresentation.NormalizationResult.realizationHomeomorphFiniteCyclicPresentation.normalizeConnectedToCanonicalFiniteCyclicPresentation.exists_admissible_normalForm_polygonallyEquivalentFiniteCyclicPresentation.Reduction.exists_distinct_faceAdjacentFiniteCyclicPresentation.Reduction.exists_oppositelyDisplayedAdjacentFacesFiniteCyclicPresentation.Reduction.mergeNormalizationEquivalentFiniteCyclicPresentation.Reduction.mergeTarget_faces_length
This packed layer retains only finite signed face words. A signed presentation isomorphism may
relabel faces, rotate individual face boundaries, and independently reverse the chosen
orientation of every renamed edge. Reversal bits compose by exclusive-or. Validity, edge
multiplicities, and connectivity are invariant under these operations. Each stored face also has
two non-mutating oriented views: the negative view reverses the word and flips every dart, and
signed presentation isomorphisms transport either view up to cyclic rotation. The original
orientation-preserving PresentationIso embeds into this general layer.
The Gallier--Xu normalization recursion is complete at this interface. Every valid connected
finite-cyclic presentation reaches the single existing NormalForm.canonicalPresentation for an
Eval-admissible normal form, through a NormalizationEquivalent chain and hence a
PolygonallyEquivalent proof. The terminal argument orders boundary blocks, converts handles to
crosscaps exactly when a crosscap is present, normalizes edge orientations, and positionally
relabels the result to the existing canonical words.
Gallier--Xu's exceptional one-face, zero-edge, empty-boundary sphere is represented explicitly by
emptyWordSphere, without weakening ordinary IsSurfaceValid. IsGallierValid adds exactly its
signed-isomorphism class as a disjunct. The P2-expanded twoMonogonSphere, with boundaries d
and d⁻¹, satisfies ordinary validity and connectivity.
P1.expand implements Gallier--Xu's global edge subdivision exactly: the canonical positive
occurrence becomes b c, while its negative occurrence becomes c⁻¹ b⁻¹. Contraction is a
left inverse and expansion preserves and reflects cyclic rotation. Face positions are unchanged,
and both subdivided edges inherit the old edge multiplicity. The construction conditionally
preserves ordinary validity, connectivity, and IsGallierValid; these hypotheses are not
bundled into the syntactic P1Subdivision relation. The positive orientation is canonical, while
the relation's signed target isomorphism supports renamed and reoriented target edges.
The finite cyclic quotient adapter realizes those face words directly as a disjoint union of
standard polygonal disks modulo occurrence-level side pairings.
P2.split implements Gallier--Xu's cyclic oriented face-cut formula. Its raw cut pieces may be
empty so the same construction expresses the exceptional empty-word-sphere conversion.
The selected child has displayed boundary left d, the appended child has displayed boundary
d⁻¹ right, and both are stored in the cut's chosen traversal orientation. Flipping the cut
reverses its selected traversal and swaps its two pieces. The fresh edge has multiplicity two,
old edge multiplicities are preserved, and validity, connectivity, and Gallier validity survive. The
exceptional empty-word sphere presentation splits definitionally to the
twoMonogonSphere presentation. P2Subdivision is the corresponding syntactic relation for
nondegenerate ordinary face cuts, together with that exceptional sphere conversion, up to signed
presentation isomorphism of the target.
The generic Gallier--Xu Dyck rewrite
a U V a⁻¹ X ~ b V U b⁻¹ X is now an explicit common-subdivision theorem. Its two P2 splits
are related by a signed isomorphism exchanging the retained distinguished edge with the fresh
cutting edge. Consequently the rewrite preserves faithful polygonal realizations for ordinary-valid
source and target presentations.
Gallier--Xu's cross-cap rewrite a X a Y ~ b b Y⁻¹ X reverses one child face before
the second P2 merge. UnorientedPresentationIso records that independent face-traversal choice
explicitly, and realizes it by cyclic disk rotations and reflections. Because the current
IsSurfaceValid face-uniqueness clause is intentionally stated for stored orientations, this
broader comparison takes ordinary-validity proofs for both endpoints rather than claiming to
transport validity automatically.
NormalizationEquivalent is the stable chain API over validity-bundled presentations. Its
primitive steps are common subdivisions, unoriented comparisons in either direction, and the
proved one-sided-degenerate P2 comparison; every chain produces a faithful
polygonal-realization homeomorphism. Both generic pseudo-rewrites are available as nodes in this
closure. The derived-chain layer also exposes the opposite-orientation Dyck and crosscap rules,
the full three-Dyck handle extraction, the four-rewrite conversion of a handle plus a crosscap
into three crosscaps, and the loop-grouping specialization; all intermediate validity witnesses
are constructed internally. Exact inverse-pair cancellation and two-face merging are available
both as isolated word rules and in multi-face contexts with untouched faces. Their transported
forms isolate arbitrary edge naming, face order, traversal orientation, and cyclic starting
points behind signed presentation isomorphisms.
Validity-safe marked merging now gives a total face-count recursion from every connected valid
presentation to one face. A second well-founded recursion cancels all cyclic adjacent inverse
pairs—including the retained merge markers—and lands either at the exact canonical sphere node
or at a pair-reduced valid one-face word.
Polygonal quotient foundation #
PolygonCellPolygonCell.sidePolygonCell.iUnion_range_sidePolygonGluing.PreRealizationPolygonGluing.SidePolygonGluing.IdentificationPolygonGluing.setoidPolygonGluing.RealizationPolygonGluing.realizationCongrFiniteCyclicPresentation.edgeMultiplicity_eq_card_edgeOccurrencesFiniteCyclicPresentation.IsSurfaceValid.exists_unique_partnerFiniteCyclicPresentation.IsSurfaceValid.exists_identification_sourceFiniteCyclicPresentation.polygonalMk_pairing_eqSurfaceCellComplex.BoundaryOccurrenceSurfaceCellComplex.BoundaryPairingSurfaceCellComplex.OccurrencePairingValidSurfaceCellComplex.wordEdgeOccurrencesSurfaceCellComplex.oneFacePresentation_isSurfaceValidSurfaceCellComplex.oneFacePresentation_occurrencePairingValidSurfaceCellComplex.PolygonalRealizationSurfaceCellComplex.mem_polygonalIdentifications_iff_exists_occurrencesSurfaceCellComplex.oneFaceOccurrenceSurfaceCellComplex.oneFace_mem_polygonalIdentifications_iffComplex.ClosedUnitDisc.bdyPtOfReal_add_intSurfaceCellComplex.not_isBoundaryDart_of_occurs_at_neSurfaceCellComplex.swapIdentificationSurfaceCellComplex.swapIdentification_mem_polygonalIdentificationsSurfaceCellComplex.oppositeDirectionIdentification_mem_of_get_pos_negquotEqvGenHomeomorpheqvGenQuotientCongrRaweqvGen_map_of_generator_to_eqvGeneqvGen_iff_of_generator_mapseqvGenQuotientCongrRawOfGeneratorMapsPolygonCell.closedUnitDiscHomeomorphPolygonCell.closedUnitDiscHomeomorph_sidePolygonGluing.oneFacePreRealizationHomeomorphPolygonGluing.oneFacePreRealizationHomeomorph_sidePointPolygonCell.conjHomeomorphPolygonCell.conj_side_symm_monogonPolygonCell.hemisphereHeightPolygonCell.upperHemispherePolygonCell.lowerHemispherePolygonCell.upperHemisphere_side_eq_lowerHemisphere_side_symmPolygonCell.sphereDiskPointSurfaceCellComplex.oneFacePolygonalPreRealizationHomeomorphSurfaceCellComplex.oneFacePolygonalPreRealizationHomeomorph_sidePointSurfaceCellComplex.sphereBoundaryOccurrence_eqSurfaceCellComplex.mem_sphere_polygonalIdentifications_iffSurfaceCellComplex.spherePreMapSurfaceCellComplex.spherePreMap_eq_of_generatorSurfaceCellComplex.spherePreMap_eq_iff_gluingRelSurfaceCellComplex.sphereQuotientMapSurfaceCellComplex.spherePolygonalRealizationHomeomorph
This generic layer supports disk cells with any number of marked sides and generated side
identifications. The additive cell-complex adapter now maps boundary occurrences to polygon sides
and, given incidence validity plus nonempty face boundaries, generates all compatible internal
pairings. Edge-orbit counts and inverse-invariance of boundary status are derived from
IsSurfaceValid, not repeated as adapter assumptions. The standard one-face examples have
incidence- and occurrence-validity witnesses, including the corrected length-six annulus word.
The representative-carrier bridge identifies each indexed disk, and hence every one-face
pre-realization, with the exact vendored closed unit disk. It
records the side-coordinate formula, integral-period boundary invariance, and closure-aware
quotient congruence from the polygonal generated setoid to a raw relation quotient. The one-face
membership theorem characterizes compatible ordered pairings by two distinct boundary-word
positions with the required status and dart equalities. Forward canonical block positions and
exhaustive raw-pairing classifications for both canonical families are complete. Exact carrier
coordinates, including
the reversed boundary index, send all five canonical pairing families into the corresponding
trusted equivalence closures. Exhaustive forward maps and constructor-by-constructor reverse maps
therefore identify both generated relations, and the carrier descends to homeomorphisms from the
canonical polygonal realizations to the exact trusted Eval quotients.
For the sphere branch, the compatible upper/lower hemisphere map descends from the two monogons;
its kernel is exactly the generated side-gluing relation, and compact-to-Hausdorff upgrades the
resulting bijection to a homeomorphism with SphereRepresentative.
Gallier-Xu tail #
NormalForm.OrientableEdgeNormalForm.NonOrientableEdgeNormalForm.orientableBoundaryWordNormalForm.nonOrientableBoundaryWordNormalForm.orientableHandlePositionNormalForm.orientableBoundaryPositionNormalForm.nonOrientableCrosscapPositionNormalForm.nonOrientableBoundaryPositionNormalForm.orientableBoundaryWord_lengthNormalForm.nonOrientableBoundaryWord_lengthNormalForm.orientableBoundaryWord_edge_occurrencesNormalForm.nonOrientableBoundaryWord_edge_occurrencesNormalForm.canonicalPresentationNormalForm.canonicalPresentation_isSurfaceValidNormalForm.canonicalPresentation_isConnectedNormalForm.canonicalPresentation_isGallierValidFiniteCyclicPresentation.ofOneFaceWordRealizationHomeomorphNormalForm.canonicalSphereRealizationHomeomorphNormalForm.canonicalOrientableRealizationHomeomorphNormalForm.canonicalNonOrientableRealizationHomeomorphNormalForm.orientableCellComplex_isSurfaceValidNormalForm.nonOrientableCellComplex_isSurfaceValidNormalForm.orientableCellComplex_isConnectedNormalForm.nonOrientableCellComplex_isConnectedNormalForm.orientableCellComplex_occurrencePairingValidNormalForm.nonOrientableCellComplex_occurrencePairingValidNormalForm.nonOrientableCrosscapIdentificationNormalForm.nonOrientableCrosscapIdentificationReverseNormalForm.nonOrientableBoundaryIdentificationNormalForm.nonOrientableBoundaryIdentificationReverseNormalForm.mem_nonOrientable_polygonalIdentifications_iffNormalForm.orientableHandleAIdentificationNormalForm.orientableHandleAIdentificationReverseNormalForm.orientableHandleBIdentificationNormalForm.orientableHandleBIdentificationReverseNormalForm.orientableBoundaryIdentificationNormalForm.orientableBoundaryIdentificationReverseNormalForm.mem_orientable_polygonalIdentifications_iffNormalForm.orientableOccurrencePointNormalForm.nonOrientableOccurrencePointNormalForm.orientableCarrier_occurrencePointNormalForm.nonOrientableCarrier_occurrencePointNormalForm.orientableBoundary_trustedSource_eq_carrier_c_negNormalForm.orientableBoundary_trustedTarget_eq_carrier_c_posNormalForm.nonOrientableBoundary_trustedSource_eq_carrier_c_negNormalForm.nonOrientableBoundary_trustedTarget_eq_carrier_c_posNormalForm.orientableCarrier_handle_a_eqvGenNormalForm.orientableCarrier_handle_b_eqvGenNormalForm.orientableCarrier_boundary_c_eqvGenNormalForm.nonOrientableCarrier_crosscap_a_eqvGenNormalForm.nonOrientableCarrier_boundary_c_eqvGenNormalForm.orientableGenerator_to_eqvGenNormalForm.nonOrientableGenerator_to_eqvGenNormalForm.orientableRel_to_polygonEqvGenNormalForm.nonOrientableRel_to_polygonEqvGenNormalForm.orientablePolygonalRealizationHomeomorphNormalForm.nonOrientablePolygonalRealizationHomeomorphNormalForm.orientableCellComplexNormalForm.nonOrientableCellComplexNormalForm.canonicalCellComplexNormalForm.IsEvalAdmissibleFiniteCyclicPresentation.hasEvalRepresentative
The canonical word families match the exact commutator, crosscap, and boundary-block patterns in
the vendored relations. Their lengths, edge multiplicities, incidence validity, connectivity, and
Eval-admissible occurrence pairings are certified combinatorially. Forward
block-position maps and exact List.get lemmas locate every signed entry of each named handle,
crosscap, and boundary block. Polygonal identifications in both families are classified
exhaustively as the two directed forms of the expected handle, crosscap, or boundary-seam
pairings, with singleton free-boundary darts excluded. Exact coordinate theorems transport every
explicit pairing family into the trusted closures; boundary blocks use Fin.rev and integral
periodicity to reconcile the benchmark's negative angles. The exhaustive classifications package
those facts for arbitrary polygon generators, while the trusted relation constructors map back to
named polygon pairings.
The resulting bidirectional closure comparisons descend to homeomorphisms with Quot (OrientableRel p n) and Quot (NonOrientableRel p n).
The public classification theorem uses the faithful replacement route: it normalizes finite cyclic presentations, proves their polygonal realizations match the vendored quotient relations, and transports that result across the geometric-triangulation realization bridge. The combinatorial normalization layer does not mention manifold chart machinery.
Eval representatives and final theorem #
Complex.ClosedUnitDisc,OrientableRel, andNonOrientableRel(LeanEval/ChallengeDeps.lean, vendored verbatim from Lean-Eval)Complex.ClosedUnitDisc.norm_bdyPtOfRealorientableQuotRadiusandnonOrientableQuotRadiusnot_subsingleton_orientableQuotandnot_subsingleton_nonOrientableQuot(LeanEval/RepresentativeSanity.lean, project-owned consequences)SphereRepresentativeandNormalForm(project-owned abbreviations and indices)classification_of_surfacestopological_classification_of_surfaces
The final theorem is a short assembly proof from a geometric triangulation, through a
finite cyclic presentation and Gallier-Xu normalization, to separately certified polygonal
realization homeomorphisms for the vendored quotients. The C0 ChartBoundaryInvariant interface
is discharged unconditionally by planar no-retraction, Brouwer's fixed-point theorem, and
invariance of domain. LeanEval/SpecAudit.lean checks that the current public theorem's conclusion
is the exact published Lean-Eval type over the vendored disc relations.