Transporting a skeleton homeomorphism across an edge subdivision #
Schoenflies/RealizeSubdiv.lean builds SubdivData.realize, the realization of a subdivided
cell structure, and closes with the observation that it does not move the realized
1-skeleton (SubdivData.skeletonSet_realize). It also names what was missing: a
CellStructure.SkeletonHomeo between two realizations does not, by itself, carry the half
arcs of a subdivided edge onto each other. That gap is what Schoenflies/ArcMonotone.lean
fills, and this module spends.
SubdivData.realizeHomeo is the transported homeomorphism. As a point map it is unchanged —
realizeHomeo_toFun is rfl — which is exactly what CellStructure.LimitTower.skelHomeo_succ
in Schoenflies/LimitMap.lean asks for ("an edge subdivision leaves the skeleton map unchanged
as a point map"), and through it Schoenflies.StageSequence.
The target parameter, and the two orientations #
Subdividing at parameter t on the source side means subdividing at the parameter on the
target side where R₂.drawing d.edge sits at g.toFun (R₁.drawing d.edge t). That is
SubdivData.targetParam, a plain def built from Schoenflies.transferParam; a caller never
has to guess it, and SubdivData.drawing_targetParam is its defining property.
RealizeSubdiv.lean warns that IsDrawing.edge_param is orientation-free, so drawing e 0 may
be either end of e, and reads the orientation off with SubdivData.leftParam. The same issue
arises here on the R₂ side, and it is not forced: the two realizations are independent
data, so nothing prevents R₁ from drawing d.edge from d.left and R₂ from drawing it from
d.right. This module does not assume otherwise. It does not need a second case distinction
either, because the transfer map handles it:
SubdivData.targetParam_leftParam : targetParam (leftParam R₁) = leftParam R₂
holds whatever the two orientations are — g carries R₁.pos d.left to R₂.pos d.left, and
leftParam R₂ is by definition the parameter sitting there. Correspondingly the arc identity
imported from ArcMonotone is stated over uIcc, which is unordered, so the two halves match
up without either orientation ever being named. The one place the orientations do surface is
SubdivData.targetParam_ends, which records that the pair (targetParam 0, targetParam 1) is
(0, 1) or (1, 0) — the input ArcMonotone.param_mem_Ioo_of_ends needs to know the new
target parameter is interior.
Blueprint #
def:matched-pair, clause 3 — the transportededgeArc_imageat the two new 1-cells is precisely "on each corresponding pair of edges,grestricts to a chosen homeomorphism between them, matching endpoints", propagated through operation 1.def:generated-structure, operation 1 (edge subdivision) — "the corresponding point is inserted into the corresponding edge";SubdivData.targetParamis "corresponding".
Declarations:
Schoenflies.CellStructure.SubdivData.arcMatch_edge— the drawn subdivided edge, its image, andgbetween them, as anArcMatch.Schoenflies.CellStructure.SubdivData.targetParam— the corresponding parameter on the target side, withdrawing_targetParam,targetParam_leftParam,targetParam_rightParam,targetParam_ends,targetParam_mem_Ioo.Schoenflies.CellStructure.SubdivData.realizeHomeo— the transported skeleton homeomorphism, withrealizeHomeo_toFun/realizeHomeo_invFun/realizeHomeo_eqOn.
The drawn subdivided edge, on both sides #
The subdivided edge is drawn on both sides, and g carries one drawing onto the other.
Everything the arc-monotonicity machinery needs, assembled from fields of R₁, R₂ and g;
no new hypothesis.
The corresponding parameter on the target side #
The parameter at which the target drawing sits at the image of the source point.
A def, not an existential: the subdivided target realization is d.realize R₂ (d.targetParam g t) _, and every lemma below refers to it by name.
Equations
- d.targetParam g t = Schoenflies.transferParam (R₁.drawing d.edge) (R₂.drawing d.edge) g.toFun t
Instances For
The defining property of the target parameter.
The endpoint of the subdivided edge at d.left corresponds to the endpoint at d.left,
whichever way round either realization happens to draw the edge.
…and likewise at d.right.
The two endpoint parameters go to the two endpoint parameters, in one order or the other. This is the only statement in the file that mentions the orientations at all, and it is here only because interiority of the new target parameter needs it.
An interior source parameter has an interior target parameter — so the target realization can be subdivided at it.
g carries a piece of the drawn edge onto the corresponding piece. The whole content of
Schoenflies/ArcMonotone.lean, specialized to the subdivided edge.
The transported skeleton homeomorphism #
The skeleton homeomorphism, transported across an edge subdivision.
The point map is untouched: a subdivision does not move the realized 1-skeleton
(skeletonSet_realize), so six of the eight fields are the old ones read through that equality.
The two that are not — pos_apply at the new 0-cell and edgeArc_image at the two new 1-cells
— are drawing_targetParam and image_edge_uIcc.
Equations
Instances For
The transported map is the old one as a point map — the form
CellStructure.LimitTower.skelHomeo_succ consumes.