Part I, with nothing assumed #
The end of Part I. Everything below is already proved elsewhere; this module supplies the last arguments and states the four headline theorems with no hypotheses at all, so that a consumer — and the axiom audit — sees them in the form the blueprint states them.
Two hypotheses were carried, deliberately, across three waves of parallel work, under the
standing rule that a missing result is named rather than sorry-ed:
Schoenflies.SquaresTwoConnected, inSchoenflies/ArcComplement.lean— a subdivided axis-parallel square boundary is 2-connected. Discharged bySchoenflies.squaresTwoConnectedinSchoenflies/SquareCycle.lean.Schoenflies.IsPolyArcCarrier, inSchoenflies/ArcCollars.lean— every simple polygonal arc is the carrier of aPolyArc. Discharged bySchoenflies.isPolyArcCarrier_of_isPolygonalinSchoenflies/PolyArcRealize.lean, the arc analogue of the realization theorem thatSchoenflies/Realization.leanproves for closed curves.
Discharging the first makes thm:arc-complement, and with it lem:accessible-dense and
thm:jordan. Supplying the second removes the collar hypothesis from
lem:crosscut-at-most-two, and with thm:jordan that finishes thm:general-crosscut.
Blueprint #
Schoenflies.arc_complement—thm:arc-complement: the complement of a simple arc in the plane is connected.Schoenflies.jordan_curve_theorem—thm:jordan: a Jordan curve separates the plane into exactly two regions, one bounded and one unbounded, each with the curve as its boundary. Stated asIsSeparating C, the same predicatethm:polygonal-jordanuses, so that every consumer written against the polygonal case applies verbatim.Schoenflies.crosscut_theorem,Schoenflies.crosscut_theorem_three_regions—thm:general-crosscut.
thm:arc-complement. If A is a simple arc in the plane, then ℝ² ∖ A is connected.
thm:arc-complement, the polygonal form. Two distinct points off a simple arc are
joined, off the arc, by a simple polygonal arc.
thm:jordan, the Jordan curve theorem. The complement of a Jordan curve has exactly two
regions, one bounded and one unbounded, and both have the curve as their boundary.
IsSeparating packages all of that, and is the same predicate the polygonal case
(Schoenflies.ClosedPolygon.polygonal_jordan) is stated through — so Schoenflies.inside,
Schoenflies.outside and the whole region API of Schoenflies/CrosscutCells.lean apply to a
general Jordan curve with nothing to transport.
thm:general-crosscut, first sentence. A polygonal crosscut of a Jordan domain cuts it
into exactly two components, the interiors of the two curves the crosscut makes with the two
arcs of C. The two sides are labelled by which arc of C their closure meets.