The complete construction of prop:initial-pair #
Schoenflies/InitialPair.lean builds the initial matched pair but leaves three things that
def:matched-pair and prop:initial-pair actually assert:
- the anchor clause. The blueprint chooses
a, b ∈ 𝒜, the fixed countable dense set of strongly accessible points ofprop:countable-strong-access(tex 1403–1418).InitialDatarecords neither the anchor set nor the strong accessibility ofaandb, so nothing downstream can build a further crosscut ending at them, andlem:anchor-density— which needs the anchors of every stage to be points of𝒜— has nothing to attach to.Schoenflies.AnchorSetis𝒜as data,Schoenflies.AnchoredInitialDatais the initial pair with the clause recorded, andSchoenflies.AnchoredInitialData.stronglyAccessible_a/.exists_access_segment_aturn it back into the straight access segmentlem:tangent-conesupplies. - the matched labelling.
InitialData.source_closure_cell_interlabels the two source 2-cells by the two boundary arcsA₁, A₂ofC, and.target_closure_cell_interlabels the two target 2-cells by the two boundary arcs ofS— independently. Nothing said the two labellings correspond, which is the whole content of a matched pair.Schoenflies.InitialData.tgt_arcOf_eq_image(tgt.arcOf k = u '' src.arcOf k),.skeletonHomeo_image_arcOfand.closure_cell_face_linksupply the link. def:admissible-graphfor the target: "all its edges are polygonal".Schoenflies.InitialData.isPolygonal_tgt_edgeArcand.isPolygonal_targetRealization_skeletonSet.
It also carried two hypotheses, harc (thm:arc-complement) and hcollars
(lem:crosscut-collars), both of which are now theorems on main
(Schoenflies.arc_complement, Schoenflies.IsCrosscut.hasArcCollars). Every headline result is
restated here after supplying them; the primed names distinguish these strengthened statements.
Finally, initBoundary is a raw datum in CellStructure, and nothing checked that the two
lists it holds are closed walks of initSkel whose cells are exactly faceCells. They are:
Schoenflies.isWalk_initBoundary_false, .._true, and Schoenflies.mem_faceCells_iff.
Blueprint #
Schoenflies.AnchorSet,Schoenflies.nonempty_anchorSet,Schoenflies.anchorSet—prop:countable-strong-accessas the fixed set𝒜of tex 1418.Schoenflies.AnchoredInitialData,Schoenflies.exists_anchoredInitialData,Schoenflies.anchoredInitialData,Schoenflies.initialData—prop:initial-pairincluding the dropped clause "two further pointsa, b ∈ 𝒜", the last one with the canonical anchor set supplied.Schoenflies.stronglyAccessible_initialData_a,.._b— the strong accessibility of the two chosen points of the canonical pair, which is what the dropped clause was for.Schoenflies.AnchoredInitialData.stronglyAccessible_a,.stronglyAccessible_b,.exists_access_segment_a,.exists_access_segment_b—lem:tangent-coneat the two anchors, the formlem:accessible-endpointsconsumes at every later stage.Schoenflies.isWalk_initBoundary_false,Schoenflies.isWalk_initBoundary_true,Schoenflies.mem_faceCells_iff,Schoenflies.boundaryCycles_initialStructure— the boundary datum ofdef:matched-cellulationreally is the simple boundary cycle of each 2-cell and carries exactly its strict subcells.Schoenflies.HexData.isPolygonal_arcOf,.isPolygonal_outerArcs,Schoenflies.isPolygonal_modelCurve,Schoenflies.InitialData.isPolygonal_tgt_edgeArc,.isPolygonal_targetRealization_skeletonSet— the clause "all its edges are polygonal" ofdef:admissible-graphfor the target realization.Schoenflies.InitialData.src_arcOf_eq_image,.tgt_arcOf_eq_image,.skeletonHomeo_image_arcOf,.closure_cell_face_link,.closure_cell_face_link_homeo— clause 1 ofdef:matched-pair("the two distinguished outer cycles correspond") at the level of the two boundary arcs, and the correspondence of the two 2-cell labellings.Schoenflies.InitialData.u_src_pos,.tgt_pos_corners,.u_a_mem_openTop,.u_b_mem_openBottom— the geometric content of theprop:initial-pairsentence:Cis subdivided at theu-preimages of the four corners, anda, blie in two nonadjacent corner arcs.Schoenflies.InitialData.source_cells_cover',.source_cell_isComponent',.source_closure_cell_inter',.source_cells_ne',.target_cells_cover',.target_closure_cell_inter',.target_cell_isComponent,.target_cells_ne—thm:general-crosscuton both sides, with its hypotheses supplied.Schoenflies.exists_initialData',Schoenflies.initial_pair'—prop:initial-pair, with the anchor clause and the matched labelling in the statement.
thm:jordan in the shape thm:general-crosscut consumes. Every consumer below feeds
this to a lemma whose separating hypothesis is universally quantified over curves.
(Schoenflies.isSeparating_of_isJordanCurve is the polygonal statement of Jordan.lean, and
is a different hypothesis; this is the general one, now a theorem.)
Two missing HexData facts #
The two boundary arcs are part of the outer cycle, and both are polygonal as soon as the six
outer edges are. The second is the clause of def:admissible-graph that the target realization
has to satisfy and the source one does not.
Each boundary arc is polygonal when the outer edges are. Three consecutive segments, glued at the two vertices between them.
The whole outer cycle is polygonal when the six outer edges are.
initBoundary really is the boundary walk #
CellStructure.boundary is documented as a raw datum: nothing in the record forces it to walk
anywhere. For initialStructure it does. Both lists are closed walks of initSkel, and the
cells they run through are exactly the faceCells that initSub declares to be subcells of the
corresponding 2-cell — so the base value of ≼_abs is not an independent choice.
An outer edge links its two consecutive vertices, with the second one named.
The chord links a and b.
B₁ ∪ P is a closed walk at a.
B₂ ∪ P is a closed walk at b.
Each 2-cell of the initial structure has a closed boundary walk.
Incidence in initSkel is membership among the two ends.
The cells of a 2-cell are the cells of its boundary walk. The base value of ≼_abs
declares faceCells k to be the subcells of face k; this says faceCells k is exactly the
set of edges the boundary walk takes together with the vertices it visits.
The initial face-boundary cycles #
The closed-walk facts above are strengthened here to the maintained data needed by
thm:finite-transfer: each boundary is a simple cycle of length at least three, and its cells
are exactly the strict subcells of the corresponding face.
The complementary part of the first face boundary is a simple path.
The complementary part of the second face boundary is a simple path.
The first declared boundary list presents a long simple cycle.
The second declared boundary list presents a long simple cycle.
Incidence below an initial face consists of the face itself and its declared boundary cells.
A declared initial boundary has exactly the cells recorded by faceCells, once its
starting vertex is known to occur on the boundary.
The two faces of the initial matched cellulation carry chosen simple boundary cycles.
The anchor set 𝒜 #
prop:countable-strong-access produces a countable dense set of strongly accessible points of
C; the blueprint then fixes it for the whole construction (tex 1418) and every later stage
draws its new boundary vertices from it. Fixing it means it is data, so it is a structure, and
prop:initial-pair takes it as an argument rather than producing its own.
The anchor set 𝒜 of tex 1403–1418: a countable dense subset of the Jordan curve C
every point of which is strongly accessible from the Jordan domain D.
The points of
𝒜.- subset_curve : self.carrier ⊆ C
They lie on the curve.
There are countably many.
- stronglyAccessible (p : Plane) : p ∈ self.carrier → StronglyAccessible (inside C) p
Each is strongly accessible from the inside —
def:strong-accessibility. They are dense in the curve.
Instances For
An anchor has a whole open cone of straight access segments, truncatable at any radius —
lem:tangent-cone in the form the later stages need, where the segment must also avoid a
compact set already drawn.
An anchor is polygonally accessible, the hypothesis lem:accessible-endpoints consumes.
prop:countable-strong-access, as the fixed set 𝒜. This uses the proved Jordan
curve theorem.
The fixed anchor set of a Jordan curve, as data.
Equations
- Schoenflies.anchorSet hC = ⋯.some
Instances For
The initial matched pair, anchored #
The clause of prop:initial-pair that InitialData drops. It is recorded as an extension
rather than as a side theorem so that a consumer holding an initial pair holds the anchoring
too; the integrator merging this file into InitialPair.lean should move the two fields into
InitialData itself.
The initial matched pair with the anchor clause of prop:initial-pair: the two chosen
boundary points are points of the fixed set 𝒜.
- homeo : IsSetHomeoOn self.u self.w C modelCurve
- curve : IsJordanCurve C
- injOn_cross : Set.InjOn self.cross unitInterval
- polygonal_cross : IsPolygonal (self.cross '' unitInterval)
a ∈ 𝒜.b ∈ 𝒜.
Instances For
a is strongly accessible — the clause def:generated-structure and
thm:finite-transfer need and InitialData does not record.
b is strongly accessible.
A straight access segment at a — lem:tangent-cone.
A straight access segment at b.
The access cone at a, truncatable — what a later crosscut ending at a is built from.
The access cone at b.
prop:initial-pair including the anchor clause. The two chosen points
are points of the given anchor set 𝒜; the blueprint fixes 𝒜 once and reuses it at every
later stage, so it must be an input, not an output.
The proof is that of Schoenflies.exists_initialData with the anchor set supplied rather than
manufactured: the two open corner arcs are relatively open and nonempty in C, 𝒜 is dense in
C, so 𝒜 meets both; lem:tangent-cone (through StronglyAccessible.polyAccessible) and
lem:accessible-endpoints then supply the polygonal crosscut.
The anchored initial pair with a boundary parametrization chosen internally.
The initial matched pair over C anchored in 𝒜, as data. def:generated-structure
builds every later stage from it, so it must be a def.
Equations
- Schoenflies.anchoredInitialData hC A = ⋯.some
Instances For
prop:initial-pair, in the shape Schoenflies.exists_initialData should have had:
harc is supplied by arc_complement and the two chosen points are anchors.
The canonical initial pair #
AnchorSet is an input because the blueprint fixes 𝒜 once and every later stage draws from
the same set. A consumer that has no other constraint on 𝒜 can take anchorSet hC: it is a
function of C alone (Nonempty (AnchorSet C) is a Prop, so proof irrelevance makes the
choice independent of the proof supplied), so all its uses agree.
The canonical initial matched pair over C, anchored in Schoenflies.anchorSet hC.
Equations
Instances For
The first chosen point of the canonical initial pair is strongly accessible. This is
the clause prop:initial-pair asserts, InitialData drops, and def:generated-structure and
thm:finite-transfer need in order to run a further crosscut into a.
The second chosen point of the canonical initial pair is strongly accessible.
The two crosscut theorems on the initial pair #
InitialPair.lean carries harc (thm:arc-complement) and, on the source side, hcollars
(lem:crosscut-collars). Both are theorems on main: Schoenflies.arc_complement and
Schoenflies.IsCrosscut.hasArcCollars. Every consumer in Part II should use the primed forms
below and thread nothing.
The collar hypothesis on the source side, discharged: the crosscut is polygonal.
The two source 2-cells exhaust D ∖ P.
Each source 2-cell is a component of D ∖ P.
The labelling of the two source 2-cells.
The two source 2-cells are distinct.
The two target 2-cells exhaust Q° ∖ [u(a), u(b)].
The labelling of the two target 2-cells.
Each target 2-cell is a component of Q° ∖ [u(a), u(b)]. The source side had this
already; the target side did not.
The two target 2-cells are distinct.
The matched labelling #
def:matched-pair clause 1 asks that "the two distinguished outer cycles correspond". On the
initial pair this is not automatic from the abstract structure alone: arcOf is read off the
geometry of each realization, so the two 2-cell labellings — source_closure_cell_inter' and
target_closure_cell_inter' — are made independently. They correspond because the source
outer edges are, by construction, the w-images of the target ones.
Corresponding 0-cells correspond, in the geometric form prop:initial-pair states it:
the six source subdivision points are the u-preimages of the four corners of Q and of
u(a), u(b). (SkeletonHomeo.pos_apply says the same thing about the abstract 0-cells.)
The nonadjacency clause of prop:initial-pair, geometrically: u(a) lies in the
relative interior of the top side of S.
u(b) lies in the relative interior of the opposite, bottom side.
Each source outer edge is the w-image of the corresponding target one.
u undoes w on any subset of the model curve.
The target half of the 2-cell labelling is the u-image of the source half. This is
what makes the pair matched: A₁, A₂ on the source and u(A₁), u(A₂) on the target are not
two independent choices of labelling, they are the same one.
The same statement through the skeleton homeomorphism g of def:matched-pair, which is
u on the outer cycle.
The two 2-cell labellings correspond. lem:crosscut-side-correspondence reads the
labelling of a crosscut side off the closure of the side; on a matched pair the source and the
target answers are u-images of one another, for the same abstract 2-cell face k.
The same through g.
def:admissible-graph for the target: every edge is polygonal #
Each target outer edge is a straight segment, hence polygonal.
Every edge of the target realization is polygonal — the clause of
def:admissible-graph for an admissible graph in Q that InitialPair.lean leaves unstated.
Both target boundary arcs are polygonal.
The whole target skeleton is polygonal.
The source realization satisfies the source form of def:admissible-graph: its edges not
contained in C — here only the crosscut — are polygonal, with interior in D.
prop:initial-pair, assembled and complete.
Over any Jordan curve C and any fixed anchor set 𝒜 there is a matched pair whose source
realization is C subdivided at the u-preimages of the four corners of Q and at two further
points a, b ∈ 𝒜 lying in two nonadjacent corner arcs, together with one polygonal crosscut of
D from a to b, and whose target realization is S correspondingly subdivided together
with the straight chord [u(a), u(b)].
Beyond Schoenflies.initial_pair this adds: no hypotheses at all; the anchor clause with its
consequence that a and b are strongly accessible; the polygonality of every target edge; and
the fact that the two 2-cell labellings correspond.