The plane minus finitely many open squares is locally polygonally connected #
This is brick B5 of the polygonal-redrawing argument. The redrawing cuts an open axis-parallel
square out of the plane around each vertex of the graph; what the rest of the argument needs of
the leftover set M is that it is locally polygonally connected — every point of M has a
relatively open neighbourhood all of whose points are joined to each other by polygonal paths
running inside M. That is what feeds the clopen argument one level up (brick B6), where the
basic open piece is no longer a ball.
The informal description of the three basic shapes — a disk away from every square, a half-disk against one side, a three-quarter disk at a corner — suggests an angular case analysis. There is none here. Both the squares and the basic neighbourhoods are axis-parallel, so each shape is an intersection of a small square with the complement of an open square, and
- the complement of an open square is the union of the four closed coordinate half-planes that
bound it (
Plane.compl_openSquare_subset_iUnion); - intersecting with a small square gives four rectangles, each convex;
- if the small square is small enough, each of those rectangles is either empty or contains the
centre
p(Plane.exists_radius_sides).
A union of convex sets with a common point is polygonally connected by two segments through that
point, which is isLocallyPolyConnAt_of_star. The three shapes are then just the three ways the
list of nonempty pieces can come out (one, two adjacent, or two adjacent again with p on the
corner) and none of them has to be named.
The passage from one square to finitely many is a shrinking step: since the closed squares are
pairwise disjoint, a point lies in at most one of them, and a small enough neighbourhood of any
point misses all the others outright, so M looks locally exactly like the one-square case.
Blueprint #
PolyConnIn— "joined by a polygonal path insideS"; the relation Lemma 1.1 produces.IsLocallyPolyConn— the local form of polygonal connectedness, brick B5's conclusion.polyConnIn_of_convex,polyConnIn_union_of_convex— a rectangle, and two rectangles that meet, are polygonally connected.Plane.sideHalfPlane,Plane.sideGap— the four half-planes bounding a square and the room between a point and each of them.isLocallyPolyConnAt_compl_openSquare— the one-square case: the complement of any open square is locally polygonally connected, at every point of the plane.isLocallyPolyConn_compl_biUnion— brick B5: the plane minus finitely many open squares with pairwise disjoint closures is locally polygonally connected.
Two list lemmas about poly #
PolyPath.lean has poly_concat, which extends a vertex list by a single vertex. Transitivity
and symmetry of polygonal connectedness need the two-list versions; both are general facts about
poly and belong beside poly_concat rather than here.
Polygonal connectedness inside a set #
x and y are joined by a polygonal path lying inside S.
This is the relation exists_poly_of_isPreconnected produces; naming it lets the local statement
below be phrased without repeating the vertex-list existential.
Equations
- Schoenflies.PolyConnIn S x y = ∃ (vs : List Schoenflies.Plane) (h : vs ≠ []), Schoenflies.poly vs ⊆ S ∧ vs.head h = x ∧ vs.getLast h = y
Instances For
The two relations agree #
PolyReaches.exists_poly and polyReaches_of_poly_subset are both on main; this is the
one-line packaging that lets a producer of either relation serve a consumer of the other.
The vertex-list relation of LocallyPolygonal.lean and the inductive relation of
PolygonalCarrier.lean are the same relation.
Alias of the forward direction of Schoenflies.polyConnIn_iff_polyReaches.
The vertex-list relation of LocallyPolygonal.lean and the inductive relation of
PolygonalCarrier.lean are the same relation.
Alias of the reverse direction of Schoenflies.polyConnIn_iff_polyReaches.
The vertex-list relation of LocallyPolygonal.lean and the inductive relation of
PolygonalCarrier.lean are the same relation.
A point joined to anything lies in the carrier.
The local statement #
S is polygonally connected near p: some open U containing p has all the points of
U ∩ S joined to each other by polygonal paths inside S.
U ∩ S is the relative neighbourhood; stating it through an ambient open set avoids carrying a
subtype topology. Note the paths are required to lie in S, not in the neighbourhood — that is
the form brick B6's clopen argument consumes.
Equations
- Schoenflies.IsLocallyPolyConnAt S p = ∃ (U : Set Schoenflies.Plane), IsOpen U ∧ p ∈ U ∧ ∀ x ∈ U ∩ S, ∀ y ∈ U ∩ S, Schoenflies.PolyConnIn S x y
Instances For
S is locally polygonally connected: polygonally connected near each of its points.
Equations
- Schoenflies.IsLocallyPolyConn S = ∀ p ∈ S, Schoenflies.IsLocallyPolyConnAt S p
Instances For
The gluing step, and the whole geometric content of the three shapes: if the relative
neighbourhood is covered by convex pieces each of which is either empty or contains p, then
any two of its points are joined by two segments through p.
No piece is required to be nonempty and no piece is named, so the same statement covers the disk, the half-disk and the three-quarter disk at once.
The four sides of a square #
The centre of a square of positive radius is in it.
Squares about a point grow with the radius.
The closed half-plane on the far side of the i-th pair of sides of the square about c of
radius r; b = true picks the upper one. The four of them cover the complement of the square,
and each is convex, which is all the argument uses them for.
Equations
Instances For
How much room there is between p and the half-plane sideHalfPlane c r i b: positive
exactly when p is outside it, and an upper bound on a square radius that keeps a neighbourhood
of p clear of it.
Instances For
Each of the four half-planes misses the open square.
The complement of an open square is covered by the four closed half-planes bounding it.
If the radius is at most the room between p and a half-plane, the square about p of that
radius misses the half-plane. No sign condition on the gap: when it is nonpositive the radius is
too, and the square is empty.
Each piece the sides of one square cut a small square into is an axis-parallel rectangle — an intersection of four coordinate strips with one more coordinate half-plane — and is therefore convex. This is the only property of the three basic shapes the argument uses.
Choosing one radius for finitely many constraints #
A positive lower bound for whichever members of a finite family happen to be positive.
This is exists_pos_le_of_finite with the selection built in; the members that are nonpositive
impose nothing.
A radius small enough that the square about p misses every side half-plane of the square
about c that p itself is outside of.
The one-square case #
The one-square case of brick B5. The complement of an open axis-parallel square is polygonally connected near every point of the plane.
The neighbourhood is a small square about p; intersected with the complement it becomes the
union of the four rectangles cut off by the sides of the big square, each convex and each either
empty or containing p. That is the disk / half-disk / three-quarter-disk trichotomy, with the
cases never distinguished.
Finitely many squares #
Brick B5. The plane minus finitely many open axis-parallel squares whose closed squares are pairwise disjoint is locally polygonally connected.
Two steps. Away from all the closed squares a small square about p is convex and already
inside M. Otherwise p lies in exactly one closed square — exactly one, by disjointness — and
a small enough square about p misses all the others, so near p the set M is the
complement of that one open square and the previous theorem's decomposition applies verbatim.