Discharging the realization hypothesis of lem:k33 #
Schoenflies/Graph/K33Planar.lean proves the nonplanarity of K(3,3) from one assumption,
Graph.IsHexRealization: that the six-cycle, the two arcs the chord cuts it into, and the two
closed curves the chord forms with them are all presented by cyclic vertex lists.
Schoenflies/Realization.lean now supplies the presentations. This module wires the two
together.
Blueprint #
Schoenflies.exists_poly_anchored,Schoenflies.IsPolygonal.union,Graph.IsDrawing.isPolygonal_edgesCover— §1: a polygonal set is the carrier of a vertex list running between any two of its points, so two polygonal sets that meet have a polygonal union, and a walk of a polygonal plane graph draws a polygonal set.Schoenflies.ClosedPolygon.reverse— a closed polygon read backwards.Schoenflies.ClosedPolygon.arc_vertex_eq,…arcPieces_eq— the decomposition of an arc is the arc's own: two closed polygons that share an arc, starting at the same vertex, run through the same vertices along it. This is what makes the three presentations below fit together into one crosscut.Schoenflies.exists_closedPolygon_arcs_oriented— the realization of a splitting with the first arc's direction fixed as well, so that two realizations of one arc can be compared.Graph.IsK33Config.isPolygonal_hexSet,…chord_inter_arcA,…chord_inter_arcB— the three curves the crosscut is built from, as polygonal Jordan curves.Graph.IsHexGeneric— the general-position hypothesis that survives: at each of the two cut points, the six-cycle and both spliced curves turn.Graph.IsK33Config.isHexRealization—Graph.IsHexRealization, discharged from it. This is the theorem this module exists for.Graph.Bendable,Graph.IsK33Config.false_of_hexGeneric,…not_isDrawing_of_bendable,Graph.IsArcK33.false_of_bendable,Graph.IsK33Subdivision.false_of_bendable,Graph.k33Graph_not_isDrawing—lem:k33andcor:k33-subdivisionwithIsHexRealizationreplaced byIsHexGeneric.
What is still assumed, and why — READ THIS BEFORE USING THE THEOREMS BELOW #
Milestone H8 is not closed here. Graph.IsHexRealization is gone, but a strictly smaller
hypothesis has taken its place, and it is not discharged.
Schoenflies.ClosedPolygon forbids a vertex at which the curve runs straight through, and
Schoenflies.ClosedPolygon.isCornerAt_vertex says that this is not a defect of the proofs:
every vertex of every realization is a corner of the curve. A crosscut whose ends are cut
points of C therefore forces those ends to be corners — of C, and of both curves the
crosscut forms with the two arcs. Graph.IsHexGeneric says exactly that and nothing more, and
by the two corner theorems it cannot be weakened while the crosscut is presented as a
Schoenflies.IsPolygonalCrosscut.
For a drawn K(3,3) it is the statement that at each of the six vertices the three edges leave
along three pairwise non-collinear germs. A polygonal drawing need not have that: two of the
three edges at a vertex may leave along exactly opposite rays, which is perfectly compatible
with the drawing condition. The remaining gap is therefore a bending lemma — every polygonal
drawing can be redrawn so that no two edges at a vertex are collinear there — and it is
genuinely about changing the drawing, not about presentations. Graph.Bendable is that
statement in the shape the theorems below consume; nothing here proves it.
A polygonal set is a vertex list between any two of its points #
Schoenflies.IsPolygonal is "the carrier of a vertex list", and a vertex list carries a path,
so the predicate is not closed under arbitrary finite unions — two disjoint segments are not the
carrier of any one list. It is closed under unions that meet, and the way to see that is to move
the ends of the list: a list can be made to start and end wherever one likes on its own carrier,
by running out and back.
A closed polygon read backwards #
A realization of a splitting names its two arcs in a direction, and two realizations of one arc need not agree on it. Reversing the cyclic order is what reconciles them.
The same closed polygon, traversed the other way.
Equations
Instances For
Reversing does not change the edge list either, up to the order and the naming of each
edge's two ends — which is exactly what Schoenflies.SameEdges forgives.
The decomposition of an arc is the arc's own #
Graph.IsHexRealization asks for three closed polygons that agree on the arcs they share. They
are found independently, and nothing so far says they agree — until this: two closed polygons
carrying the same arc, and starting it at the same vertex, run through the same vertices along
it. The proof walks the arc: the first edges of the two are two segments leaving one point along
one ray, so one contains the other, and the shorter one's far end would be a vertex of its own
polygon interior to an edge of the other — which corner forbids.
The first vertex of an arc lies on none of its later edges — a step index below the modulus reaches neither the edge leaving that vertex nor the one arriving at it.
Around a point that no later edge of the arc reaches, the arc is its first edge alone.
A vertex of one polygon is never interior to the other's first edge. Either the shared
arc is that single edge — and then the far end of the edge cannot be strictly inside it — or the
other polygon has two edges at the vertex, both lying near it inside one straight segment, which
is what its corner field forbids.
A one-edge arc has no second edge. If the same arc were also presented with two or more
edges, its second edge would lie inside its first, which edges_meet forbids.
Two closed polygons that carry the same arc, starting it at the same vertex, run through the same vertices along it — and in particular use the same number of edges. This is what makes independent realizations of the six-cycle and of the two spliced curves agree.
Two closed polygons that carry the same arc, starting it at the same vertex, cut it into the same edges.
The realization of a splitting, with the first arc's direction fixed too. The two arcs of
Schoenflies.exists_closedPolygon_arcs_ordered come out in the order they were given, but the
polygon may traverse them either way; reading it backwards when it does is what pins the first
arc to start at p. Two realizations of one arc can then be compared with
Schoenflies.ClosedPolygon.arcPieces_eq.
What the realization needs from the drawing, and nothing else #
General position at the two cut points of the crosscut indexed by s. At each of the two
ends x s and y (s + 1) of the remaining edge, the six-cycle turns, and so does each of the two
closed curves the remaining edge forms with the two halves of the six-cycle.
This is not a hypothesis chosen for convenience. Schoenflies.ClosedPolygon.isCornerAt_vertex and
Schoenflies.ClosedPolygon.exists_vertex_eq_of_isCornerAt together say that the vertex set of a
realization is the corner set of the curve; a crosscut cutting C at these two points forces
them to be vertices of all three closed polygons, hence corners of all three curves. For a drawn
K(3,3) it says that at each of the six vertices no two of the three edges leave along one
line.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The first half of the six-cycle is polygonal: it is drawn by a path.
The second half of the six-cycle is polygonal.
The six-cycle of a polygonally drawn K(3,3) is polygonal: it is the union of its two
halves, which meet.
A remaining edge meets the first half of the six-cycle exactly in its own two ends.
A remaining edge meets the second half of the six-cycle exactly in its own two ends.
Graph.IsHexRealization, discharged. The six-cycle and the two curves the remaining edge
forms with its halves are three polygonal Jordan curves, so
Schoenflies.exists_closedPolygon_arcs_oriented presents each of them as a closed polygon whose
two arcs are the two given halves, both read from x s to y (s+1).
The three presentations are found independently, and what makes them fit together is
Schoenflies.ClosedPolygon.arcPieces_eq: two closed polygons carrying one arc from one vertex cut
it into the same edges. So the six-cycle's presentation and the first spliced curve's agree on the
first half, the six-cycle's and the second spliced curve's agree on the second half, and the two
spliced curves agree on the remaining edge — the last only after reversing one of them, since a
crosscut is traversed one way in each of the two curves it bounds.
lem:k33 and cor:k33-subdivision, with the realization gone #
What is left as a hypothesis is a bending step, and only that: every polygonal drawing can be redrawn so that no two edges at a vertex leave it along one line.
lem:k33 for a polygonal drawing in general position.
Lemma 3.10 (nonplanarity of K(3,3)), with only the bending step assumed. A graph
carrying a copy of K(3,3) has no plane drawing, provided a polygonal drawing can be bent into
general position at the six vertices.
The bending step, for the abstract K(3,3) on six named points of the plane: every
polygonal drawing of it can be redrawn, polygonally, so that at each of the six vertices no two
of the three edges leave along one line. This is the one thing left unproved; see "What is still
assumed" in the module docstring.
Equations
- One or more equations did not get rendered due to their size.
Instances For
lem:k33 for nine arcs: no nine arcs in the plane meet only where a K(3,3) forces them
to, assuming Graph.Bendable.
Corollary 3.11 (subdivisions of K(3,3)). No subdivision of K(3,3) has a plane
drawing, assuming Graph.Bendable, and only for the contracted graph k33Graph x y,
whose nine edges are the branch paths.
The headline: K(3,3) has no plane drawing. Stated for the concrete graph
Graph.k33Graph x y, whose nine edges are the index pairs. Assuming Graph.Bendable, the
one hypothesis this module leaves standing.