diff --git a/papers/coloring_nested_tire_graphs/experiments/cut_tire_test.py b/papers/coloring_nested_tire_graphs/experiments/cut_tire_test.py new file mode 100644 index 0000000..29c1c86 --- /dev/null +++ b/papers/coloring_nested_tire_graphs/experiments/cut_tire_test.py @@ -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() diff --git a/papers/coloring_nested_tire_graphs/notes/cut_tire_conjecture_tests.aux b/papers/coloring_nested_tire_graphs/notes/cut_tire_conjecture_tests.aux new file mode 100644 index 0000000..259ef3a --- /dev/null +++ b/papers/coloring_nested_tire_graphs/notes/cut_tire_conjecture_tests.aux @@ -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} diff --git a/papers/coloring_nested_tire_graphs/notes/cut_tire_conjecture_tests.log b/papers/coloring_nested_tire_graphs/notes/cut_tire_conjecture_tests.log new file mode 100644 index 0000000..dae797c --- /dev/null +++ b/papers/coloring_nested_tire_graphs/notes/cut_tire_conjecture_tests.log @@ -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: +* layout: +* 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 + +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) + diff --git a/papers/coloring_nested_tire_graphs/notes/cut_tire_conjecture_tests.pdf b/papers/coloring_nested_tire_graphs/notes/cut_tire_conjecture_tests.pdf new file mode 100644 index 0000000..9433487 Binary files /dev/null and b/papers/coloring_nested_tire_graphs/notes/cut_tire_conjecture_tests.pdf differ diff --git a/papers/coloring_nested_tire_graphs/notes/cut_tire_conjecture_tests.tex b/papers/coloring_nested_tire_graphs/notes/cut_tire_conjecture_tests.tex new file mode 100644 index 0000000..ea8bbd2 --- /dev/null +++ b/papers/coloring_nested_tire_graphs/notes/cut_tire_conjecture_tests.tex @@ -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}