The utility graph K(3,3) inside a plane graph #
The blueprint's proof of lem:k33 is four sentences: regard K(3,3) as the six-cycle
x₀y₀x₁y₁x₂y₂x₀ together with the three remaining edges x₀y₁, x₁y₂, x₂y₀; the six-cycle is
a Jordan curve; each remaining edge lies wholly on one side of it; two of the three lie on the
same side, and their endpoints alternate on the six-cycle, contrary to
cor:alternating-crosscuts.
Everything in that proof except the last two citations is established here. What is left is
the polygonal Jordan curve theorem — which supplies "the two sides" — and the alternating
crosscut corollary itself; neither exists yet, so lem:k33 is not stated. See the note at the
end of this docstring for exactly how the last step will read.
K(3,3) is a configuration, not a graph #
There is no K33 : Graph α β. A copy of K(3,3) inside G is Graph.IsK33Config G x y e:
six vertices x 0, x 1, x 2, y 0, y 1, y 2, all distinct, and nine edge names e i j with
e i j linking x i to y j. Nothing says G has no other vertex or edge.
This is the shape the theorem is used in — one always finds a K(3,3) inside a graph one
already has, never constructs the abstract one — and it is also what makes the drawing
hypothesis land correctly: Graph.IsDrawing G drawing is a hypothesis about all of G, so
taking G larger only strengthens it.
Two economies follow from stating the configuration this way. The nine edge names are
automatically distinct (Graph.IsK33Config.eq_of_e_eq): an edge has only two ends, so two
names coinciding would force the index pairs to agree. And no looplessness clause is needed:
x i ≠ y j is one of the four fields.
The indexing is arithmetic in Fin 3, so that decide can do the bookkeeping #
The six-cycle uses the edges e i i and e (i+1) i; the three remaining edges are
e s (s+1) for s : Fin 3. Every combinatorial side condition below — that a remaining edge
is not a cycle edge, that the two arcs of the cut cycle cover it and meet only at the cut
points — is a statement about index pairs quantified over Fin 3, and is discharged by
decide. The edges themselves never have to be compared.
The two arcs into which the ends of the remaining edge e s (s+1) cut the six-cycle are named
by their index pairs as well (Graph.arcAPairs, Graph.arcBPairs); Graph.arcA and
Graph.arcB are the corresponding edge lists, rfl-equal to the mapped pair lists so that
both presentations are available with no conversion lemma.
Blueprint #
Graph.IsK33Config— a copy of the utility graph.Graph.IsK33Config.hexagon_isCycleThrough— §"Plane graphs and the utility graph": "regardK(3,3)as the six-cyclex₁y₁x₂y₂x₃y₃x₁together with the three remaining edges".Graph.IsK33Config.hexagon_isJordanCurve—lem:k33, "the six-cycle is a polygonal Jordan curve". Polygonality plays no part; it is needed only where the polygonal Jordan curve theorem is applied to the result.Graph.IsK33Config.chord_inter_hexSet,Graph.IsK33Config.chord_openArc_eq,Graph.IsK33Config.chord_openArc_subset_connectedComponentIn—lem:k33, "each remaining edge lies wholly on one side": a remaining edge meets the six-cycle in exactly its own two ends, so its interior is a connected subset of the complement, hence lies in one component. This is also the crosscut hypothesis ofthm:polygonal-crosscutandcor:alternating-crosscuts.Graph.IsK33Config.exists_two_chords_same_side—lem:k33, "two of the three lie on the same side". The two sides arrive as an arbitrary pair of disjoint open sets covering the complement, which is the formthm:polygonal-jordanwill supply them in.Graph.IsK33Config.chords_alternate—lem:k33, "their endpoints alternate on the six-cycle", in the formcor:alternating-crosscutsconsumes: the ends of one remaining edge cut the cycle into two arcs meeting only at those ends, and the two ends of another remaining edge lie one interior to each. Every pair of remaining edges is of the form(s, s+1), so the single indexscovers all three pairs.Graph.IsK33Config.chords_disjoint— the disjointness thatcor:alternating-crosscutscontradicts: two remaining edges have four distinct ends, and distinct edges of a plane graph meet only at a shared end.
How lem:k33 will close. Given a plane drawing of a graph with a K(3,3) configuration,
make it polygonal (Graph.polygonal_redrawing, lem:polygonal-redrawing); the six-cycle is
then a polygonal Jordan curve, and thm:polygonal-jordan gives the two disjoint open sides
that exists_two_chords_same_side wants. It returns two remaining edges on the same side;
chords_alternate says their ends alternate, so cor:alternating-crosscuts makes them meet,
and chords_disjoint says they do not.
A copy of the utility graph K(3,3) inside G.
e i jjoins thei-th vertex of one side to thej-th vertex of the other.- x_injective : Function.Injective x
The three vertices of the first side are distinct.
- y_injective : Function.Injective y
The three vertices of the second side are distinct.
The two sides are disjoint.
Instances For
The nine edges carry nine different names. This is not an axiom of the configuration: an edge has only two ends, so two of the nine names being equal would force the two index pairs to agree.
Freshness, in the form the path constructor asks for. A vertex which is neither the source of the rest of the walk nor an end of any of its edges is not among the vertices that rest visits.
The six-cycle #
The blueprint reads K(3,3) as the six-cycle x₀y₀x₁y₁x₂y₂x₀ together with the three
remaining edges. The cycle is presented as Schoenflies/Graph/Cycle.lean presents one:
through the edge e 0 0, with a detour path running the other way round.
The index pairs of the six edges of the six-cycle, in the order the cycle is traversed
starting from e 0 0. Kept as index pairs, not as edges, because every question about which
edges the cycle uses is then decidable.
Instances For
The detour of the six-cycle is a path. Each freshness clause says that the vertex a step departs from is none of the six vertices the rest of the detour meets.
The six-cycle is a cycle, presented through the edge e 0 0.
The three remaining edges #
e s (s+1), for s : Fin 3, are the three edges of K(3,3) that the six-cycle leaves out.
The six-cycle cut at the ends of one remaining edge #
The two ends of the remaining edge e s (s+1) are x s and y (s+1), and they cut the
six-cycle into two paths: x s → y s → x (s+1) → y (s+1) and
x s → y (s+2) → x (s+2) → y (s+1). The other two remaining edges each have one end interior
to the first and one end interior to the second — this is the blueprint's "their endpoints
alternate on the six-cycle".
The six-cycle drawn in the plane #
Everything from here on is about a drawing of the configuration. Nothing in this section
uses more geometry than the three clauses of Graph.IsDrawing.
The point set of the six-cycle of a drawn K(3,3).
Equations
- Graph.hexSet drawing e = Graph.edgesCover drawing (Graph.hexList e)
Instances For
The six-cycle of a drawn K(3,3) is a Jordan curve. This is the blueprint's "the
six-cycle is a polygonal Jordan curve"; polygonality plays no part in it, and is needed only
where the polygonal Jordan curve theorem is applied to the result.
The i-th vertex of the first side lies on the six-cycle.
The j-th vertex of the second side lies on the six-cycle.
Each of the three remaining edges is a crosscut of the six-cycle: its arc meets the cycle in exactly its own two ends.
The interior of a remaining edge, as the blueprint reads it: its arc without its two ends.
A remaining edge lies wholly off the six-cycle except at its ends.
Each of the three remaining edges lies wholly on one side of the six-cycle: its interior, being connected and disjoint from the cycle, lies in a single connected component of the complement.
Two distinct remaining edges are disjoint. Their four ends are distinct, and two distinct edges of a plane graph meet only at a shared end.
The two arcs the ends of a remaining edge cut the six-cycle into #
The two arcs make up the six-cycle.
The two arcs meet exactly in the two ends of the remaining edge that cuts the cycle.
The endpoints of two of the three remaining edges alternate on the six-cycle.
The remaining edge indexed by s has ends x s and y (s+1); they cut the six-cycle into
two arcs A and B meeting only in those two points. The remaining edge indexed by s+1
has ends x (s+1) and y (s+1+1), and this says one of them is interior to A and the other
interior to B. Since the three remaining edges are indexed by Fin 3, every pair of them
is of this form, which is what the blueprint's "their endpoints alternate on the six-cycle"
asserts.
Two of the three remaining edges lie on the same side #
A remaining edge lies wholly in one of two disjoint open sets covering the complement of the six-cycle: its interior is connected and misses the cycle.
Two of the three remaining edges lie on the same side of the six-cycle. The blueprint's "two of the three lie on the same side": three edges, two sides. The two sides arrive here as an arbitrary pair of disjoint open sets covering the complement of the cycle, which is the form the polygonal Jordan curve theorem supplies them in.