Polygonal approximation of intrinsic finite graphs #
This file ports the source-independent part of Moise Chapter 6, Theorem 2 from plane complexes to canonical barycentric realizations. The target geometry is unchanged: finitely many compact embedded arcs admit uniform disjoint vertex disks and nonincident edge tubes.
Uniform target disks around the images of the used intrinsic vertices.
- radius : ℝ
The
radiusdeclaration. - vertices_disjoint (v w : K.UsedVertex) : v ≠ w → Disjoint (Metric.closedBall (h (K.vertexPoint v)) self.radius) (Metric.closedBall (h (K.vertexPoint w)) self.radius)
- avoids_nonincident_edge (v : K.UsedVertex) (e : K.Edge) : ↑v ∉ ↑e → Disjoint (Metric.closedBall (h (K.vertexPoint v)) self.radius) (Metric.cthickening self.radius (Set.range (K.mappedEdgePath h e)))
Instances For
The finite uniform vertex-disk construction for an intrinsic embedded graph.
All intrinsic vertex and nonincident-edge separation properties survive shrinking the common target radius.
Equations
- LeanEval.Topology.ClassificationOfSurfaces.Moise.IntrinsicTwoComplex.VertexDiskControl.shrink K D r hr hrD = { radius := r, radius_pos := hr, vertices_disjoint := ⋯, avoids_nonincident_edge := ⋯ }
Instances For
Intrinsic vertex-disk controls can be chosen below any prescribed positive radius.
A globally defined version of an intrinsic mapped edge, clamped to the unit interval.
Equations
Instances For
The two ordered circle crossings delimiting the central part of an intrinsic mapped edge.
- left : ℝ
The
leftdeclaration. - right : ℝ
The
rightdeclaration. - after_left (t : ℝ) : t ∈ Set.Icc 0 1 → self.left < t → K.edgeCurve h e t ∉ Metric.closedBall (h (K.edgeFirstPoint e)) D.radius
Instances For
Moise's two-sided last-exit construction for an intrinsic edge.
The compact middle of an intrinsic edge after removing its two vertex-disk ends.
Instances For
A chosen last-exit trim for each intrinsic edge.
Equations
- K.edgeTrim hcont D e = Classical.choice ⋯
Instances For
Pairwise-disjoint closed tubes around all trimmed central intrinsic arcs.
- radius : ℝ
The
radiusdeclaration. - pairwise_disjoint (e d : K.Edge) : e ≠ d → Disjoint (Metric.cthickening self.radius (K.edgeTrim hcont D e).centralCarrier) (Metric.cthickening self.radius (K.edgeTrim hcont D d).centralCarrier)
Instances For
A polygonal replacement for one trimmed central intrinsic arc, kept inside its tube.
- data : BrokenLineData (Metric.thickening C.radius (K.edgeTrim hcont D e).centralCarrier)
The
datadeclaration.
Instances For
The centralPolygonalArc declaration.
Equations
- K.centralPolygonalArc hcont hinj D C e = Classical.choice ⋯
Instances For
A simple parameterization of the polygonal replacement, normalized to the unit interval.
- source : PlaneComplex
The
sourcedeclaration. The
mapdeclaration.The
curvedeclaration.- source_support : self.source.support = segment ℝ (planePoint 0 0) (planePoint (↑A.data.resolvedWalk.length) 0)
- map_affineOn (s : Finset self.source.Vertex) : s ∈ self.source.simplexes → IsAffineOn self.map (self.source.cellCarrier s)
- continuousOn : ContinuousOn self.curve (Set.Icc 0 1)
Instances For
The parameterization declaration.
Equations
Instances For
The ordered exits of the polygonal middle from the two endpoint disks.
Equations
Instances For
The trimmedCarrier declaration.
Equations
Instances For
The leftEndpoint declaration.
Equations
Instances For
The rightEndpoint declaration.
Equations
Instances For
The leftSpoke declaration.
Equations
- A.leftSpoke = segment ℝ (h (K.edgeFirstPoint e)) A.leftEndpoint
Instances For
The rightSpoke declaration.
Equations
- A.rightSpoke = segment ℝ A.rightEndpoint (h (K.edgeSecondPoint e))
Instances For
The complete replacement carrier of one intrinsic edge.
Equations
- A.completeCarrier = A.leftSpoke ∪ A.trimmedCarrier ∪ A.rightSpoke
Instances For
The leftOpenSpoke declaration.
Equations
- A.leftOpenSpoke = A.leftSpoke \ {h (K.edgeFirstPoint e)}
Instances For
The rightOpenSpoke declaration.
Equations
- A.rightOpenSpoke = A.rightSpoke \ {h (K.edgeSecondPoint e)}
Instances For
The interiorCarrier declaration.
Equations
Instances For
The trimmed polygonal middle as a path.
Equations
- A.middlePath = { toFun := fun (t : ↑unitInterval) => A.parameterization.curve ((Path.segment A.exitData.left A.exitData.right) t), continuous_toFun := ⋯, source' := ⋯, target' := ⋯ }
Instances For
The complete polygonal replacement path for one intrinsic edge.
Equations
- A.completePath = (Path.segment (h (K.edgeFirstPoint e)) A.leftEndpoint).trans (A.middlePath.trans (Path.segment A.rightEndpoint (h (K.edgeSecondPoint e))))
Instances For
Every complete intrinsic replacement edge is a simple path.
Distinct intrinsic replacement edges have disjoint relative interiors.
The image of either abstract endpoint belongs to its replacement edge carrier.
The selected polygonal replacement for an intrinsic edge.
Equations
- K.replacementArc hcont hinj D C e = K.centralPolygonalArc hcont hinj D C e
Instances For
Consecutive replacement edges around one intrinsic face meet exactly at the image of their shared cyclic vertex.
A point is an active graph vertex when it is a canonical used-vertex point.
Equations
- K.IsGraphVertexPoint x = ∃ (v : K.UsedVertex), x = K.vertexPoint v
Instances For
The unique unit-interval parameter of a point on an intrinsic edge.
Equations
- K.edgeParameter e x hx = Classical.choose ⋯
Instances For
A chosen intrinsic edge through a point of the one-skeleton.
Equations
- K.edgeAt x hx = Classical.choose hx
Instances For
The edgewise replacement map, expressed on the intrinsic edge carrier.
Equations
- K.edgeReplacementMap hcont hinj D C e x = (K.replacementArc hcont hinj D C e).completePath.extend (↑x (K.edgeSecond e))
Instances For
Simultaneous replacement of every intrinsic edge. Vertices are handled first, so the definition is independent of the arbitrary chosen incident edge.
Equations
- K.graphReplacementMap hcont hinj D C x = if K.IsGraphVertexPoint x then h x else if hx : x ∈ K.oneSkeleton then K.edgeReplacementMap hcont hinj D C (K.edgeAt x hx) x else h x
Instances For
The simultaneous intrinsic edge replacement is continuous on the entire one-skeleton.
The simultaneous intrinsic graph replacement is injective on the one-skeleton.
The topological part of the intrinsic one-skeleton approximation: a continuous embedding assembled from finitely many polygonal edge paths.
Quantitative control for simultaneous intrinsic edge replacement. The remaining input is
the usual fine-mesh condition: the image of each source edge has diameter below η.