coloring_nested_tire_graphs: prove no level-d pinches (Prop 1.7)

Adds Proposition 1.7 (Source-side simple-cycle property): in any
maximal planar graph G with single-vertex source v_0, for any vertex
v at level d and any connected component C' of G'_d incident to v,
the depth-d faces of F_{C'} at v form a single contiguous arc in v's
rotation in Pi_G.  Equivalently: the source-side boundary of R_{C'}
is always a simple cycle in L_d, with no cut-vertices at level d.

Proof: contradiction via Jordan curve theorem.  If two arcs of
depth-d faces at v exist, pick level-(d-1) neighbours p, q of v in
the two gaps.  The BFS ball G[L_{<d}] is connected so admits a simple
path P from p to q.  The closed walk v -> p -> P -> q -> v is a
simple cycle W (since v is the only vertex at level >= d on it).  W
separates the plane into two regions; the two arcs at v lie on
opposite sides.  Any dual path of depth-d faces from one arc to the
other must avoid v on its intermediate faces, but consecutive
intermediate faces share edges entirely in L_{>= d}, so the dual
path stays on one side of W.  This contradicts the endpoints being
on opposite sides.

Lemma 1.8 (the tire-component lemma) now cites Proposition 1.7 to
justify that B_out is always a simple cycle.  Level-(d+1) pinches
(cut-vertices of O) remain allowed and are accommodated by the
relaxed Definition 1.5.

The empirical search (n in [7, 12], 47k + 276k = 323k components,
13k+ pinches all level-(d+1) cut-vertices of O, zero level-d
pinches) is now subsumed by the structural proof.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-25 17:04:13 -04:00
parent 78afa9aeeb
commit c2961b1833
5 changed files with 202 additions and 37 deletions
@@ -0,0 +1,93 @@
"""Attempt to construct a level-d pinch in a maximal planar graph.
Construction:
v_0 at center, pentagon a_1, ..., a_5 around v_0.
Outside the pentagon, vertex v adjacent to a_1, a_3 (non-adjacent
pentagon vertices). The "lobe" between v and the pentagon edge
a_1-a_2-a_3 contains a_2 and is triangulated by adding vertex x
in the lobe, x adjacent to a_1, a_2, a_3, v. On the OTHER side of
v (outside the V formed by edges v-a_1, v-a_3), we triangulate by
adding w_1 adjacent to a_1, a_3, a_4, a_5, v.
Vertex labels:
0 = v_0 (source)
1..5 = a_1..a_5 (pentagon, level 1)
6 = v (level 2)
7 = x (level 2)
8 = w_1 (level 2)
If this is planar and is a maximal planar graph, then v has level-1
neighbours a_1=1, a_3=3 in DIFFERENT arcs of v's rotation, separated
by level-2 neighbours x=7 on the lobe side and w_1=8 on the outer side.
This would be a level-d (d=2) pinch.
"""
import os
import sys
from collections import defaultdict
from sage.all import Graph
EDGES = [
(0, 1), (0, 2), (0, 3), (0, 4), (0, 5),
(1, 2), (2, 3), (3, 4), (4, 5), (5, 1),
(6, 1), (6, 3), (6, 7), (6, 8),
(7, 1), (7, 2), (7, 3),
(8, 1), (8, 3), (8, 5), (8, 4),
]
def main():
G = Graph(EDGES)
print(f"n = {G.order()}, m = {G.size()}")
print(f"Max planar would need m = 3n - 6 = {3 * G.order() - 6}")
print(f"Planar: {G.is_planar()}")
if not G.is_planar():
print("Not planar -- construction failed.")
return
G.is_planar(set_embedding=True)
emb = G.get_embedding()
print(f"Rotation around v=6: {emb[6]}")
dist = G.shortest_path_lengths(0)
print(f"BFS distances from source v_0=0: {dict(dist)}")
print()
# Pretty-print rotation of vertex 6 with levels
rot_6 = emb[6]
print(f"v=6's rotation in Pi_G: {rot_6}")
print(f" levels: {[dist[u] for u in rot_6]}")
# Check faces around vertex 6
faces = G.faces(embedding=emb)
faces_at_6 = []
for f in faces:
verts = [e[0] for e in f]
if 6 in verts:
d = min(dist[v] for v in verts)
faces_at_6.append((verts, d))
print(f"\nFaces at vertex 6:")
for f, d in faces_at_6:
print(f" {f} depth={d}")
# Check the depth-(d-1=1)? No, we want vertex 6 at level 2.
# We're checking: vertex 6 (level 2) with level-1 neighbors {1, 3}.
# Are they in the same arc of vertex 6's rotation?
level1_nbrs = [u for u in rot_6 if dist[u] == 1]
print(f"\nLevel-1 neighbours of v=6: {level1_nbrs}")
if len(level1_nbrs) > 1:
# Find arcs
positions = [i for i, u in enumerate(rot_6) if dist[u] == 1]
print(f" positions in rotation: {positions}")
# Are they contiguous? Count runs
in_l1 = [dist[u] == 1 for u in rot_6]
n_runs = sum(1 for i in range(len(in_l1))
if in_l1[i] and not in_l1[(i - 1) % len(in_l1)])
print(f" number of arcs of level-1 neighbours: {n_runs}")
if n_runs > 1:
print(" ==> LEVEL-d PINCH! Counterexample constructed.")
else:
print(" ==> single contiguous arc. No pinch.")
if __name__ == '__main__':
main()
+7 -6
View File
@@ -4,19 +4,20 @@
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Dual depth in a stacked-ring triangulation $G$ with level source $S = \{0\}$. Each $G$ vertex is labelled by its level $\ell $. Each bounded face carries a dual vertex (square, joined by dashed dual edges) coloured by its dual depth $\delta (d_f) = \qopname \relax m{min}_{v \in V(f)} \ell (v)$: the central fan has depth $0$, the inner annulus depth $1$, and the outer annulus depth $2$. The outer face (the level-$3$ triangle) is excluded from the inner dual and carries no dual vertex.}}{2}{}\protected@file@percent }
\newlabel{fig:dual-depth}{{1}{2}}
\newlabel{def:tire-graph}{{1.5}{2}}
\citation{bauerfeld-pds}
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces A tire graph with non-degenerate boundaries: outer boundary $B_{\mathrm {out}}$ a $6$-cycle on vertices $0,\dots ,5$ (blue), inner boundary $B_{\mathrm {in}}$ a $4$-cycle on vertices $6,\dots ,9$ (red), inner outerplanar graph $O = B_{\mathrm {in}} \cup \{7\text {--}9\}$ (with one chord, orange), and $E_{\mathrm {ann}}$ (grey) tiling the annulus between $B_{\mathrm {out}}$ and $B_{\mathrm {in}}$ by ten triangular faces.}}{3}{}\protected@file@percent }
\newlabel{fig:tire-example}{{2}{3}}
\newlabel{rem:tire-counts}{{1.6}{3}}
\newlabel{lem:tire-component}{{1.7}{3}}
\newlabel{prop:no-level-d-pinch}{{1.7}{3}}
\citation{bauerfeld-pds}
\newlabel{lem:tire-component}{{1.8}{4}}
\citation{bauerfeld-pds}
\newlabel{rem:tire-component-degenerate}{{1.9}{5}}
\bibcite{bauerfeld-pds}{1}
\newlabel{tocindent-1}{0pt}
\newlabel{tocindent0}{12.7778pt}
\newlabel{tocindent1}{17.77782pt}
\newlabel{tocindent2}{0pt}
\newlabel{tocindent3}{0pt}
\newlabel{rem:tire-component-degenerate}{{1.8}{5}}
\newlabel{rem:tire-no-extra-hypotheses}{{1.9}{5}}
\@writefile{toc}{\contentsline {section}{\tocsection {}{}{References}}{5}{}\protected@file@percent }
\gdef \@abspage@last{5}
\newlabel{rem:tire-no-extra-hypotheses}{{1.10}{6}}
\@writefile{toc}{\contentsline {section}{\tocsection {}{}{References}}{6}{}\protected@file@percent }
\gdef \@abspage@last{6}
+29 -26
View File
@@ -1,4 +1,4 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 25 MAY 2026 16:37
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 25 MAY 2026 17:03
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
@@ -207,36 +207,39 @@ File: fig_tire_example.png Graphic file (type png)
<use fig_tire_example.png>
Package pdftex.def Info: fig_tire_example.png used on input line 160.
(pdftex.def) Requested size: 280.79956pt x 188.56097pt.
[3 <./fig_tire_example.png>] [4] [5] (./paper.aux) )
[3 <./fig_tire_example.png>] [4]
Underfull \vbox (badness 1270) has occurred while \output is active []
[5]
[6] (./paper.aux) )
Here is how much of TeX's memory you used:
3007 strings out of 478268
42015 string characters out of 5846347
344166 words of memory out of 5000000
21054 multiletter control sequences out of 15000+600000
3008 strings out of 478268
42038 string characters out of 5846347
345177 words of memory out of 5000000
21055 multiletter control sequences out of 15000+600000
475666 words of font info for 53 fonts, out of 8000000 for 9000
1302 hyphenation exceptions out of 8191
69i,8n,76p,625b,289s stack positions out of 10000i,1000n,20000p,200000b,200000s
</usr/local/texlive/2022/t
exmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></usr/local/texlive/2022/te
xmf-dist/fonts/type1/public/amsfonts/cm/cmcsc10.pfb></usr/local/texlive/2022/te
xmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb></usr/local/texlive/2022/tex
mf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/local/texlive/2022/texm
f-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb></usr/local/texlive/2022/texmf-
dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb></usr/local/texlive/2022/texmf-di
st/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/local/texlive/2022/texmf-dist
/fonts/type1/public/amsfonts/cm/cmr5.pfb></usr/local/texlive/2022/texmf-dist/fo
nts/type1/public/amsfonts/cm/cmr7.pfb></usr/local/texlive/2022/texmf-dist/fonts
/type1/public/amsfonts/cm/cmr8.pfb></usr/local/texlive/2022/texmf-dist/fonts/ty
pe1/public/amsfonts/cm/cmsy10.pfb></usr/local/texlive/2022/texmf-dist/fonts/typ
e1/public/amsfonts/cm/cmsy5.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1
/public/amsfonts/cm/cmsy7.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/p
ublic/amsfonts/cm/cmti10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/pu
blic/amsfonts/cm/cmti8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/publ
ic/amsfonts/symbols/msam10.pfb>
Output written on paper.pdf (5 pages, 483570 bytes).
</usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfo
nts/cm/cmbx10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfon
ts/cm/cmcsc10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfon
ts/cm/cmex10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfont
s/cm/cmmi10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts
/cm/cmmi5.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/c
m/cmmi7.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/
cmr10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cm
r5.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.
pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb
></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb>
</usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy5.pfb></
usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb></us
r/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb></usr
/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti8.pfb></usr/l
ocal/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/symbols/msam10.pfb>
Output written on paper.pdf (6 pages, 492830 bytes).
PDF statistics:
105 PDF objects out of 1000 (max. 8388607)
61 compressed objects within 1 object stream
108 PDF objects out of 1000 (max. 8388607)
63 compressed objects within 1 object stream
0 named destinations out of 1000 (max. 500000)
11 words of extra memory for PDF output out of 10000 (max. 10000000)
Binary file not shown.
+73 -5
View File
@@ -178,6 +178,68 @@ boundary is degenerate (so $\min(m, k) = 1$), there are $m + k - 1$
triangular faces and $|E_{\mathrm{ann}}| = m + k - 1$.
\end{remark}
\begin{proposition}[Source-side simple-cycle property]
\label{prop:no-level-d-pinch}
Let $G$ be a maximal planar graph with planar embedding $\Pi_G$ and
single-vertex source $v_0$. Let $d \geq 1$, $v \in L_d$, and let
$C'$ be a connected component of $G'_d$ such that $v$ is incident to
some face in $F_{C'}$. Then the depth-$d$ faces in $F_{C'}$ incident
to $v$ form a single contiguous arc in $v$'s rotation in $\Pi_G$.
Equivalently: for any such component, the source-side boundary of
$R_{C'}$ is a simple cycle in $L_d$ (no cut-vertices at level $d$).
\end{proposition}
\begin{proof}
Suppose for contradiction that the depth-$d$ faces in $F_{C'}$ at $v$
lie in two or more disjoint arcs of $v$'s rotation. Adjacent vertices
in $G$ differ in level by at most $1$, so a face at $v$ has depth
exactly $d$ iff both other vertices have level $\geq d$, and depth
$\leq d-1$ iff at least one has level $d-1$. Hence the gaps between
the depth-$d$ arcs at $v$ are populated by level-$(d-1)$ neighbours of
$v$, occurring in at least two disjoint arcs of $v$'s rotation. Pick
$p$ in one such gap and $q$ in another.
The BFS ball $G[L_{<d}]$ is connected, so there exists a simple path
$P$ in $G[L_{<d}]$ from $p$ to $q$. Define the closed walk
\[
W \;:=\; v \to p \to P \to q \to v.
\]
Every vertex of $P$ lies in $L_{<d}$, while $\ell(v) = d$, so $v$ is
distinct from every vertex of $P$; $P$ is simple, so its internal
vertices are distinct; and $p \neq q$ since they lie in different gaps.
Hence $W$ is a simple cycle in $G$.
By the Jordan curve theorem, the planar embedding of $W$ divides $\Pi_G$
into two regions. In $v$'s rotation, the edges $v-p$ and $v-q$ lie at
two specific positions, and they split the rotation into two arcs;
each arc lies in one of the two regions determined by $W$. By choice
of $p, q$, the two arcs of depth-$d$ faces at $v$ in $F_{C'}$ lie in
different regions of $W$ (i.e., one arc on each side).
Since $C'$ is connected in $G'$ and contains depth-$d$ faces in both
arcs, there is a dual path $f_1, f_2, \ldots, f_k$ in $G'_d$ with
$f_1, f_k \in F_{C'}$ incident to $v$ in different arcs, and with the
intermediate faces $f_2, \ldots, f_{k-1}$ not incident to $v$ (a
shortest such dual path). Consecutive faces $f_i, f_{i+1}$ share an
edge $e_i$ of $G$; for $i \geq 2$, both endpoints of $e_i$ lie in
$L_{\geq d}$ (since neither $f_i$ nor $f_{i+1}$ is incident to $v$,
all six vertices of these two triangles lie in $L_{\geq d}$). In
particular, $e_i$ shares no endpoint with $W$ except possibly $v$ ---
and $v$ is excluded from $f_2, \ldots, f_{k-1}$.
A planar edge with neither endpoint on a simple closed planar curve
$W$ has both of its incident faces on the same side of $W$. Applying
this to each $e_i$ ($i \geq 2$) inductively: starting from $f_2$ on
the same side of $W$ as $f_1$ (their shared edge $e_1 = w-w'$ opposite
to $v$ in $f_1$ has $w, w' \in L_{\geq d}$ and hence is not on $W$),
the path $f_2 \to f_3 \to \cdots \to f_{k-1} \to f_k$ stays on one
side of $W$.
But $f_1$ and $f_k$ lie on different sides of $W$ (by construction),
contradicting the conclusion that the entire path lies on one side.
\end{proof}
\begin{lemma}[Tire-component lemma]
\label{lem:tire-component}
Let $G$ be a maximal planar graph and let $S \subseteq V(G)$ be a level
@@ -249,11 +311,17 @@ is monochromatic in level.
\emph{Boundary structure.} Each connected component of
$\partial R_{C'}$ traces a closed walk in $G$ that, by the
monochromaticity above, lies entirely in $L_d$ or entirely in
$L_{d+1}$. At a vertex $v \in V_{C'}$ where the faces of $F_{C'}$
split into multiple arcs of $v$'s rotation, the boundary walk visits
$v$ correspondingly many times; this occurs precisely when $v$ is a
cut-vertex of the induced subgraph on its level (either $L_d$ or
$L_{d+1}$).
$L_{d+1}$. By Proposition~\ref{prop:no-level-d-pinch}, the depth-$d$
faces of $F_{C'}$ at any $v \in L_d \cap V_{C'}$ form a single
contiguous arc in $v$'s rotation, so the source-side boundary walk
visits each $L_d$-vertex of $V_{C'}$ exactly once: it is a simple
cycle. At vertices $v \in L_{d+1} \cap V_{C'}$ the depth-$d$ faces
may split into multiple arcs of $v$'s rotation; this corresponds
exactly to $v$ being a cut-vertex of $O$, and the inner-side
boundary walk visits $v$ correspondingly many times --- which is
already accommodated by Definition~\ref{def:tire-graph} (where
$B_{\mathrm{in}}$ is the outer-face boundary closed walk of $O$, not
necessarily a simple cycle).
\emph{Outer boundary.} Because $S$ lies on the outer face of $\Pi_G$,
the boundary curve(s) of $R_{C'}$ on the $L_d$ side are closer to $S$