Finite surface cell complexes #
This file owns the shared combinatorial API between the topological triangulation route and the Gallier-Xu normal-form route. The definitions are still intentionally light, but the public names and theorem boundaries match the Moise/PL blueprint.
The raw finite incidence data underlying a Gallier-Xu surface cell complex.
Validity and connectedness are derived from this data by IsSurfaceValid and IsConnected, rather
than stored as unconstrained propositions. Its faithful polygonal realization is constructed
separately from the boundary occurrences.
- Face : Type
The type of faces in the cell complex.
- Dart : Type
The type of oriented darts in the cell complex.
- Vertex : Type
The type of vertices in the cell complex.
Reversal of an oriented dart.
The source vertex of an oriented dart.
The target vertex of an oriented dart.
The cyclic boundary word of each face.
Instances For
The number of faces in a finite surface cell complex.
Equations
- K.numFaces = Fintype.card K.Face
Instances For
The number of oriented darts in a finite surface cell complex.
Equations
- K.numDarts = Fintype.card K.Dart
Instances For
The number of vertices in a finite surface cell complex.
Equations
Instances For
The length of a face boundary word.
Equations
- K.faceBoundaryLength f = (K.boundary f).length
Instances For
A position in one of the stored, positively oriented face boundaries.
Instances For
Equations
The dart stored at a boundary occurrence.
Instances For
A boundary position belongs to the unoriented edge named by d.
Instances For
The unoriented edge named by d occurs at exactly one boundary position.
Equations
- K.OccursExactlyOnce d = ∃ (o : K.BoundaryOccurrence), K.Occurs d o ∧ ∀ (o' : K.BoundaryOccurrence), K.Occurs d o' → o' = o
Instances For
The unoriented edge named by d occurs at exactly two boundary positions.
Equations
- K.OccursExactlyTwice d = ∃ (o₁ : K.BoundaryOccurrence) (o₂ : K.BoundaryOccurrence), o₁ ≠ o₂ ∧ K.Occurs d o₁ ∧ K.Occurs d o₂ ∧ ∀ (o : K.BoundaryOccurrence), K.Occurs d o → o = o₁ ∨ o = o₂
Instances For
Boundary status derived from incidence: the edge orbit of d occurs exactly once.
Equations
- K.IsBoundaryDart d = K.OccursExactlyOnce d
Instances For
Incidence validity for the stored face-boundary system.
There is at least one face, different faces have different cyclic boundary words, inverse darts are
distinct, and every unoriented edge occurs either once (a boundary edge) or twice (an inner edge).
Boundary status and occurrence counts are derived from explicit boundary positions, so repeated
darts such as the projective-plane word a a are retained. The stored vertex endpoints are an
enrichment of Gallier--Xu's boundary-word data and are deliberately not part of this predicate.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Inverting the chosen representative does not change its unoriented edge.
Inverting the chosen representative does not change which boundary positions it occupies.
Boundary status is invariant under reversing the representative dart.
Inverse darts in a valid incidence system are distinct.
A non-boundary edge in a valid incidence system occurs exactly twice.
Two faces are adjacent when their boundaries use the same unoriented edge.
Equations
- K.FaceAdjacent f g = ∃ d ∈ K.boundary f, ∃ e ∈ K.boundary g, K.SameEdge d e
Instances For
Gallier-Xu connectivity of the face-edge incidence system.
Equations
- K.IsConnected = (Nonempty K.Face ∧ ∀ (f g : K.Face), Relation.ReflTransGen K.FaceAdjacent f g)
Instances For
A signed occurrence of a named edge in a polygonal boundary word.
- pos {α : Type u_1} : α → SignedDart α
- neg {α : Type u_1} : α → SignedDart α
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
The underlying unoriented edge name of a signed dart.
Equations
Instances For
Reverse the orientation of a signed dart.
Equations
- (LeanEval.Topology.ClassificationOfSurfaces.SurfaceCellComplex.SignedDart.pos a).flip = LeanEval.Topology.ClassificationOfSurfaces.SurfaceCellComplex.SignedDart.neg a
- (LeanEval.Topology.ClassificationOfSurfaces.SurfaceCellComplex.SignedDart.neg a).flip = LeanEval.Topology.ClassificationOfSurfaces.SurfaceCellComplex.SignedDart.pos a
Instances For
Orientation reversal as an equivalence.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A single-face polygonal presentation with all edge names based at one vertex.
This constructor is intentionally simple. It is useful for normal-form examples and for the Gallier-Xu boundary-word API.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every one-face presentation is connected in the face-edge incidence sense.
Convert an oriented triangulation edge occurrence to a cell-complex signed dart.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The sphere presented as two monogons with oppositely oriented copies of one edge.
The nonempty boundary presentation is equivalent to Gallier--Xu's empty-word sphere and is directly compatible with the polygonal occurrence adapter.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The two-monogon presentation of the sphere has valid incidence data.
The two faces of the sphere presentation are connected through their common edge.
Raw compatibility bridge from the ledgered triangulation record to stored cell-presentation data.
This conversion does not prove IsSurfaceValid or IsConnected; in particular, those properties
do not follow from FiniteSurfaceTriangulation.Valid. New geometric work should start from
GeometricTriangulation, and downstream cellulation work must separately certify the incidence
predicates.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Triangle-boundary positions are canonically the boundary occurrences of the converted cell complex.
Equations
- T.boundaryPositionEquivCellOccurrence = Equiv.sigmaCongrRight fun (x : T.Triangle) => (Fin.castOrderIso ⋯).toEquiv
Instances For
An incidence-certified finite triangulation produces valid cell-complex incidence data.
Dual connectivity of a certified triangulation gives cell-complex face connectivity.