coloring_nested_tire_graphs: extend Def 1.5 with degenerate boundaries; add tire-component lemma + example figure

- Extends Definition 1.5 (tire graph) to allow either B_out or B_in to
  be a single vertex (a "degenerate" boundary); the tire is then a
  triangulated disk with that vertex as apex.
- Adds Remark 1.6 with vertex/edge/triangle counts for both the
  non-degenerate (annulus) and degenerate (disk) cases.
- Adds Lemma 1.7 (tire-component lemma): for a maximal planar graph G
  with level source S and depth d ≥ 0, every connected component C' of
  the dual subgraph on dual vertices of depth d induces a subgraph C
  on G that is a tire graph; its two boundary parts are the level-d
  and level-(d+1) induced subgraphs (in either order), and its
  triangular faces are exactly the faces of G in F_{C'}.
- Adds Remark 1.8 noting the d=0 degenerate-source case as an example.
- Adds a figure (fig_tire_example.png) illustrating the definition with
  m=6 outer cycle, k=4 inner cycle, one chord in O, plus a legend
  identifying B_out, B_in, O's chord, and E_ann.
- Adds experiments/tire_def_figure.py to regenerate the figure.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-25 15:04:04 -04:00
parent c0e71e2d25
commit b4fece08bc
8 changed files with 251 additions and 57 deletions
@@ -0,0 +1,113 @@
"""Generate the example figure for Definition 1.5 (tire graph) of the
paper. Produces fig_tire_example.png at the paper's top level.
Picks a specific small tire (m=6 outer cycle, k=4 inner cycle with one
chord) so that all four named parts B_out, O, B_in, E_ann are visible
and the annular triangles are individually legible.
"""
import math
import os
import sys
HERE = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, HERE)
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from tire_graph import random_tire, planar_positions
def draw_tire_def(tire, filename):
m, k = tire['m'], tire['k']
outer, inner = tire['outer'], tire['inner']
edges = tire['edges']
R_out, R_in = 1.0, 0.45
pos = planar_positions(tire, R_out=R_out, R_in=R_in)
fig, ax = plt.subplots(figsize=(6.5, 6.5))
# guide circles for reference
for r in (R_out + 0.04, R_in - 0.04):
ax.add_patch(patches.Circle((0, 0), r, fill=False,
edgecolor='lightgray',
linewidth=0.5, linestyle='--'))
outer_set = set(outer)
inner_set = set(inner)
C = {
'outer_cycle': '#1f77b4',
'inner_cycle': '#d62728',
'inner_chord': '#ff7f0e',
'spoke': '#7f7f7f',
}
# classify and draw edges
for (u, v) in edges:
if u in outer_set and v in outer_set:
color, lw, label = C['outer_cycle'], 2.6, 'B_out'
elif u in inner_set and v in inner_set:
ia, ib = u - m, v - m
d = abs(ia - ib)
d = min(d, k - d)
if d == 1:
color, lw, label = C['inner_cycle'], 2.6, 'B_in'
else:
color, lw, label = C['inner_chord'], 1.8, 'O chord'
else:
color, lw, label = C['spoke'], 1.1, 'E_ann'
x1, y1 = pos[u]; x2, y2 = pos[v]
ax.plot([x1, x2], [y1, y2], color=color, linewidth=lw, zorder=1)
# vertices
for v in outer:
x, y = pos[v]
ax.plot(x, y, 'o', color=C['outer_cycle'], markersize=14, zorder=2)
ax.annotate(str(v), (x, y), color='white', ha='center',
va='center', fontsize=9, fontweight='bold', zorder=3)
for v in inner:
x, y = pos[v]
ax.plot(x, y, 'o', color=C['inner_cycle'], markersize=13, zorder=2)
ax.annotate(str(v), (x, y), color='white', ha='center',
va='center', fontsize=8, fontweight='bold', zorder=3)
# legend
legend_items = [
plt.Line2D([], [], color=C['outer_cycle'], linewidth=2.6,
label=r'$B_{\mathrm{out}}$ (outer boundary, $m=6$)'),
plt.Line2D([], [], color=C['inner_cycle'], linewidth=2.6,
label=r'$B_{\mathrm{in}}$ (inner boundary, $k=4$)'),
plt.Line2D([], [], color=C['inner_chord'], linewidth=1.8,
label=r'chord of $O$'),
plt.Line2D([], [], color=C['spoke'], linewidth=1.1,
label=r'$E_{\mathrm{ann}}$ (annular edges)'),
]
ax.legend(handles=legend_items, loc='upper left',
bbox_to_anchor=(1.0, 1.0), fontsize=10, frameon=False)
ax.set_xlim(-1.20, 1.20)
ax.set_ylim(-1.20, 1.20)
ax.set_aspect('equal')
ax.axis('off')
plt.savefig(filename, dpi=160, bbox_inches='tight')
plt.close()
def main():
# m=6 outer, k=4 inner, 1 chord — try a few seeds to pick a clean one
paper_dir = os.path.abspath(os.path.join(HERE, '..'))
candidates = [(6, 4, 1, s) for s in (3, 5, 8, 13, 21)]
# Use seed=3 as the chosen example (good lattice-path balance)
for (m, k, nc, seed) in candidates[:1]:
tire = random_tire(m, k, n_chords=nc, seed=seed)
fn = os.path.join(paper_dir, 'fig_tire_example.png')
draw_tire_def(tire, fn)
print(f" wrote {fn}")
print(f" m={m}, k={k}, chords={tire['inner_chords']}, "
f"path={tire['lattice_path']}")
if __name__ == '__main__':
main()
Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

+8 -3
View File
@@ -1,12 +1,17 @@
\relax
\@writefile{toc}{\contentsline {section}{\tocsection {}{1}{Introduction}}{1}{}\protected@file@percent }
\newlabel{def:dual-depth}{{1.4}{1}}
\@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}}
\newlabel{rem:tire-counts}{{1.6}{2}}
\newlabel{tocindent-1}{0pt}
\newlabel{tocindent0}{0pt}
\newlabel{tocindent1}{17.77782pt}
\newlabel{tocindent2}{0pt}
\newlabel{tocindent3}{0pt}
\@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}}
\@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{lem:tire-component}{{1.7}{3}}
\newlabel{rem:tire-component-degenerate}{{1.8}{3}}
\gdef \@abspage@last{3}
@@ -1,5 +1,5 @@
# Fdb version 3
["pdflatex"] 1779733650 "paper.tex" "paper.pdf" "paper" 1779733650
["pdflatex"] 1779735598 "paper.tex" "paper.pdf" "paper" 1779735599
"/usr/local/texlive/2022/texmf-dist/fonts/map/fontname/texfonts.map" 1577235249 3524 cb3e574dea2d1052e39280babc910dc8 ""
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1246382020 1004 54797486969f23fa377b128694d548df ""
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex8.tfm" 1246382020 988 bdf658c3bfc2d96d3c8b02cfc1c94c20 ""
@@ -21,7 +21,9 @@
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmti8.tfm" 1136768653 1504 1747189e0441d1c18f3ea56fafc1c480 ""
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb" 1248133631 34811 78b52f49e893bcba91bd7581cdc144c0 ""
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmcsc10.pfb" 1248133631 32001 6aeea3afe875097b1eb0da29acd61e28 ""
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb" 1248133631 30251 6afa5cb1d0204815a708a080681d4674 ""
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb" 1248133631 36299 5f9df58c2139e7edcf37c8fca4bd384d ""
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb" 1248133631 37912 77d683123f92148345f3fc36a38d9ab1 ""
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb" 1248133631 36281 c355509802a035cadc5f15869451dcee ""
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb" 1248133631 35752 024fb6c41858982481f6968b5fc26508 ""
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb" 1248133631 32762 224316ccc9ad3ca0423a14971cfa7fc1 ""
@@ -56,8 +58,9 @@
"/usr/local/texlive/2022/texmf-var/web2c/pdftex/pdflatex.fmt" 1665017617 2826443 7e98410c533054b636c6470db83a27bc ""
"/usr/local/texlive/2022/texmf.cnf" 1647878952 577 209b46be99c9075fd74d4c0369380e8c ""
"fig_dual_depth.png" 1779482522 255786 cb48aab5aa40fc161d13a75df0544511 ""
"paper.aux" 1779733650 977 9ae602f68da02f011f6275321bae63a1 "pdflatex"
"paper.tex" 1779733644 5855 ae8bddac7e77a789fdbf38b2af99908f ""
"fig_tire_example.png" 1779735568 104494 8f9ce26b469b4236b8b67829f73a5faa ""
"paper.aux" 1779735599 1676 c48943a67a88ac2f325f17547e461f34 "pdflatex"
"paper.tex" 1779735594 8214 30f4cb9062b9c3d63d5799253be25ee9 ""
(generated)
"paper.aux"
"paper.log"
+8 -1
View File
@@ -1,4 +1,4 @@
PWD /Users/didericis/Code/math-research/papers/nested_level_duals
PWD /Users/didericis/Code/math-research/papers/coloring_nested_tire_graphs
INPUT /usr/local/texlive/2022/texmf.cnf
INPUT /usr/local/texlive/2022/texmf-dist/web2c/texmf.cnf
INPUT /usr/local/texlive/2022/texmf-var/web2c/pdftex/pdflatex.fmt
@@ -232,10 +232,17 @@ INPUT ./fig_dual_depth.png
OUTPUT paper.pdf
INPUT ./fig_dual_depth.png
INPUT /usr/local/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map
INPUT ./fig_tire_example.png
INPUT ./fig_tire_example.png
INPUT fig_tire_example.png
INPUT ./fig_tire_example.png
INPUT ./fig_tire_example.png
INPUT paper.aux
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmcsc10.pfb
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb
+35 -24
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 14:27
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 25 MAY 2026 15:00
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
@@ -201,32 +201,43 @@ Package pdftex.def Info: fig_dual_depth.png used on input line 106.
LaTeX Warning: `h' float specifier changed to `ht'.
[1{/usr/local/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
[2 <./fig_dual_depth.png>] [3] (./paper.aux) )
<fig_tire_example.png, id=20, 559.64081pt x 375.804pt>
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 154.
(pdftex.def) Requested size: 280.79956pt x 188.56097pt.
LaTeX Warning: `h' float specifier changed to `ht'.
[2 <./fig_dual_depth.png>] [3 <./fig_tire_example.png>] (./paper.aux) )
Here is how much of TeX's memory you used:
2994 strings out of 478268
41713 string characters out of 5846347
338109 words of memory out of 5000000
21042 multiletter control sequences out of 15000+600000
3005 strings out of 478268
41970 string characters out of 5846347
338147 words of memory out of 5000000
21052 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,6n,76p,625b,258s stack positions out of 10000i,1000n,20000p,200000b,200000s
</usr/local/texlive/2022/texmf-di
st/fonts/type1/public/amsfonts/cm/cmbx10.pfb></usr/local/texlive/2022/texmf-dis
t/fonts/type1/public/amsfonts/cm/cmcsc10.pfb></usr/local/texlive/2022/texmf-dis
t/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/local/texlive/2022/texmf-dist
/fonts/type1/public/amsfonts/cm/cmmi7.pfb></usr/local/texlive/2022/texmf-dist/f
onts/type1/public/amsfonts/cm/cmr10.pfb></usr/local/texlive/2022/texmf-dist/fon
ts/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/typ
e1/public/amsfonts/cm/cmsy10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type
1/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/pu
blic/amsfonts/cm/cmti10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/pub
lic/amsfonts/cm/cmti8.pfb>
Output written on paper.pdf (3 pages, 342003 bytes).
69i,7n,76p,625b,289s stack positions out of 10000i,1000n,20000p,200000b,200000s
</usr/lo
cal/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></usr/loc
al/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmcsc10.pfb></usr/loc
al/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb></usr/loca
l/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/local
/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb></usr/local/t
exlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb></usr/local/tex
live/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/local/texli
ve/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/202
2/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/t
exmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb></usr/local/texlive/2022/tex
mf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb></usr/local/texlive/2022/texm
f-dist/fonts/type1/public/amsfonts/cm/cmti8.pfb>
Output written on paper.pdf (3 pages, 449333 bytes).
PDF statistics:
77 PDF objects out of 1000 (max. 8388607)
45 compressed objects within 1 object stream
89 PDF objects out of 1000 (max. 8388607)
51 compressed objects within 1 object stream
0 named destinations out of 1000 (max. 500000)
6 words of extra memory for PDF output out of 10000 (max. 10000000)
11 words of extra memory for PDF output out of 10000 (max. 10000000)
Binary file not shown.
+81 -26
View File
@@ -116,39 +116,94 @@ vertex.}
\begin{definition}[Tire graph]
\label{def:tire-graph}
Let $C_{\mathrm{out}}$ be a simple cycle of length $m \geq 3$, and let
$O$ be an outerplanar graph whose outer-face boundary $C_{\mathrm{in}}$
is a simple cycle of length $k \geq 3$, with $V(C_{\mathrm{out}}) \cap
V(O) = \emptyset$. A \emph{tire graph} on $(C_{\mathrm{out}}, O)$ is a
plane graph $T$ with
A \emph{tire graph} consists of a plane graph $T$ together with two
\emph{boundary parts} $B_{\mathrm{out}}, B_{\mathrm{in}} \subseteq T$
and an \emph{inner outerplanar graph} $O \subseteq T$, where each of
$B_{\mathrm{out}}$ and the outer-face boundary $B_{\mathrm{in}}$ of $O$
is either
\begin{itemize}
\item a simple cycle of length $\geq 3$, or
\item a single vertex (a \emph{degenerate} boundary),
\end{itemize}
with at most one of $B_{\mathrm{out}}, B_{\mathrm{in}}$ degenerate, and
$V(B_{\mathrm{out}}) \cap V(O) = \emptyset$. The vertex and edge sets
of $T$ are
\[
V(T) = V(C_{\mathrm{out}}) \cup V(O),
V(T) = V(B_{\mathrm{out}}) \cup V(O),
\qquad
E(T) = E(C_{\mathrm{out}}) \cup E(O) \cup E_{\mathrm{ann}},
E(T) = E(B_{\mathrm{out}}) \cup E(O) \cup E_{\mathrm{ann}},
\]
where $E_{\mathrm{ann}}$ is a set of edges --- the \emph{annular edges}
--- such that, in the plane embedding of $T$, the closed annulus with
outer boundary $C_{\mathrm{out}}$ and inner boundary $C_{\mathrm{in}}$
is partitioned into triangular faces. Equivalently, the bounded faces
of $T$ that are not faces of $O$ are all triangles, and together they
tile the annular region between $C_{\mathrm{out}}$ and $C_{\mathrm{in}}$.
where $E_{\mathrm{ann}}$ --- the \emph{annular edges} --- has the
property that, in the plane embedding of $T$, the closed planar region
$R$ bounded externally by $B_{\mathrm{out}}$ and internally by
$B_{\mathrm{in}}$ is partitioned into triangular faces of $T$ whose
union is $R$. The region $R$ is a closed annulus when both
$B_{\mathrm{out}}$ and $B_{\mathrm{in}}$ are cycles, and a closed disk
when exactly one of them is a single vertex.
We call $C_{\mathrm{out}}$ the \emph{outer cycle}, $O$ the \emph{inner
outerplanar graph}, and $C_{\mathrm{in}}$ the \emph{inner cycle} of
$T$. When $O = C_{\mathrm{in}}$ (the inner outerplanar graph has no
chords), $T$ is a tire graph \emph{with empty inner}; in general $O$
contributes only chords inside the disk bounded by $C_{\mathrm{in}}$
and does not interact with $E_{\mathrm{ann}}$.
We call $B_{\mathrm{out}}$ the \emph{outer boundary}, $O$ the
\emph{inner outerplanar graph}, and $B_{\mathrm{in}}$ the \emph{inner
boundary} of $T$. A tire graph in which $B_{\mathrm{out}}$
(respectively $B_{\mathrm{in}}$) is a single vertex is said to have a
\emph{degenerate outer (respectively inner) boundary}; in either case
$T$ is a triangulated closed disk with that vertex as apex.
\end{definition}
\begin{figure}[h]
\centering
\includegraphics[width=0.78\textwidth]{fig_tire_example.png}
\caption{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.}
\label{fig:tire-example}
\end{figure}
\begin{remark}
A tire graph on $(C_{\mathrm{out}}, O)$ has $|V(C_{\mathrm{out}})| +
|V(O)| = m + k$ vertices, exactly $m + k$ annular triangles
in the annulus between $C_{\mathrm{out}}$ and $C_{\mathrm{in}}$ (by
Euler's formula on the annulus), and exactly $m + k$ annular edges
in $E_{\mathrm{ann}}$, of which the $m + k$ triangles share their
three edges with the boundaries $E(C_{\mathrm{out}}) \cup
E(C_{\mathrm{in}})$ and with each other.
\label{rem:tire-counts}
Let $m = |V(B_{\mathrm{out}})|$ and $k = |V(B_{\mathrm{in}})|$. By
Euler's formula on the annular (resp.\ disk) region $R$, the tire graph
has $m + k$ triangular faces inside $R$ and $|E_{\mathrm{ann}}| = m + k$
annular edges when neither boundary is degenerate; when exactly one
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{lemma}[Tire-component lemma]
\label{lem:tire-component}
Let $G$ be a maximal planar graph with fixed embedding $\Pi_G$ and let
$S \subseteq V(G)$ be a level source. For $d \geq 0$, let
\[
G'_d \;:=\; G'\bigl[\,\{d_f \in V(G') : \delta_G(d_f) = d\}\,\bigr]
\]
be the inner-dual subgraph on dual vertices of dual depth $d$, and let
$C'$ be a connected component of $G'_d$. Write
$F_{C'} := \{f : d_f \in V(C')\}$,
$V_{C'} := \bigcup_{f \in F_{C'}} V(f)$, and
$C := G[V_{C'}]$ with the embedding inherited from $\Pi_G$.
Then $C$, together with its inherited embedding, is a tire graph in the
sense of Definition~\ref{def:tire-graph}: the two boundary parts
$\{B_{\mathrm{out}}, B_{\mathrm{in}}\}$ of $C$ are the level-$d$
subgraph $G[V_{C'} \cap L_d]$ and the level-$(d+1)$ subgraph
$G[V_{C'} \cap L_{d+1}]$, in either order, and the triangular faces of
$C$ inside its closed boundary region are exactly the faces of $G$ in
$F_{C'}$.
\end{lemma}
\begin{remark}
\label{rem:tire-component-degenerate}
Either boundary part of $C$ in Lemma~\ref{lem:tire-component} may be
degenerate. For instance, at $d = 0$ with single-vertex source
$S = \{v_0\}$ the unique component of $G'_0$ has
$V_{C'} \cap L_0 = \{v_0\}$ --- the degenerate boundary --- and
$V_{C'} \cap L_1$ a cycle (the link of $v_0$ in $G$). Which of the two
parts is $B_{\mathrm{out}}$ and which is $B_{\mathrm{in}}$ depends on
the orientation of the inherited embedding (equivalently, on which side
of $C$ contains the rest of $\Pi_G$).
\end{remark}
\end{document}