The initial matched pair #
The entry point of Part II (prop:initial-pair). def:generated-structure builds every later
stage from this one by two elementary operations, so the construction is exported as data —
one abstract CellStructure, two Realizations of it, and the SkeletonHomeo between them —
and not as an existentially packaged bundle. Schoenflies.initial_pair at the end is only a
restatement of the blueprint sentence; nothing should be consumed through it.
The shape of the construction #
The blueprint's u : C → S is taken as data, not produced inside the proof, because every
later stage uses the same u. Schoenflies.IsSetHomeoOn is the set-level form of it, and
Schoenflies.exists_isSetHomeoOn_modelCurve produces one from lem:jordan-circle.
The target side is completely explicit: six marked points on S (four corners, u(a) on
the top side and u(b) on the bottom side), seven straight edges. The source side is the
pushforward of the target's outer cycle along w = u⁻¹, plus the polygonal crosscut. That
asymmetry is deliberate: nothing about the six source arcs has to be proved, because w is
injective on S and each drawing condition transfers.
The nonadjacency hypothesis of prop:initial-pair is used in exactly one place,
Schoenflies.openSegment_chord_supNorm_lt: u(a) and u(b) lie on opposite sides, so
every interior point of the straight chord has sup norm < 1, hence lies in Q°.
What is assumed #
Exactly two hypotheses are carried, and only by the theorems that need them. Neither is a restatement of anything proved here.
harc : ∀ A : Set Plane, IsArc A → IsConnected Aᶜ—thm:arc-complement, the standing hypothesis ofthm:jordanin this library. It is what producesIsSeparating C, hence the Jordan domain the crosscut runs in, and it is threaded intothm:general-crosscutin the form that theorem takes.hcollars : Schoenflies.HasArcCollars (inside C) d.crossSet— blueprint Lemma 1.8 (b) for the polygonal crosscut, the standing hypothesis oflem:crosscut-at-most-two. It is needed on the source side only: on the target side the chord is a straight segment, soSchoenflies.hasArcCollars_segmentdischarges it outright (InitialData.hasArcCollarsTarget).
Blueprint #
Schoenflies.IsSetHomeoOn,Schoenflies.exists_isSetHomeoOn_modelCurve—lem:jordan-circlein the set-level form the gluing needs.Schoenflies.InitialCell,Schoenflies.initSkel,Schoenflies.initOuter,Schoenflies.faceCells,Schoenflies.initBoundary,Schoenflies.initSub,Schoenflies.initialStructure— the base cell structure the blueprint fixes right afterdef:generated-structure(tex 1590–1602): six boundary vertices, six outer edges, the crosscut edge, two 2-cells, and the stated base value of≼_abs.Schoenflies.outerEdgeUniqueFace_initialStructure— assertion (vi) oflem:cellulation-invariantsfor the base structure.Schoenflies.HexData,Schoenflies.HexData.realization— a realization of that record from six points and seven parametrizations, with the geometric side conditions isolated;HexData.arcOf,HexData.arcOf_false_isArcBetween,HexData.arcOf_inter,HexData.outerSet_realization,HexData.nonboundary_eq,HexData.isConnected_nonboundaryare thedef:admissible-graphclauses that follow.Schoenflies.isTwoConnected_initSkel,Schoenflies.HexData.isTwoConnected_graph— the 2-connectivity clause ofdef:admissible-graph, proved once on the abstract graph and transported bylem:combinatorial-invariance(a).Schoenflies.targetHex,Schoenflies.sourceHex— the two realizations ofprop:initial-pair.Schoenflies.InitialData— the data of an initial matched pair, withInitialData.sourceRealization,InitialData.targetRealizationandInitialData.skeletonHomeo(thegofdef:matched-pair:uon the outer cycle byInitialData.skeletonHomeo_eq_u, the parameter-matching homeomorphismP → [u(a), u(b)]on the crosscut byInitialData.skeletonHomeo_cross).Schoenflies.InitialData.isCrosscut,.isCutPair,.source_cells_cover,.source_cell_isComponent,.source_closure_cell_interand their target counterparts —thm:general-crosscutapplied on each side: the two abstract 2-cells are realized by the two sides of the crosscut, labelled by which arc of the outer cycle their closure meets.Schoenflies.InitialData.exists_initialData,Schoenflies.initial_pair—prop:initial-pair.
Set-level homeomorphisms #
lem:jordan-circle is stated in this library with subtype homeomorphisms ↥C ≃ₜ ↥modelCurve.
Everything below needs u as a map of the plane restricted to C, because it has to be glued
to a map defined on the crosscut. IsSetHomeoOn is that shape, with the inverse supplied as
data — the same convention as CellStructure.SkeletonHomeo.
u maps X homeomorphically onto Y, with inverse w.
- continuousOn : ContinuousOn u X
The map is continuous on its domain.
- continuousOn_inv : ContinuousOn w Y
The inverse is continuous on its domain.
- mapsTo : Set.MapsTo u X Y
The map sends the domain into the codomain.
- mapsTo_inv : Set.MapsTo w Y X
The inverse sends the codomain into the domain.
- leftInvOn : Set.LeftInvOn w u X
The inverse undoes the map.
- rightInvOn : Set.RightInvOn w u Y
The map undoes the inverse.
Instances For
Running the homeomorphism backwards.
The image of a relatively open subset of the domain is relatively open in the codomain.
This is what makes the two open arcs of prop:initial-pair relatively open in C, hence able
to meet the countable dense set of strongly accessible points.
lem:jordan-circle, in set-level form. A Jordan curve carries a homeomorphism onto the
model curve, presented as a pair of maps of the plane.
The fifteen cells of the initial structure #
The blueprint fixes the base value of ≼_abs immediately after def:generated-structure
(tex 1590–1602). Its cells are the six boundary vertices — the four corner preimages together
with a, b —, the six open outer edges into which they divide C, the crosscut edge P, and
the two 2-cells R₁, R₂.
The six vertices are indexed cyclically by Fin 6, in the order they occur along C:
vert 0 = u⁻¹(1,1) vert 1 = a vert 2 = u⁻¹(-1,1)
vert 3 = u⁻¹(-1,-1) vert 4 = b vert 5 = u⁻¹(1,-1)
so that a lies in the corner arc between corners 0 and 1 and b in the corner arc
between corners 2 and 3 — the nonadjacency of prop:initial-pair, here visible as
vert 1 and vert 4 being antipodal in Fin 6. edge i runs from vert i to vert (i+1),
and chord from vert 1 to vert 4.
The two boundary edge-paths from a to b are therefore B₁ = [edge 1, edge 2, edge 3]
(through the corners 2, 3) and B₂ = [edge 4, edge 5, edge 0] (through the corners 5, 0);
both contain corner vertices, as the blueprint observes. face false is R₁ and face true
is R₂.
A cell of the initial matched cell structure.
- vert : Fin 6 → InitialCell
One of the six boundary vertices, in cyclic order along
C. - edge : Fin 6 → InitialCell
- chord : InitialCell
- face : Bool → InitialCell
- aux : ℕ → InitialCell
A spare name, belonging to no cell of the initial structure.
The initial structure uses fifteen names; this constructor adds countably many more that it never uses. It is here for one reason:
thm:finite-transferneeds[Infinite γ], because an ear insertion consumes fresh cell names and on a finite name type the step is false. Without a spare supply the base case could not feed the recursion at all. Nothing below ever produces anaux, and no cell ofinitialStructureis one.
Instances For
Equations
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.vert a) (Schoenflies.InitialCell.vert b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.vert a) (Schoenflies.InitialCell.edge a_1) = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.vert a) Schoenflies.InitialCell.chord = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.vert a) (Schoenflies.InitialCell.face a_1) = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.vert a) (Schoenflies.InitialCell.aux a_1) = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.edge a) (Schoenflies.InitialCell.vert a_1) = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.edge a) (Schoenflies.InitialCell.edge b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.edge a) Schoenflies.InitialCell.chord = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.edge a) (Schoenflies.InitialCell.face a_1) = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.edge a) (Schoenflies.InitialCell.aux a_1) = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq Schoenflies.InitialCell.chord (Schoenflies.InitialCell.vert a) = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq Schoenflies.InitialCell.chord (Schoenflies.InitialCell.edge a) = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq Schoenflies.InitialCell.chord Schoenflies.InitialCell.chord = isTrue ⋯
- Schoenflies.instDecidableEqInitialCell.decEq Schoenflies.InitialCell.chord (Schoenflies.InitialCell.face a) = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq Schoenflies.InitialCell.chord (Schoenflies.InitialCell.aux a) = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.face a) (Schoenflies.InitialCell.vert a_1) = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.face a) (Schoenflies.InitialCell.edge a_1) = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.face a) Schoenflies.InitialCell.chord = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.face a) (Schoenflies.InitialCell.face b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.face a) (Schoenflies.InitialCell.aux a_1) = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.aux a) (Schoenflies.InitialCell.vert a_1) = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.aux a) (Schoenflies.InitialCell.edge a_1) = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.aux a) Schoenflies.InitialCell.chord = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.aux a) (Schoenflies.InitialCell.face a_1) = isFalse ⋯
- Schoenflies.instDecidableEqInitialCell.decEq (Schoenflies.InitialCell.aux a) (Schoenflies.InitialCell.aux b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
The two ends of a cell, when it is an edge. Junk elsewhere; the graph below only ever consults it on an edge name.
Equations
Instances For
The six 0-cells.
Instances For
The seven 1-cells: six outer edges and the crosscut.
Equations
Instances For
The six outer 1-cells.
Instances For
The two 2-cells.
Instances For
The abstract 1-skeleton of the initial structure: a hexagon with one long chord.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The distinguished outer cycle: the same hexagon without the chord.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cyclic boundary walk of each 2-cell, as a list of edge names.
Equations
- Schoenflies.initBoundary (Schoenflies.InitialCell.face false) = [Schoenflies.InitialCell.edge 1, Schoenflies.InitialCell.edge 2, Schoenflies.InitialCell.edge 3, Schoenflies.InitialCell.chord]
- Schoenflies.initBoundary (Schoenflies.InitialCell.face true) = [Schoenflies.InitialCell.edge 4, Schoenflies.InitialCell.edge 5, Schoenflies.InitialCell.edge 0, Schoenflies.InitialCell.chord]
- Schoenflies.initBoundary x✝ = []
Instances For
The names that initialStructure declares to be cells: the six 0-cells, the seven 1-cells
and the two 2-cells. This is initialStructure.cells unfolded, written out here because
initSub is a field of initialStructure and cannot refer to it.
Equations
Instances For
The base value of ≼_abs (tex 1590–1602): the reflexive pairs, the incidence of each
vertex with the edges it bounds, and, for i = 1, 2, the incidence of every vertex and edge of
Bᵢ ∪ P with Rᵢ. Nothing else.
The reflexive clause is restricted to cellNames. ≼_abs must relate cells to cells —
CellStructure.CombInvariants.sub_mem_left and .sub_mem_right say so — and InitialCell
carries a spare supply of names beyond the fifteen cells, so unrestricted reflexivity would
relate a spare name to itself and make both false.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The abstract record of the initial matched cellulation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every outer edge is a subcell of exactly one 2-cell — assertion (vi) of
lem:cellulation-invariants for the base structure, and the hypothesis of
CellStructure.outerEdge_face_corresponds. The edges of B₁ bound R₁ only and those of
B₂ bound R₂ only, which is the whole content.
A realization of the initial structure, from six points and seven parametrizations #
Both realizations of prop:initial-pair have the same shape: six points in cyclic position,
six parametrized arcs joining consecutive ones, and one chord from the second point to the
fifth. HexData bundles that shape together with the three geometric side conditions a plane
drawing needs, and HexData.realization turns it into a CellStructure.Realization of
initialStructure. Building it once means the square side and the curve side are checked
against the same list.
The pairwise-meeting conditions are stated in the weakest usable form: two outer arcs meet
only in points that are ends of both, and the chord meets each outer arc only in its own two
ends. Everything IsDrawing asks for follows, including "an arc contains no vertex but its
own two ends", which is derived rather than assumed (HexData.mem_outer_iff).
The geometric data of one realization of initialStructure.
Where the six boundary vertices sit, in cyclic order.
- injective_pos : Function.Injective self.pos
The six vertices are distinct.
- continuousOn_outer (i : Fin 6) : ContinuousOn (self.outer i) unitInterval
Each outer edge is drawn continuously.
- injOn_outer (i : Fin 6) : Set.InjOn (self.outer i) unitInterval
Each outer edge is drawn injectively.
An outer edge starts at its first vertex.
An outer edge ends at the next vertex.
- continuousOn_chord : ContinuousOn self.chordParam unitInterval
The crosscut is drawn continuously.
- injOn_chord : Set.InjOn self.chordParam unitInterval
The crosscut is drawn injectively.
The crosscut starts at
a.The crosscut ends at
b.- outer_meet (i j : Fin 6) : i ≠ j → self.outer i '' unitInterval ∩ self.outer j '' unitInterval ⊆ {self.pos i, self.pos (i + 1)} ∩ {self.pos j, self.pos (j + 1)}
Two distinct outer edges meet only at points that are ends of both.
- chord_meet (i : Fin 6) : self.chordParam '' unitInterval ∩ self.outer i '' unitInterval ⊆ {self.pos 1, self.pos 4}
The crosscut meets each outer edge only at its own two ends.
Instances For
Where each 0-cell sits. Junk on the other cells, which Realization never reads.
Instances For
How each 1-cell is drawn. Junk on the other cells.
Equations
- H.draw (Schoenflies.InitialCell.edge i) = H.outer i
- H.draw Schoenflies.InitialCell.chord = H.chordParam
- H.draw x✝ = fun (x : ℝ) => 0
Instances For
The crosscut, as a set.
Equations
Instances For
The two boundary edge-paths from pos 1 to pos 4, as sets: arcOf false is A₁, the
union of the outer edges 1, 2, 3, and arcOf true is A₂, the union of 4, 5, 0.
Equations
- H.arcOf false = H.outer 1 '' unitInterval ∪ (H.outer 2 '' unitInterval ∪ H.outer 3 '' unitInterval)
- H.arcOf true = H.outer 4 '' unitInterval ∪ (H.outer 5 '' unitInterval ∪ H.outer 0 '' unitInterval)
Instances For
The point set of each open cell.
The 2-cell face k is realized by the side of the crosscut belonging to Aₖ, exactly as the
blueprint prescribes (tex 1590–1602): "the 2-cell Rᵢ is realized in the source as the crosscut
side whose closure meets C in Aᵢ". By thm:general-crosscut that side is
Int(Aᵢ ∪ P) = inside (arcOf k ∪ chordSet), and taking this as the definition makes the
crosscut theorem apply to it with nothing to transport.
Equations
- H.cellSet (Schoenflies.InitialCell.vert i) = {H.pos i}
- H.cellSet (Schoenflies.InitialCell.edge i) = H.outer i '' unitInterval \ {H.pos i, H.pos (i + 1)}
- H.cellSet Schoenflies.InitialCell.chord = H.chordParam '' unitInterval \ {H.pos 1, H.pos 4}
- H.cellSet (Schoenflies.InitialCell.face k) = Schoenflies.inside (H.arcOf k ∪ H.chordSet)
- H.cellSet (Schoenflies.InitialCell.aux a) = ∅
Instances For
A vertex lies on an outer edge only if it is one of its two ends. Not an axiom of
HexData: a vertex is an end of its own outer edge, so a vertex on a second edge is a point
of two edges, and the meeting condition places it among the ends of both.
A vertex lies on the crosscut only if it is one of its two ends.
The realized skeleton and the two boundary arcs #
Each outer edge is drawn as an arc between consecutive vertices.
A₁ is an arc from a to b. Three consecutive outer edges, glued at the two corner
vertices between them.
The open nonboundary part is the crosscut without its two endpoints. With
chord_meet this is the connectedness clause of def:admissible-graph in one line: an arc
minus its endpoints is connected.
The open nonboundary part is the crosscut without its endpoints — the open arc.
The open nonboundary part is connected — the last clause of def:admissible-graph.
With a single crosscut it is the open arc of the chord, a continuous injective image of
(0, 1).
The initial skeleton is 2-connected #
The first clause of def:admissible-graph. It is a fact about the abstract graph — a hexagon
with one chord — and Graph.isTwoConnected_map_iff carries it to both realizations at once, so
it is proved here and nowhere else. The chord plays no part: the hexagon alone is 2-connected,
because deleting one of its vertices leaves a path. All the cyclic index arithmetic is
decide.
The abstract hexagon-with-chord is connected.
Deleting one vertex of the hexagon leaves a path, hence a connected graph.
The initial skeleton is 2-connected — the first clause of def:admissible-graph.
Both drawn skeleta are 2-connected. By lem:combinatorial-invariance (a) there is only
one statement to prove, and it is the abstract one.
The target realization: the square with one straight chord #
The target side of prop:initial-pair is completely explicit. The six marked points of S are
the four corners together with u(a) = (α, 1) in the relative interior of the top side and
u(b) = (β, -1) in the relative interior of the bottom side, |α|, |β| < 1. This is the one
place the nonadjacency hypothesis is used: opposite sides, so the straight chord
[(α,1), (β,-1)] has every point other than its ends of sup norm < 1, hence in the open
square and off S.
All seven edges are straight, so each is pinned by one coordinate and swept by the other, and
the fifteen pairwise intersections are interval arithmetic. hPiece and vPiece are those two
shapes.
The six outer edges of the target, straight.
Equations
- Schoenflies.tgtOuter α β i = ⇑(AffineMap.lineMap (Schoenflies.tgtPos α β i) (Schoenflies.tgtPos α β (i + 1)))
Instances For
The straight chord [u(a), u(b)].
Equations
- Schoenflies.tgtChord α β = ⇑(AffineMap.lineMap (Schoenflies.tgtPos α β 1) (Schoenflies.tgtPos α β 4))
Instances For
The fifteen pairwise intersections of the six target edges. Two edges on the same side
of the square overlap in at most the marked point between them; two on adjacent sides meet at
most in the corner they share, and the four cases where a corner is not on the piece in
question are empty because |α|, |β| < 1; two on opposite sides never meet. Every one of them
is a comparison of two real intervals.
The target realization of prop:initial-pair: the square S, subdivided at its four
corners and at u(a) = (α,1), u(b) = (β,-1), together with the straight chord between the
last two.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The source realization: the curve with one polygonal crosscut #
The source realization is the pushforward of the target's outer cycle along w = u⁻¹, together
with the polygonal crosscut P as its seventh edge. Nothing about the six outer arcs has to be
proved again: w is injective on S, so each of the three drawing conditions transfers.
The crosscut arrives as a parametrization together with the one geometric fact lem:accessible- endpoints supplies — that every point of it other than its two ends lies in D — from which
P ∩ C = {a, b} follows, and with it the last meeting condition.
The source realization of prop:initial-pair: C, subdivided at the u-preimages of
the four corners and of u(a), u(b), together with the polygonal crosscut P from a to
b.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The source outer cycle is exactly C.
The skeleton homeomorphism #
g is u on C and a chosen homeomorphism P → [u(a), u(b)] on the crosscut. The chosen
homeomorphism is the one that matches the parameters: sp t ↦ [u(a), u(b)](t). The two
definitions agree at a and b, which is where C and P meet, so the pasting lemma applies
to the two closed pieces of the skeleton.
A continuous injection of a compact set has a continuous inverse on its image. Stated for
the set-level Function.invFunOn, which is what a parametrized arc has to be inverted with.
The initial matched pair, bundled #
InitialData C is the data prop:initial-pair produces before any of its conclusions are
drawn: the boundary homeomorphism u with its inverse w, the two abscissae xa, xb of
u(a) and u(b) on the two opposite sides, and the polygonal crosscut as a parametrization.
Both realizations, the skeleton homeomorphism, and every conclusion below are functions of
it.
The data of an initial matched pair over the Jordan curve C.
Its inverse.
- homeo : IsSetHomeoOn self.u self.w C modelCurve
umapsChomeomorphically onto the model curve. - curve : IsJordanCurve C
Cis a Jordan curve. - xa : ℝ
The abscissa of
u(a)on the top side. - xb : ℝ
The abscissa of
u(b)on the bottom side. u(a)is interior to the top side.u(b)is interior to the bottom side — the opposite side.The crosscut, as a parametrization.
- continuousOn_cross : ContinuousOn self.cross unitInterval
The crosscut is drawn continuously.
- injOn_cross : Set.InjOn self.cross unitInterval
The crosscut is simple.
The crosscut starts at
a.The crosscut ends at
b.- cross_inside : self.cross '' unitInterval \ {self.w (tgtPos self.xa self.xb 1), self.w (tgtPos self.xa self.xb 4)} ⊆ inside C
Every other point of the crosscut is inside
C—lem:accessible-endpoints. - polygonal_cross : IsPolygonal (self.cross '' unitInterval)
The crosscut is polygonal.
Instances For
The first chosen boundary point, a = u⁻¹(xa, 1).
Instances For
The second chosen boundary point, b = u⁻¹(xb, -1).
Instances For
The source realization of initialStructure — Γ of prop:initial-pair.
Equations
Instances For
The target realization of initialStructure — Γ' of prop:initial-pair.
Equations
Instances For
The map #
The skeleton map: u on the curve, and the parameter-matching homeomorphism from the
crosscut onto the straight chord.
Equations
- d.skelMap x = if x ∈ C then d.u x else Schoenflies.tgtChord d.xa d.xb (Function.invFunOn d.cross unitInterval x)
Instances For
Its inverse: w on the model curve, and the parameter-matching homeomorphism back.
Equations
- d.skelInv y = if y ∈ Schoenflies.modelCurve then d.w y else d.cross (Function.invFunOn (Schoenflies.tgtChord d.xa d.xb) unitInterval y)
Instances For
The skeleton map matches parameters on the crosscut.
Continuity and inversion #
The skeleton homeomorphism g of def:matched-pair. It is u on the outer cycle
(clause 2), and on the crosscut it is the chosen homeomorphism P → [u(a), u(b)] matching
endpoints (clause 3); clause 1 is definitional here, both realizations being realizations of
the one initialStructure.
Equations
Instances For
Clause 2 of def:matched-pair: g = u on C.
Clause 3 of def:matched-pair for the crosscut: the chosen homeomorphism
P → [u(a), u(b)] matches the two parametrizations, hence the endpoints.
The two 2-cells really are the two sides of the crosscut #
thm:general-crosscut applied on each side. On the source side the collar hypothesis
HasArcCollars (inside C) P is carried, since P is an arbitrary polygonal crosscut; on the
target side the chord is straight, so Schoenflies.hasArcCollars_segment discharges it
outright.
P is a crosscut of D — the configuration thm:general-crosscut consumes.
The two source 2-cells exhaust D ∖ P — thm:general-crosscut, first sentence.
Each source 2-cell is a component of D ∖ P.
The labelling of the two source 2-cells: the closure of Rₖ meets C exactly in
Aₖ. This is what makes k ↦ face k the correspondence lem:crosscut-side-correspondence
asks for.
The target side #
The open square is the bounded region of the model curve: it is open, convex and bounded,
and its frontier is contained in S.
The straight chord is a crosscut of the open square.
The collar hypothesis is not needed on the target side: the chord is a segment.
The two target 2-cells exhaust Q° ∖ [u(a), u(b)].
The labelling of the two target 2-cells.
prop:initial-pair: an initial matched pair exists #
The two open corner arcs the blueprint chooses a and b from are the relative interiors of
two opposite sides of the square, pulled back by u. They are relatively open in C and
nonempty, so the countable dense set of strongly accessible points of
prop:countable-strong-access meets both; lem:tangent-cone and lem:accessible-endpoints
then supply the polygonal crosscut.
The relative interior of the top side of the square.
Equations
Instances For
The relative interior of the bottom side — the side opposite the top one.
Equations
Instances For
prop:initial-pair. Every Jordan curve carries an initial matched pair: a common
abstract cell structure with an admissible realization in C ∪ D — C subdivided at the
u-preimages of the four corners and at two strongly accessible points a, b of nonadjacent
corner arcs, together with a polygonal crosscut of D from a to b — and an admissible
realization in Q, namely S correspondingly subdivided together with the straight chord
[u(a), u(b)].
harc is thm:arc-complement, the standing hypothesis of thm:jordan in this library.
prop:initial-pair, assembled. 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 of
the countable dense strongly accessible set 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)].
Both realizations realize the one Schoenflies.initialStructure, so clause 1 of
def:matched-pair is definitional; clause 2 is the last conjunct; clause 3 is
InitialData.skeletonHomeo together with InitialData.skeletonHomeo_cross. Admissibility
(def:admissible-graph) is the first six conjuncts.
Everything here is available separately, as a function of the InitialData produced: this
bundle exists so that the blueprint statement appears once, in one place. def:generated- structure builds every later stage from InitialData.sourceRealization,
InitialData.targetRealization and InitialData.skeletonHomeo, and needs them as data, not as
the content of an existential.