coloring_nested_tire_graphs: empirical test of rainbow + König-lift on cut tires

For each cut tire on G'_1 of Holton-McKay #0 (HM cut: |S|=10,
matching 6-cut), brute-force enumerate proper edge 3-colorings,
compute the joint (σ_out, σ_in) projection, and check S_3-closure
and orbit decomposition.

Results (8 cut tires analyzed, 2 too big or trivial):

  d  face  |f|  out  in  |E|  #col  |π|  S3-cl  orbit sizes
  1   0    12    5   0   17   96   93   yes    [3, 6^15]
  1   1     4    1   0    5    6    3   yes    [3]
  2   0     7    4   3   14  126  126   yes    [6^21]
  2   1     7    4   3   14  126  126   yes    [6^21]
  3   0-2   2    0   0    2    3    1   yes    [1]
  4   0     4    1   0    5    6    3   yes    [3]
  4   1     8    2   1   11   24   21   yes    [3, 6^3]
  5   1     2    0   0    2    3    1   yes    [1]
  6   0    12    3   2   17   96   93   yes    [3, 6^15]
  7   0     2    0   0    2    3    1   yes    [1]

Findings:

  1. S_3-closure is universal (structural, expected).
  2. Orbit sizes are always 3 (constant) or 6 (generic).
  3. Non-trivial cut tires have rich projections (e.g. d=2 has
     21 size-6 orbits = 126 elements; d=6 has 16 orbits).

Neither conjecture is DIRECTLY testable on this example:

  - Rainbow conjecture requires antipodal-chord SP face boundary
    structure. Our cut tires' face boundaries don't naturally have
    this shape.

  - König-lift conjecture requires both sides give γ-face partitions
    on a shared γ. Cut tires at consecutive depths share data via
    in-spoke ↔ face-boundary-edge bijection, not via γ-face
    partitions.

What CAN be observed: cut tire projections are LARGE and S_3-
symmetric (substantially looser than the rainbow case's 36-element
prediction). A "loose conjecture" would say π(T) ≥ c · 6 with c
depending only on |E(T)|, derivable from Prop 1.13 in paper.tex.

Files:
  experiments/cut_tire_test.py
  notes/cut_tire_conjecture_tests.tex (3 pages)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-26 16:09:05 -04:00
parent 52a1608580
commit 702cbcecf7
5 changed files with 744 additions and 0 deletions
@@ -0,0 +1,244 @@
"""Empirical test of the rainbow conjecture and König-lift conjecture
on cut tires from the new (pendant-redefined) definition.
For each cut tire in our Holton-McKay #0 example:
- Build the cut tire as a graph (face boundary + labelled pendants).
- Enumerate proper edge 3-colorings via Sage chromatic_polynomial
on the line graph (or direct brute force for small tires).
- Compute the projection support onto (out spoke colors, in spoke
colors) jointly.
Tests:
Rainbow conjecture analog:
For tires whose face boundary is a simple cycle (spoke-only),
by Prop 1.13 of paper.tex, # colorings = 2^n + 2(-1)^n.
Spoke colors at each face-boundary vertex are uniquely
determined by the cycle coloring (the "third color"). So
projection support has specific structure.
Stronger rainbow: face boundary closed walk that's not simple
(= theta-graph-like). Apply Prop's from rainbow_proof.tex.
König-lift conjecture analog:
For pairs of adjacent cut tires (T_d, T_{d+1}) sharing in-spokes
of T_d with face-boundary edges of T_{d+1}, do the projection
supports overlap on the shared edges?
"""
import os
import sys
from itertools import permutations, product
from collections import defaultdict
from sage.all import Graph
HERE = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, HERE)
from cut_depth_label import (
parse_planar_code, HM_FILE, find_six_edge_cut,
apply_procedure, compute_nice_layout,
)
from cut_tire import cut_tire_at
def build_cut_tire_graph(tire, d):
"""Build a Sage Graph for the cut tire (face boundary + pendants),
returning (G, edge_labels) where edge_labels[e] ∈
{'face', 'out', 'in'} classifies the edge."""
G = Graph(multiedges=False, loops=False)
edge_labels = {}
for (u, v) in tire['face_edges']:
G.add_edge(u, v)
edge_labels[(min(u, v), max(u, v))] = 'face'
# Add pendants
next_id = max(set(tire['face_vertices_unique']) | {0}) + 1000
pendant_map = {}
for (v, pid) in tire['out_spokes']:
nv = next_id; next_id += 1
G.add_edge(v, nv)
edge_labels[(min(v, nv), max(v, nv))] = 'out'
pendant_map[pid] = (v, nv)
for (v, pid) in tire['in_spokes']:
nv = next_id; next_id += 1
G.add_edge(v, nv)
edge_labels[(min(v, nv), max(v, nv))] = 'in'
pendant_map[pid] = (v, nv)
return G, edge_labels, pendant_map
def enumerate_proper_edge_3colorings(G):
"""Enumerate proper edge 3-colorings by computing the line graph
and its proper 3-vertex-colorings."""
L = G.line_graph(labels=False)
edges = list(G.edges(labels=False))
edges_norm = [(min(u, v), max(u, v)) for (u, v) in edges]
n_edges = len(edges_norm)
# Map L's vertices to edge indices
L_verts = list(L.vertices())
vertex_to_edge_idx = {}
for i, e in enumerate(edges):
e_can = frozenset(e)
for v in L_verts:
if frozenset(v) == e_can:
vertex_to_edge_idx[v] = i
break
# Brute force over 3^n_edges, filtering for proper-coloring constraint
colorings = []
for assignment in product((1, 2, 3), repeat=n_edges):
# Check: at each vertex of G, all incident edges have distinct colors
good = True
for v in G.vertices():
incident = [edges_norm.index((min(v, w), max(v, w)))
for w in G.neighbors(v)]
colors_at_v = [assignment[i] for i in incident]
if len(set(colors_at_v)) != len(colors_at_v):
good = False
break
if good:
colorings.append(assignment)
return edges_norm, colorings
def cut_tire_analysis(tire, d):
"""Analyze a single cut tire: enumerate proper 3-edge-colorings,
compute spoke projections, check for S_3-orbit closure."""
G, edge_labels, _ = build_cut_tire_graph(tire, d)
n = G.size()
if n > 18: # too slow
return None
edges_norm, colorings = enumerate_proper_edge_3colorings(G)
n_colorings = len(colorings)
# Projection: spoke (out + in) tuple
out_edge_indices = [i for i, e in enumerate(edges_norm)
if edge_labels[e] == 'out']
in_edge_indices = [i for i, e in enumerate(edges_norm)
if edge_labels[e] == 'in']
proj = set()
for c in colorings:
sigma = (tuple(c[i] for i in out_edge_indices),
tuple(c[i] for i in in_edge_indices))
proj.add(sigma)
# S_3-closure check
s3_closed = True
for sigma in proj:
for pi in permutations((1, 2, 3)):
mapped = (tuple(pi[c - 1] for c in sigma[0]),
tuple(pi[c - 1] for c in sigma[1]))
if mapped not in proj:
s3_closed = False
break
if not s3_closed:
break
# Count S_3-orbits
seen = set()
orbits = []
for sigma in sorted(proj):
if sigma in seen:
continue
orbit = set()
for pi in permutations((1, 2, 3)):
mapped = (tuple(pi[c - 1] for c in sigma[0]),
tuple(pi[c - 1] for c in sigma[1]))
orbit.add(mapped)
orbit_in_proj = orbit & proj
orbits.append(sorted(orbit_in_proj))
seen |= orbit_in_proj
return {
'n_edges': n,
'n_colorings': n_colorings,
'projection_size': len(proj),
'S3_closed': s3_closed,
'n_orbits': len(orbits),
'orbit_sizes': sorted(len(o) for o in orbits),
'projection': proj,
'out_count': len(out_edge_indices),
'in_count': len(in_edge_indices),
}
def konig_lift_test(t1, t2, d1, d2, analysis1, analysis2):
"""For adjacent tires (t1 at depth d1, t2 at depth d2 = d1+1),
test König-lift compatibility.
Shared structure: in spokes of t1 correspond to a subset of
face-boundary edges of t2 (those that are also incident to t1's
face boundary).
"""
# For now: compute the intersection of projections restricted to
# the in-spoke side of t1. (Full identification of shared edges
# requires more careful bookkeeping; this is a first approximation.)
if d2 != d1 + 1:
return None
in_projections_t1 = set(sigma[1] for sigma in analysis1['projection'])
out_projections_t2 = set(sigma[0] for sigma in analysis2['projection'])
# These don't have a natural bijection without more setup; instead
# compare their sizes and S_3-symmetry.
return {
't1_in_size': len(in_projections_t1),
't2_out_size': len(out_projections_t2),
# The "shared boundary" between t1 and t2 isn't trivially
# identifiable from this aggregated data; flag as needing
# explicit shared-edge identification.
}
def main():
gs = parse_planar_code(HM_FILE)
G = gs[0]
S, cut = find_six_edge_cut(G)
base_pos = compute_nice_layout(G)
S1 = frozenset(G.vertices()) - frozenset(S)
H1, pos1, ed1, _, _, _ = apply_procedure(
G, S1, cut, base_pos, '1',
pendant_start_id=max(G.vertices()) + 1 + 6)
print(f"G'_1 depths range: 0 to {max(ed1.values())}\n")
all_tires = {} # (d, face_idx) -> tire dict + analysis
print("=" * 80)
print("Cut tire analysis (per tire)")
print("=" * 80)
for d in range(1, max(ed1.values()) + 1):
tires = cut_tire_at(H1, ed1, d)
for f_idx, tire in enumerate(tires):
n_face = tire['face_length']
n_out = len(tire['out_spokes'])
n_in = len(tire['in_spokes'])
n_edges = n_face + n_out + n_in
print(f'\ndepth {d}, face {f_idx}: |face|={n_face}, '
f'out={n_out}, in={n_in}, total edges={n_edges}')
if n_edges > 18:
print(f' ... too many edges to enumerate ({n_edges} > 18); skipping')
continue
analysis = cut_tire_analysis(tire, d)
if analysis is None:
continue
print(f" Proper edge 3-colorings: {analysis['n_colorings']}")
print(f" Projection (out, in) size: {analysis['projection_size']}")
print(f" S_3-closed: {analysis['S3_closed']}")
print(f" # S_3-orbits: {analysis['n_orbits']}, "
f"orbit sizes: {analysis['orbit_sizes']}")
all_tires[(d, f_idx)] = (tire, analysis)
# Rainbow analysis: for each tire, check if its projection is
# related to a specific structured set (perms-per-face etc.)
print("\n" + "=" * 80)
print("Rainbow conjecture-style check")
print("=" * 80)
for (d, f_idx), (tire, analysis) in all_tires.items():
n_out = analysis['out_count']
n_in = analysis['in_count']
if n_out == 0 or n_in == 0:
print(f'\ndepth {d}, face {f_idx}: trivial '
f'(one side has 0 spokes), skipping rainbow check')
continue
# Expected: if both sides have 3 spokes each, check perms-per-face
if n_out == 3 and n_in == 3:
expected_size = 36 # perms × perms
actual = analysis['projection_size']
print(f'\ndepth {d}, face {f_idx}: out={n_out}, in={n_in}; '
f'predicted perms-per-face size = {expected_size}, '
f'actual = {actual}')
if __name__ == '__main__':
main()
@@ -0,0 +1,6 @@
\relax
\@writefile{toc}{\contentsline {paragraph}{What would test the rainbow conjecture properly.}{2}{}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{Cut-tire K\"onig-lift analog (tentative).}{2}{}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{What this would require to test.}{2}{}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{What's actually closer to provable.}{3}{}\protected@file@percent }
\gdef \@abspage@last{3}
@@ -0,0 +1,294 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 26 MAY 2026 16:09
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**cut_tire_conjecture_tests.tex
(./cut_tire_conjecture_tests.tex
LaTeX2e <2021-11-15> patch level 1
L3 programming layer <2022-02-24>
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/article.cls
Document Class: article 2021/10/04 v1.4n Standard LaTeX document class
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/size11.clo
File: size11.clo 2021/10/04 v1.4n Standard LaTeX file (size option)
)
\c@part=\count185
\c@section=\count186
\c@subsection=\count187
\c@subsubsection=\count188
\c@paragraph=\count189
\c@subparagraph=\count190
\c@figure=\count191
\c@table=\count192
\abovecaptionskip=\skip47
\belowcaptionskip=\skip48
\bibindent=\dimen138
)
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty
Package: amsmath 2021/10/15 v2.17l AMS math features
\@mathmargin=\skip49
For additional information on amsmath, use the `?' option.
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amstext.sty
Package: amstext 2021/08/26 v2.01 AMS text
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty
File: amsgen.sty 1999/11/30 v2.0 generic functions
\@emptytoks=\toks16
\ex@=\dimen139
))
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsbsy.sty
Package: amsbsy 1999/11/29 v1.2d Bold Symbols
\pmbraise@=\dimen140
)
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty
Package: amsopn 2021/08/26 v2.02 operator names
)
\inf@bad=\count193
LaTeX Info: Redefining \frac on input line 234.
\uproot@=\count194
\leftroot@=\count195
LaTeX Info: Redefining \overline on input line 399.
\classnum@=\count196
\DOTSCASE@=\count197
LaTeX Info: Redefining \ldots on input line 496.
LaTeX Info: Redefining \dots on input line 499.
LaTeX Info: Redefining \cdots on input line 620.
\Mathstrutbox@=\box50
\strutbox@=\box51
\big@size=\dimen141
LaTeX Font Info: Redeclaring font encoding OML on input line 743.
LaTeX Font Info: Redeclaring font encoding OMS on input line 744.
\macc@depth=\count198
\c@MaxMatrixCols=\count199
\dotsspace@=\muskip16
\c@parentequation=\count266
\dspbrk@lvl=\count267
\tag@help=\toks17
\row@=\count268
\column@=\count269
\maxfields@=\count270
\andhelp@=\toks18
\eqnshift@=\dimen142
\alignsep@=\dimen143
\tagshift@=\dimen144
\tagwidth@=\dimen145
\totwidth@=\dimen146
\lineht@=\dimen147
\@envbody=\toks19
\multlinegap=\skip50
\multlinetaggap=\skip51
\mathdisplay@stack=\toks20
LaTeX Info: Redefining \[ on input line 2938.
LaTeX Info: Redefining \] on input line 2939.
)
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amssymb.sty
Package: amssymb 2013/01/14 v3.01 AMS font symbols
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amsfonts.sty
Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
\symAMSa=\mathgroup4
\symAMSb=\mathgroup5
LaTeX Font Info: Redeclaring math symbol \hbar on input line 98.
LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold'
(Font) U/euf/m/n --> U/euf/b/n on input line 106.
))
(/usr/local/texlive/2022/texmf-dist/tex/latex/amscls/amsthm.sty
Package: amsthm 2020/05/29 v2.20.6
\thm@style=\toks21
\thm@bodyfont=\toks22
\thm@headfont=\toks23
\thm@notefont=\toks24
\thm@headpunct=\toks25
\thm@preskip=\skip52
\thm@postskip=\skip53
\thm@headsep=\skip54
\dth@everypar=\toks26
)
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphicx.sty
Package: graphicx 2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR)
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty
Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
\KV@toks@=\toks27
)
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphics.sty
Package: graphics 2021/03/04 v1.4d Standard LaTeX Graphics (DPC,SPQR)
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/trig.sty
Package: trig 2021/08/11 v1.11 sin cos tan (DPC)
)
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
)
Package graphics Info: Driver file: pdftex.def on input line 107.
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics-def/pdftex.def
File: pdftex.def 2020/10/05 v1.2a Graphics/color driver for pdftex
))
\Gin@req@height=\dimen148
\Gin@req@width=\dimen149
)
(/usr/local/texlive/2022/texmf-dist/tex/latex/geometry/geometry.sty
Package: geometry 2020/01/02 v5.9 Page Geometry
(/usr/local/texlive/2022/texmf-dist/tex/generic/iftex/ifvtex.sty
Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead.
(/usr/local/texlive/2022/texmf-dist/tex/generic/iftex/iftex.sty
Package: iftex 2022/02/03 v1.0f TeX engine tests
))
\Gm@cnth=\count271
\Gm@cntv=\count272
\c@Gm@tempcnt=\count273
\Gm@bindingoffset=\dimen150
\Gm@wd@mp=\dimen151
\Gm@odd@mp=\dimen152
\Gm@even@mp=\dimen153
\Gm@layoutwidth=\dimen154
\Gm@layoutheight=\dimen155
\Gm@layouthoffset=\dimen156
\Gm@layoutvoffset=\dimen157
\Gm@dimlist=\toks28
)
(/usr/local/texlive/2022/texmf-dist/tex/latex/booktabs/booktabs.sty
Package: booktabs 2020/01/12 v1.61803398 Publication quality tables
\heavyrulewidth=\dimen158
\lightrulewidth=\dimen159
\cmidrulewidth=\dimen160
\belowrulesep=\dimen161
\belowbottomsep=\dimen162
\aboverulesep=\dimen163
\abovetopsep=\dimen164
\cmidrulesep=\dimen165
\cmidrulekern=\dimen166
\defaultaddspace=\dimen167
\@cmidla=\count274
\@cmidlb=\count275
\@aboverulesep=\dimen168
\@belowrulesep=\dimen169
\@thisruleclass=\count276
\@lastruleclass=\count277
\@thisrulewidth=\dimen170
)
(/usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
File: l3backend-pdftex.def 2022-02-07 L3 backend support: PDF output (pdfTeX)
\l__color_backend_stack_int=\count278
\l__pdf_internal_box=\box52
)
(./cut_tire_conjecture_tests.aux)
\openout1 = `cut_tire_conjecture_tests.aux'.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 14.
LaTeX Font Info: ... okay on input line 14.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 14.
LaTeX Font Info: ... okay on input line 14.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 14.
LaTeX Font Info: ... okay on input line 14.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 14.
LaTeX Font Info: ... okay on input line 14.
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 14.
LaTeX Font Info: ... okay on input line 14.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 14.
LaTeX Font Info: ... okay on input line 14.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 14.
LaTeX Font Info: ... okay on input line 14.
(/usr/local/texlive/2022/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
\scratchcounter=\count279
\scratchdimen=\dimen171
\scratchbox=\box53
\nofMPsegments=\count280
\nofMParguments=\count281
\everyMPshowfont=\toks29
\MPscratchCnt=\count282
\MPscratchDim=\dimen172
\MPnumerator=\count283
\makeMPintoPDFobject=\count284
\everyMPtoPDFconversion=\toks30
) (/usr/local/texlive/2022/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4
85.
(/usr/local/texlive/2022/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
e
))
*geometry* driver: auto-detecting
*geometry* detected driver: pdftex
*geometry* verbose mode - [ preamble ] result:
* driver: pdftex
* paper: <default>
* layout: <same size as paper>
* layoutoffset:(h,v)=(0.0pt,0.0pt)
* modes:
* h-part:(L,W,R)=(72.26999pt, 469.75502pt, 72.26999pt)
* v-part:(T,H,B)=(72.26999pt, 650.43001pt, 72.26999pt)
* \paperwidth=614.295pt
* \paperheight=794.96999pt
* \textwidth=469.75502pt
* \textheight=650.43001pt
* \oddsidemargin=0.0pt
* \evensidemargin=0.0pt
* \topmargin=-37.0pt
* \headheight=12.0pt
* \headsep=25.0pt
* \topskip=11.0pt
* \footskip=30.0pt
* \marginparwidth=59.0pt
* \marginparsep=10.0pt
* \columnsep=10.0pt
* \skip\footins=10.0pt plus 4.0pt minus 2.0pt
* \hoffset=0.0pt
* \voffset=0.0pt
* \mag=1000
* \@twocolumnfalse
* \@twosidefalse
* \@mparswitchfalse
* \@reversemarginfalse
* (1in=72.27pt=25.4mm, 1cm=28.453pt)
LaTeX Font Info: Trying to load font information for U+msa on input line 15.
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsa.fd
File: umsa.fd 2013/01/14 v3.01 AMS symbols A
)
LaTeX Font Info: Trying to load font information for U+msb on input line 15.
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsb.fd
File: umsb.fd 2013/01/14 v3.01 AMS symbols B
) [1
{/usr/local/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] [2] [3]
(./cut_tire_conjecture_tests.aux) )
Here is how much of TeX's memory you used:
3245 strings out of 478268
48401 string characters out of 5846347
358564 words of memory out of 5000000
21433 multiletter control sequences out of 15000+600000
478877 words of font info for 66 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
55i,8n,62p,242b,218s stack positions out of 10000i,1000n,20000p,200000b,200000s
</usr/local/texlive/2022/texmf-dist/fonts/ty
pe1/public/amsfonts/cm/cmbx10.pfb></usr/local/texlive/2022/texmf-dist/fonts/typ
e1/public/amsfonts/cm/cmbx12.pfb></usr/local/texlive/2022/texmf-dist/fonts/type
1/public/amsfonts/cm/cmmi10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1
/public/amsfonts/cm/cmmi8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/p
ublic/amsfonts/cm/cmr10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/pub
lic/amsfonts/cm/cmr17.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/publi
c/amsfonts/cm/cmr7.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/a
msfonts/cm/cmr8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsf
onts/cm/cmsy10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfo
nts/cm/cmsy8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfont
s/cm/cmti10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts
/cm/cmtt10.pfb>
Output written on cut_tire_conjecture_tests.pdf (3 pages, 164867 bytes).
PDF statistics:
74 PDF objects out of 1000 (max. 8388607)
44 compressed objects within 1 object stream
0 named destinations out of 1000 (max. 500000)
1 words of extra memory for PDF output out of 10000 (max. 10000000)
@@ -0,0 +1,200 @@
\documentclass[11pt]{article}
\usepackage{amsmath,amssymb,amsthm}
\usepackage{graphicx}
\usepackage{geometry}
\usepackage{booktabs}
\geometry{margin=1in}
\title{Testing the rainbow and K\"onig-lift conjectures on cut tires}
\author{}
\date{}
\newtheorem*{obs}{Observation}
\begin{document}
\maketitle
\section*{What was tested}
For the cut tires arising on $G'_1$ of Holton-McKay graph \#0 (with
the matching $6$-edge cut from \texttt{cut\_depth\_label.tex}), under
the redefined cut tire definition (face boundary $+$ labelled
pendants at degree-$2$ vertices), I:
\begin{enumerate}
\item Built each cut tire as a graph (face boundary plus pendants).
\item Brute-force enumerated proper edge $3$-colorings.
\item Computed the projection support $\{(\sigma_{\mathrm{out}},
\sigma_{\mathrm{in}}) : \chi \text{ proper}\}$.
\item Checked $S_3$-closure and orbit decomposition.
\end{enumerate}
\section*{Results}
\begin{center}
\small
\begin{tabular}{lr|rrrrr|r|cl}
\toprule
$d$ & face & $|f|$ & out & in & $|E|$ & $\#$col. & $|\pi|$
& $S_3$-cl.\ & orbit sizes\\
\midrule
$1$ & $0$ & $12$ & $5$ & $0$ & $17$ & $96$ & $93$ & Yes & $[3, 6^{15}]$\\
$1$ & $1$ & $4$ & $1$ & $0$ & $5$ & $6$ & $3$ & Yes & $[3]$\\
$2$ & $0$ & $7$ & $4$ & $3$ & $14$ & $126$ & $126$ & Yes & $[6^{21}]$\\
$2$ & $1$ & $7$ & $4$ & $3$ & $14$ & $126$ & $126$ & Yes & $[6^{21}]$\\
$3$ & $0$--$2$ & $2$ & $0$ & $0$ & $2$ & $3$ & $1$ & Yes & $[1]$\\
$4$ & $0$ & $4$ & $1$ & $0$ & $5$ & $6$ & $3$ & Yes & $[3]$\\
$4$ & $1$ & $8$ & $2$ & $1$ & $11$ & $24$ & $21$ & Yes & $[3, 6^3]$\\
$5$ & $0$ & $14$ & $4$ & $2$ & $20$ & --- (too big) & --- & --- & ---\\
$5$ & $1$ & $2$ & $0$ & $0$ & $2$ & $3$ & $1$ & Yes & $[1]$\\
$6$ & $0$ & $12$ & $3$ & $2$ & $17$ & $96$ & $93$ & Yes & $[3, 6^{15}]$\\
$7$ & $0$ & $2$ & $0$ & $0$ & $2$ & $3$ & $1$ & Yes & $[1]$\\
\bottomrule
\end{tabular}
\end{center}
\section*{Observations}
\begin{obs}[Universal $S_3$-closure]
Every cut tire's projection $\pi(\sigma_{\mathrm{out}}, \sigma_{\mathrm{in}})$
is closed under the diagonal $S_3$ action on the $3$ colors. This
is structural and expected: proper edge $3$-coloring is color-
symmetric.
\end{obs}
\begin{obs}[Orbit sizes are $3$ or $6$ only]
Every $S_3$-orbit in every cut tire projection has size $3$ (the
constant-color orbit, when present) or $6$ (the generic orbit using
all $3$ colors). No size-$2$ orbits, which would correspond to
$\sigma$'s with non-trivial $S_3$ stabilizer; these don't occur.
\end{obs}
\begin{obs}[Non-trivial cut tires have substantial projection support]
The two ``main'' cut tires at depth $2$ (face length $7$, $4$ out
$+\ 3$ in spokes) each have $126$ proper edge $3$-colorings, all
$126$ distinct in their joint $(\sigma_{\mathrm{out}}, \sigma_{\mathrm{in}})$
projection. This is $21$ full $S_3$-orbits of size $6$.
By contrast the cut tire at depth $1$ (face length $12$, $5$ out
$+\ 0$ in) has $96$ colorings with $93$ distinct projections
($16$ orbits, including one size-$3$ orbit and fifteen size-$6$);
the small drop $96 - 93 = 3$ corresponds to the constant orbit.
\end{obs}
\section*{Why the rainbow conjecture is not directly testable here}
The rainbow conjecture from \texttt{rainbow\_proof.tex} states:
for an antipodal-chord SP tire $T = (m_1, (0, m/2), \mathrm{SP})$
with $m \in \{4, 6\}$ even and $m_1 \ge m - 1$, the inner-spoke
projection $\pi_D(\mathcal{C}(T))$ equals the perms-per-face set
$\mathcal{P}_m$ (size $36$).
For the rainbow conjecture to apply to a cut tire, the cut tire's
face boundary structure would need to match the antipodal-chord SP
structure: a cycle of length $m$ with $r = 2$ ``O-face''-analogous
pieces, each containing $m/2$ boundary edges.
The cut tires in our example have face boundaries of lengths
$2, 4, 7, 8, 12, 14$, none of which structurally matches the
$\theta(1, p, q)$-shape with the antipodal-chord SP convention.
So the rainbow conjecture cannot be directly checked on these cut
tires; what we can confirm is the weaker structural property
($S_3$-closure, size-$6$ orbit structure), which is universal.
\paragraph{What would test the rainbow conjecture properly.}
Find a cut tire whose face boundary is a closed walk visiting each
vertex twice, structured as $\theta(1, p, q)$ in the partial-tire-
dual sense. Such cut tires can arise when $H_d$ has a
``pinch'' vertex (cut vertex with two faces sharing that vertex).
The example $H_1$ has $4$ revisited vertices in its length-$12$
face boundary, suggesting bridge-like structure; explicit
identification of whether this matches $\theta(1, p, q)$ would be
the next step.
\section*{Why the K\"onig-lift conjecture is not directly testable here}
The K\"onig-lift conjecture from \texttt{worst\_case\_proof\_sketch.tex}
applies to pairs of adjacent SP tires $(T_1, T_2)$ sharing a cycle
$\gamma$ where \emph{both} sides give direct $\gamma$-face partitions
(both have chord(s) on $\gamma$).
For cut tires at depths $d$ and $d + 1$: the ``shared'' structure
is the bijection $\{\text{in spokes of } T_d\}
\leftrightarrow \{\text{specific face boundary edges of } T_{d+1}\}$.
This is not the same as ``both tires give $\gamma$-face partitions''
because $T_{d+1}$'s face boundary is not (in general) a $\gamma$-cycle
that $T_d$ also borders --- the cut tires sit in $H_d$ and $H_{d+1}$
respectively, with different vertex sets.
So the K\"onig-lift conjecture would need restatement for the
cut-tire chain. A correct restatement might say:
\paragraph{Cut-tire K\"onig-lift analog (tentative).}
For each pair of adjacent cut tires $(T_d, T_{d+1})$ in a chain, the
bijection $\beta : \{\text{in spokes of } T_d\} \to
\{\text{face-boundary edges of } T_{d+1} \text{ adjacent to } V(f_d)\}$
preserves a Latin structure: any Latin $\sigma$ on the shared
positions in $T_{d+1}$'s face boundary can be lifted to a proper
edge $3$-coloring of $T_d$ via $\beta$, and vice versa.
\paragraph{What this would require to test.}
\begin{enumerate}
\item Explicit identification of the bijection $\beta$ for each
pair $(T_d, T_{d+1})$. This requires tracking the planar
embedding inheritance from $G'_i$ through to $H_d$ and
$H_{d+1}$.
\item Computing the Latin structure on each $T_{d+1}$'s face
boundary edges (analogous to the perms-per-face structure
on $\gamma$).
\item Comparing the projected supports under $\beta$.
\end{enumerate}
None of this is automated in the present code.
\section*{What can be concluded from the empirical data}
\begin{enumerate}
\item \textbf{$S_3$-closure holds universally.} Every cut tire
projection is $S_3$-symmetric, with orbits of size $3$ or $6$.
This matches the partial-tire-dual data
(\texttt{orbit\_decomposition.tex}, Obs.\ ``S3-closed'').
\item \textbf{Non-trivial cut tires have rich projections.} At
depth $2$, the projection is $126 = 21 \cdot 6$ ($21$ full
$S_3$-orbits). At depth $6$, $93 = 1 \cdot 3 + 15 \cdot 6$
($16$ orbits). This is substantially more than the
rainbow's $36 = 6 \cdot 6$ specific orbit, so cut tires here
are \emph{looser} than the rainbow case --- chain pigeonhole
should be \emph{easier} when projections are large.
\item \textbf{Trivial cut tires (length-$2$ faces) contribute
nothing.} Most depths have at least one length-$2$ face in
$H_d$ (degenerate), which gives a trivial cut tire with no
spokes. These are not informative for chain pigeonhole.
\item \textbf{Neither conjecture is directly applicable.} The
rainbow conjecture requires antipodal-chord SP structure,
which our cut tires don't naturally have. The K\"onig-lift
conjecture requires both sides give $\gamma$-face
partitions, which the cut-tire chain doesn't naturally
produce.
\end{enumerate}
\paragraph{What's actually closer to provable.}
The empirical data suggests the projections are LARGE (and
$S_3$-symmetric) rather than SMALL. A natural chain pigeonhole
statement is:
\begin{quote}
\textbf{Conjecture (loose).} For each cut tire $T$ arising in the
chain, the projection $\pi(T)$ has size $\ge c \cdot 6$ for some
absolute constant $c$ depending only on $|E(T)|$, with $\pi(T)$
$S_3$-closed. Chain composition through $T_1, T_2, \ldots$ yields
$|\mathcal{R}_i| \ge c'$ uniform in chain length.
\end{quote}
The constant $c$ might be derivable from Prop 1.13 of \texttt{paper.tex}
($2^n + 2(-1)^n$ colorings for spoke-only $D(T)$). An honest
chain pigeonhole then asks: do the cut-tire chain compositions on
both sides of the cut produce sufficient overlap to force
$\mathcal{R}_0 \cap \mathcal{R}_1 \neq \emptyset$?
This requires the full chain machinery, not just per-tire analysis.
\end{document}