Locally finite triangle complexes #
Rado's induction in Moise Chapter 8 passes through locally finite, usually noncompact, PL
complexes. Requiring every intermediate complex to be finite loses the frontier-vanishing
construction used in the induction step. This file provides the corresponding ambient API while
keeping the existing finite GeometricTriangulation as the final output.
A face is parametrized by the standard simplex on its three global vertices. The
faceMap_eq_iff field says both that parametrizations agree on common faces and that distinct
geometric points are never identified. Thus the structure records the full face-to-face
condition, rather than only a family of carriers. Local finiteness is imposed on the carrier
family in the ambient topology.
The main result is LocallyFiniteTriangleComplex.toGeometricTriangulation: on a compact
Hausdorff space, local finiteness makes the face type finite; the no-junk-vertices condition then
makes the vertex type finite, and finite closed pasting produces the required homeomorphism from
the canonical barycentric realization.
Extend barycentric coordinates on a finite face by zero to the global vertex type.
Equations
- LeanEval.Topology.ClassificationOfSurfaces.Moise.extendFaceCoordinates t x v = if hv : v ∈ t then x ⟨v, hv⟩ else 0
Instances For
Relabeling a finite face along an embedding #
The vertices of a finite face are equivalent to the vertices of its image under an embedding.
Equations
- LeanEval.Topology.ClassificationOfSurfaces.Moise.finsetMapSubtypeEquiv e t = Equiv.ofBijective (fun (a : ↥t) => ⟨e ↑a, ⋯⟩) ⋯
Instances For
Pull simplex coordinates on a relabeled face back to the original face.
Equations
Instances For
Face relabeling along an embedding is onto.
Pulling coordinates back along a face relabeling preserves the coordinate at every original vertex.
Relabeling two faces by the same embedding preserves equality of their global zero-extended coordinate functions.
Relabeling does not change a weighted evaluation of the zero-extended coordinates.
When the source face is the whole finite type, remove the vacuous membership subtype after pulling coordinates back along an embedding.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pull simplex coordinates on the image of a finite type back to that finite type.
Equations
Instances For
Pullback along an embedded whole finite vertex type is onto: its inverse simply pushes coordinates forward along the inverse equivalence onto the image.
The whole-type relabeling preserves the coordinate of every embedded source vertex.
An injective vertex map preserves the coordinate at each source vertex.
An injective vertex map has zero coordinate away from its image.
Relabel a finite face family along an embedding of its vertex type.
Equations
- LeanEval.Topology.ClassificationOfSurfaces.Moise.relabelFaceFamily e F = Finset.image (fun (t : Finset A) => Finset.map e t) F
Instances For
Regard a listed face as a face of the family obtained by injectively relabeling its vertices.
Equations
Instances For
Injective vertex relabeling preserves dual adjacency of listed faces.
Injective vertex relabeling carries a finite dual path to the relabeled family.
Dual connectivity is preserved by an injective relabeling of the vertex type.
Faces relabeled from different vertex types share an edge when the two source edges have the same relabeled image.
A shared edge remains a shared edge when both families are injectively relabeled.
Push a geometric realization forward along an injective relabeling of all vertices.
Equations
- LeanEval.Topology.ClassificationOfSurfaces.Moise.pushGeometricRealization e F x = ⟨⇑(stdSimplex.map ⇑e ⟨↑x, ⋯⟩), ⋯⟩
Instances For
Pull a point of a relabeled realization back to its original vertex type.
Equations
- LeanEval.Topology.ClassificationOfSurfaces.Moise.pullGeometricRealization e F y = ⟨fun (a : A) => ↑y (e a), ⋯⟩
Instances For
Relabeling a finite face family along a vertex embedding does not change its realization.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Weighted evaluation is unchanged by whole-type relabeling.
A sum over the subtype of a finite face is the corresponding sum of its zero-extended coordinates over the underlying vertex set.
Equal zero-extended coordinates give equal weighted sums against any scalar-valued function on the global vertex type.
A locally finite family of parametrized triangles in an ambient topological space.
vertex_used excludes irrelevant vertices. This matters in the compactness-to-finiteness
bridge: local finiteness controls the number of nonempty faces, and every vertex must then occur
in one of those faces.
- Vertex : Type
Global vertices, shared literally by incident faces.
- vertexDecidableEq : DecidableEq self.Vertex
Equality of vertices is decidable so that faces are finite sets.
- Face : Type
Maximal two-dimensional faces.
- faceDecidableEq : DecidableEq self.Face
Equality of maximal faces is decidable.
The three global vertices of a maximal face.
Every maximal face is a triangle.
- vertex_used (v : self.Vertex) : ∃ (f : self.Face), v ∈ self.faceVertices f
Every declared global vertex occurs in a maximal face.
- faceMap (f : self.Face) : ↑(stdSimplex ℝ ↥(self.faceVertices f)) → S
Coordinate map of a closed triangle into the ambient space.
- faceMap_continuous (f : self.Face) : Continuous (self.faceMap f)
Each coordinate map is continuous.
- faceMap_eq_iff {f g : self.Face} {x : ↑(stdSimplex ℝ ↥(self.faceVertices f))} {y : ↑(stdSimplex ℝ ↥(self.faceVertices g))} : self.faceMap f x = self.faceMap g y ↔ extendFaceCoordinates (self.faceVertices f) x = extendFaceCoordinates (self.faceVertices g) y
Exact face-to-face compatibility and global injectivity, expressed in barycentric coordinates.
- locallyFinite : LocallyFinite fun (f : self.Face) => Set.range (self.faceMap f)
The closed triangle carriers form a locally finite family.
Instances For
The ambient carrier of one maximal face.
Equations
- K.faceCarrier f = Set.range (K.faceMap f)
Instances For
The ambient support of the locally finite complex.
Equations
- K.support = ⋃ (f : K.Face), K.faceCarrier f
Instances For
A chosen maximal face incident to a global vertex.
Equations
- K.incidentFace v = Classical.choose ⋯
Instances For
The ambient point represented by a global vertex.
Equations
- K.vertexPoint v = K.faceMap (K.incidentFace v) (stdSimplex.vertex ⟨v, ⋯⟩)
Instances For
Every incident face parametrization sends a shared abstract vertex to the same ambient point.
Singleton carriers of the global vertices form a locally finite family.
Cyclic data on a maximal face #
A chosen cyclic enumeration of the three vertices of a maximal face.
Equations
Instances For
Cyclically indexed vertices of a maximal face.
Equations
- K.faceVertex f i = ↑((K.faceVertexEquiv f) ((ZMod.finEquiv 3).symm i))
Instances For
Edges #
A two-element vertex set contained in a maximal face.
Instances For
The edge type of a locally finite triangle complex.
Instances For
The chosen first endpoint of an edge.
Instances For
The chosen second endpoint of an edge.
Equations
- K.edgeSecond e = ⋯.choose
Instances For
The edge joining two consecutive cyclic vertices of a maximal face.
Equations
- K.faceEdge f i = ⟨{K.faceVertex f i, K.faceVertex f (i + 1)}, ⋯⟩
Instances For
Consecutive face edges share exactly their common cyclic vertex.
The arbitrary endpoint ordering of a cyclic face edge is one of its two cyclic orientations.
The standard one-simplex point at interval parameter r.
Equations
- K.edgeSimplexPath e r = ⟨(AffineMap.lineMap ⇑(stdSimplex.vertex ⟨K.edgeFirst e, ⋯⟩) ⇑(stdSimplex.vertex ⟨K.edgeSecond e, ⋯⟩)) ↑r, ⋯⟩
Instances For
A chosen maximal face incident to an edge.
Equations
- K.edgeFace e = Classical.choose ⋯
Instances For
Include edge-local vertices into a chosen incident maximal face.
Equations
- K.edgeVertexToFace e v = ⟨↑v, ⋯⟩
Instances For
Parametrization of a closed edge by its standard one-simplex.
Equations
- K.edgeMap e x = K.faceMap (K.edgeFace e) (stdSimplex.map (K.edgeVertexToFace e) x)
Instances For
The canonical interval parametrization of an ambient edge carrier.
Equations
- K.edgePath e r = K.edgeMap e (K.edgeSimplexPath e r)
Instances For
The ambient carrier of an edge.
Equations
- K.edgeCarrier e = Set.range (K.edgeMap e)
Instances For
Edge carriers inherit local finiteness from the maximal-face carriers.
The one-skeleton carrier of a locally finite triangle complex.
Equations
- K.oneSkeleton = ⋃ (e : K.Edge), K.edgeCarrier e
Instances For
The canonical interval parameter of a point known to lie on an edge carrier.
Equations
- K.edgeParameter e p hp = Classical.choose ⋯
Instances For
The interval parametrization with codomain restricted to the edge carrier.
Equations
- K.edgePathToCarrier e r = ⟨K.edgePath e r, ⋯⟩
Instances For
Every closed edge carrier is canonically homeomorphic to the unit interval.
Equations
Instances For
The union of all edges not incident to a fixed vertex is closed.
Local finiteness on a compact ambient space makes the type of maximal faces finite.
Equations
- K.faceFintype = ⋯.fintypeOfCompact ⋯
Instances For
If the face type is finite and every vertex is used, then the global vertex type is finite.
The finite vertex instance induced by compactness and the no-junk-vertices condition.
Equations
Instances For
The compactFaceFintype declaration.
Equations
Instances For
The compactVertexFintype declaration.
Equations
Instances For
The finite intrinsic complex obtained from a compact locally finite triangle complex.
Equations
- K.compactIntrinsic = { Vertex := K.Vertex, vertexFintype := K.vertexFintype, vertexDecidableEq := K.vertexDecidableEq, faces := Finset.image K.faceVertices Finset.univ, faces_card := ⋯ }
Instances For
Restrict a global standard-simplex point supported on t to the coordinates indexed by
t.
Equations
- K.restrictToFace t x hx = ⟨fun (v : ↥t) => x ↑v, ⋯⟩
Instances For
Every point of the compact realization is supported on one of the original maximal faces.
A canonical maximal face containing a point of the compact realization.
Equations
- K.containingFace x = Classical.choose ⋯
Instances For
Evaluation of the compact barycentric realization through the locally finite face maps.
Equations
- K.compactEval x = K.faceMap (K.containingFace x) (K.restrictToFace (K.faceVertices (K.containingFace x)) ⟨↑x, ⋯⟩ ⋯)
Instances For
The compact evaluation has exactly the ambient support of the locally finite complex as its range.
A locally finite triangle complex covering a compact Hausdorff space is an honest finite geometric triangulation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Finite complexes on their own support #
Regard a finite ambient triangle complex as a complex whose ambient space is exactly its support. This is the finite gluing bridge used in the Rado induction: once a compatible finite family of old and new triangles has been assembled, no separate ambient coverage proof is needed.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The support-restricted complex covers its ambient support subtype.
A finite ambient triangle complex has compact support, independently of compactness of the ambient space.
A finite compatible triangle family triangulates its own support.
Equations
Instances For
Include the standard simplex on one maximal face into the global barycentric realization.
Equations
- K.faceStandardMap t x = ⟨⇑(stdSimplex.map Subtype.val x), ⋯⟩
Instances For
Restrict an intrinsic realization point supported on one maximal face to that face's standard simplex.
Equations
- K.restrictToFaceSimplex t x hx = ⟨fun (v : ↥↑t) => ↑x ↑v, ⋯⟩
Instances For
Regard a finite intrinsic complex with no unused vertices as a locally finite ambient triangle complex.
Equations
- One or more equations did not get rendered due to their size.