diff --git a/papers/coloring_nested_tire_graphs/experiments/k9_surviving_analysis.py b/papers/coloring_nested_tire_graphs/experiments/k9_surviving_analysis.py new file mode 100644 index 0000000..08a9406 --- /dev/null +++ b/papers/coloring_nested_tire_graphs/experiments/k9_surviving_analysis.py @@ -0,0 +1,182 @@ +"""Enumerate and analyze all surviving triple-partitions of γ at k = 9 +for T_2 = (m_2=9, k_2=9, chords (0,3),(3,6), SP). + +Look for common structural properties: + - Block sums modulo k = 9 (rotation invariance) + - Block differences modulo something + - Mapping under T_2's annular structure + - Symmetries (cyclic, reflection) +""" +from itertools import product, permutations +from collections import defaultdict, Counter + +from tire_fiber_chords import ( + fiber_distribution, + projection_support, + u_positions_for, + d_positions_for, +) +from tire_fiber_chunked import projection_support_streaming + + +def latin_set(partition, k): + L = set() + if any(len(b) != 3 for b in partition): + return None + blocks = [sorted(b) for b in partition] + for assignment in product(permutations((1, 2, 3)), repeat=len(blocks)): + sigma = [0] * k + for block, perm in zip(blocks, assignment): + for pos, color in zip(block, perm): + sigma[pos] = color + L.add(tuple(sigma)) + return L + + +def all_partitions_into_triples(elements): + elements = list(elements) + if not elements: + yield [] + return + if len(elements) % 3 != 0: + return + if len(elements) == 3: + yield [tuple(elements)] + return + first = elements[0] + rest = elements[1:] + from itertools import combinations + for combo in combinations(rest, 2): + triple = (first,) + combo + remaining = [x for x in rest if x not in combo] + for sub_partition in all_partitions_into_triples(remaining): + yield [triple] + sub_partition + + +def normalize(partition): + """Return a canonical tuple of frozensets for the partition.""" + return tuple(sorted(tuple(sorted(b)) for b in partition)) + + +def find_surviving_partitions(k, pi_U): + survivors = [] + for partition in all_partitions_into_triples(range(k)): + L = latin_set(partition, k) + if L is None: + continue + if L <= pi_U: + survivors.append(tuple(tuple(sorted(b)) for b in partition)) + return survivors + + +def analyze_block(block, k=9): + """Return structural properties of a 3-element block of γ-edges.""" + s = sum(block) % k + d = sorted((b - block[0]) % k for b in block) # differences from first + diffs_pairwise = sorted(((b - a) % k for a in block for b in block if a != b)) + return { + 'sum_mod_k': s, + 'first_diffs': d, + 'pairwise_diffs': diffs_pairwise, + } + + +def main(): + k, k_2 = 9, 9 + chords = [(0, 3), (3, 6)] + print(f'Analyzing surviving triple-partitions at k = k_2 = {k}, chords = {chords}') + print() + + # Compute π_U via chunked streaming (faster for n = k + k_2 = 18) + u_pos = u_positions_for(k, k_2) + d_pos = d_positions_for(k, k_2) + pi_U = projection_support_streaming(k, k_2, chords, u_pos) + print(f'|π_U| = {len(pi_U)}') + print(f'd_positions on T_ann_prime = {d_pos}') + print(f'u_positions on T_ann_prime = {u_pos}') + print() + + survivors = find_surviving_partitions(k, pi_U) + print(f'Number of surviving triple-partitions: {len(survivors)}') + print() + + print('=== Surviving partitions ===') + for i, p in enumerate(survivors): + print(f' {i+1}. {list(p)}') + for block in p: + props = analyze_block(block, k) + print(f' block {block}: sum mod {k} = {props["sum_mod_k"]}, ' + f'pairwise diffs = {props["pairwise_diffs"]}') + print() + + # Structural analysis + print('=== Cyclic rotation analysis ===') + print('For each partition, check if it is a rotation of any other:') + canonical_to_partitions = defaultdict(list) + for p in survivors: + # Compute canonical form under cyclic rotation of γ + rotations = [] + for r in range(k): + rotated = tuple(tuple(sorted((x + r) % k for x in b)) for b in p) + rotated_canonical = tuple(sorted(rotated)) + rotations.append(rotated_canonical) + canonical = min(rotations) + canonical_to_partitions[canonical].append(p) + print(f'# distinct cyclic-rotation orbits: {len(canonical_to_partitions)}') + for can, orbits in canonical_to_partitions.items(): + print(f' Orbit rep: {list(can)}; members: {len(orbits)}') + + # Block sum analysis + print() + print('=== Block sum mod 3 / mod 9 analysis ===') + sums_mod3 = Counter() + sums_mod9 = Counter() + for p in survivors: + s3 = tuple(sorted(sum(b) % 3 for b in p)) + s9 = tuple(sorted(sum(b) % 9 for b in p)) + sums_mod3[s3] += 1 + sums_mod9[s9] += 1 + print(f'Distribution of sorted block-sums mod 3:') + for k_, v_ in sums_mod3.items(): + print(f' {k_}: {v_} partitions') + print(f'Distribution of sorted block-sums mod 9:') + for k_, v_ in sums_mod9.items(): + print(f' {k_}: {v_} partitions') + + # Check if any survivors are "arithmetic progressions" (3-APs) + print() + print('=== Arithmetic progression check ===') + ap_count = 0 + for p in survivors: + is_ap_partition = all( + (block[1] - block[0]) % k == (block[2] - block[1]) % k + for block in p + ) + if is_ap_partition: + ap_count += 1 + print(f' AP partition: {list(p)}') + print(f'Total AP partitions: {ap_count}') + + # Check if block 1 and block 2 are "shifts" of each other + print() + print('=== Shift relationships between blocks ===') + for p in survivors: + if len(p) != 3: + continue + # Check if block[1] is a cyclic shift of block[0], etc. + shift_dets = [] + for i in range(3): + for j in range(3): + if i == j: continue + # Is block j a shift of block i? + for r in range(k): + shifted = tuple(sorted((x + r) % k for x in p[i])) + if shifted == tuple(sorted(p[j])): + shift_dets.append((i, j, r)) + break + if shift_dets: + print(f' Partition {list(p)}: shift structure {shift_dets}') + + +if __name__ == '__main__': + main() diff --git a/papers/coloring_nested_tire_graphs/notes/induced_partition_findings.pdf b/papers/coloring_nested_tire_graphs/notes/induced_partition_findings.pdf index d7a9def..61c57e5 100644 Binary files a/papers/coloring_nested_tire_graphs/notes/induced_partition_findings.pdf and b/papers/coloring_nested_tire_graphs/notes/induced_partition_findings.pdf differ diff --git a/papers/coloring_nested_tire_graphs/notes/induced_partition_findings.tex b/papers/coloring_nested_tire_graphs/notes/induced_partition_findings.tex index 68dcbe6..4920459 100644 --- a/papers/coloring_nested_tire_graphs/notes/induced_partition_findings.tex +++ b/papers/coloring_nested_tire_graphs/notes/induced_partition_findings.tex @@ -135,17 +135,14 @@ Plan-step 3 from \texttt{two\_approaches\_comparison.tex} was ``prove inclusion via transfer matrix / fibre lifting,'' assuming the candidate partition was empirically correct. The candidate is \emph{not} empirically correct beyond $k = 6$, so trying to prove -the wrong statement is futile. Instead the right next move is: -\begin{enumerate} - \item Find the right induced $\widetilde{\mathcal{F}_2}$ at - $k = 9$: study the $8$ surviving triple-partitions, see if - they have a common structural description (e.g.\ via the - $T_2$ annular triangulation). - \item Or abandon the ``$\widetilde{\mathcal{F}_2}$ is a partition'' - framing entirely and look for a different structure on - $\gamma$ that $T_2$ induces and that suffices for chain - pigeonhole. -\end{enumerate} +the wrong statement is futile. Instead the right next move is to +\textbf{study the $8$ surviving triple-partitions at $k = 9$} and +look for a common structural description (e.g.\ via the $T_2$ annular +triangulation, $T'_{\mathrm{ann}}$ cyclic distance, or modular +arithmetic on $D$- vs $U$-positions). If no such description exists, +the ``$\widetilde{\mathcal{F}_2}$ is a partition'' framing should be +abandoned and a different structure on $\gamma$ sought. This is the +new step done next; see \texttt{notes/k9\_surviving\_partitions.tex}. \section*{Reassessment of Approach 2} diff --git a/papers/coloring_nested_tire_graphs/notes/k9_surviving_partitions.aux b/papers/coloring_nested_tire_graphs/notes/k9_surviving_partitions.aux new file mode 100644 index 0000000..2ad4ff9 --- /dev/null +++ b/papers/coloring_nested_tire_graphs/notes/k9_surviving_partitions.aux @@ -0,0 +1,4 @@ +\relax +\newlabel{prop:fp-connection}{{}{1}} +\newlabel{prop:general}{{}{2}} +\gdef \@abspage@last{3} diff --git a/papers/coloring_nested_tire_graphs/notes/k9_surviving_partitions.log b/papers/coloring_nested_tire_graphs/notes/k9_surviving_partitions.log new file mode 100644 index 0000000..f302a98 --- /dev/null +++ b/papers/coloring_nested_tire_graphs/notes/k9_surviving_partitions.log @@ -0,0 +1,307 @@ +This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 26 MAY 2026 11:44 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**k9_surviving_partitions.tex +(./k9_surviving_partitions.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 +) +(./k9_surviving_partitions.aux) +\openout1 = `k9_surviving_partitions.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 17. +LaTeX Font Info: ... okay on input line 17. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 17. +LaTeX Font Info: ... okay on input line 17. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 17. +LaTeX Font Info: ... okay on input line 17. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 17. +LaTeX Font Info: ... okay on input line 17. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 17. +LaTeX Font Info: ... okay on input line 17. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 17. +LaTeX Font Info: ... okay on input line 17. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 17. +LaTeX Font Info: ... okay on input line 17. + +(/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 18. + +(/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 18. + + +(/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}] +Overfull \hbox (50.1033pt too wide) in paragraph at lines 100--105 +\OT1/cmr/m/n/10.95 Writing each par-ti-tion as $\OMS/cmsy/m/n/10.95 f\OT1/cmr/m +/n/10.95 ([][]\OML/cmm/m/it/10.95 ; ^^N[]; [][]\OT1/cmr/m/n/10.95 )\OML/cmm/m/i +t/10.95 ; \OT1/cmr/m/n/10.95 ([][]\OML/cmm/m/it/10.95 ; ^^N[]; [][]\OT1/cmr/m/ +n/10.95 )\OML/cmm/m/it/10.95 ; \OT1/cmr/m/n/10.95 ([][]\OML/cmm/m/it/10.95 ; ^ +^N[]; [][]\OT1/cmr/m/n/10.95 )\OMS/cmsy/m/n/10.95 g$ + [] + +[2] [3] (./k9_surviving_partitions.aux) ) +Here is how much of TeX's memory you used: + 3269 strings out of 478268 + 48688 string characters out of 5846347 + 352630 words of memory out of 5000000 + 21454 multiletter control sequences out of 15000+600000 + 482720 words of font info for 80 fonts, out of 8000000 for 9000 + 1141 hyphenation exceptions out of 8191 + 55i,8n,62p,240b,248s stack positions out of 10000i,1000n,20000p,200000b,200000s +{/usr/local/texlive/2022/texmf-dist/fo +nts/enc/dvips/cm-super/cm-super-ts1.enc} +Output written on k9_surviving_partitions.pdf (3 pages, 200885 bytes). +PDF statistics: + 100 PDF objects out of 1000 (max. 8388607) + 60 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/k9_surviving_partitions.pdf b/papers/coloring_nested_tire_graphs/notes/k9_surviving_partitions.pdf new file mode 100644 index 0000000..fb871f2 Binary files /dev/null and b/papers/coloring_nested_tire_graphs/notes/k9_surviving_partitions.pdf differ diff --git a/papers/coloring_nested_tire_graphs/notes/k9_surviving_partitions.tex b/papers/coloring_nested_tire_graphs/notes/k9_surviving_partitions.tex new file mode 100644 index 0000000..35a7525 --- /dev/null +++ b/papers/coloring_nested_tire_graphs/notes/k9_surviving_partitions.tex @@ -0,0 +1,211 @@ +\documentclass[11pt]{article} +\usepackage{amsmath,amssymb,amsthm} +\usepackage{graphicx} +\usepackage{geometry} +\usepackage{booktabs} +\geometry{margin=1in} + +\title{The eight surviving $\gamma$-partitions at $k = 9$:\\ + a clean structural description} +\author{} +\date{} + +\newtheorem*{obs}{Observation} +\newtheorem*{prop}{Proposition} +\newtheorem*{thm}{Theorem} + +\begin{document} +\maketitle + +\section*{Setup} + +For $T_2 = (m_2 = 9, k_2 = 9, \mathrm{chords} = \{(0,3), (3,6)\}, +\mathrm{SP})$, $\gamma$ has length $9$ and $T_2$'s outerplanar +$O^{(2)}$ has three $3$-edge faces $F_A = \{0,1,2\}$, +$F_B = \{3,4,5\}$, $F_C = \{6,7,8\}$ (indices into +$B_{\mathrm{in}}^{(2)}$). Empirically (\texttt{notes/induced\_partition\_findings.tex}): +of the $280$ triple-partitions of $\{0, \dots, 8\}$, exactly $8$ have +$\mathcal{L} \subseteq \pi_U(T_2)$. We give a clean structural +description. + +\section*{Classifying $\gamma$-edges by $T_2$'s face structure} + +In the balanced annular triangulation of $T_2$, $D$-positions on +$T'_{\mathrm{ann}}$ are $\{0, 2, 4, 6, 8, 10, 12, 14, 16\}$. $U$-position +$2i + 1$ corresponds to $\gamma$-edge $i$. Each $\gamma$-edge is +``between'' two $D$-positions on $T'_{\mathrm{ann}}$, and is +classified by which $O^{(2)}$-faces those two $D$-positions belong to. + +\begin{center} +\small +\begin{tabular}{cccc} +\toprule +$\gamma$-edge $i$ & $U$-position & adjacent $D$'s (faces) & classification \\ +\midrule +$0$ & $1$ & $D{=}0, D{=}2$ (both $F_A$) & internal to $F_A$ \\ +$1$ & $3$ & $D{=}2, D{=}4$ (both $F_A$) & internal to $F_A$ \\ +$2$ & $5$ & $D{=}4 (F_A), D{=}6 (F_B)$ & boundary $F_A$--$F_B$ \\ +$3$ & $7$ & $D{=}6, D{=}8$ (both $F_B$) & internal to $F_B$ \\ +$4$ & $9$ & $D{=}8, D{=}10$ (both $F_B$) & internal to $F_B$ \\ +$5$ & $11$ & $D{=}10 (F_B), D{=}12 (F_C)$ & boundary $F_B$--$F_C$ \\ +$6$ & $13$ & $D{=}12, D{=}14$ (both $F_C$) & internal to $F_C$ \\ +$7$ & $15$ & $D{=}14, D{=}16$ (both $F_C$) & internal to $F_C$ \\ +$8$ & $17$ & $D{=}16 (F_C), D{=}0 (F_A)$ (cyclic) & boundary $F_C$--$F_A$ \\ +\bottomrule +\end{tabular} +\end{center} + +\noindent +So $\gamma$ partitions into $6$ internal $\gamma$-edges ($2$ per face) +and $3$ boundary $\gamma$-edges ($1$ per pair of adjacent faces): +\[ + \text{Internal}_{F_A} = \{0, 1\},\quad + \text{Internal}_{F_B} = \{3, 4\},\quad + \text{Internal}_{F_C} = \{6, 7\}; +\] +\[ + \delta_{AB} = 2,\quad \delta_{BC} = 5,\quad \delta_{CA} = 8. +\] + +\section*{The structural description} + +\begin{prop}[Face-pair connection partitions] +\label{prop:fp-connection} +A triple-partition $\widetilde{\mathcal{F}_2}$ of $\gamma$ has +$\mathcal{L}(\gamma, \widetilde{\mathcal{F}_2}) \subseteq \pi_U(T_2)$ +iff it has the following structure: each block consists of +\begin{itemize} + \item one boundary $\gamma$-edge $\delta_{ij}$ between an adjacent + $O^{(2)}$-face pair $(F_i, F_j)$, + \item one internal $\gamma$-edge from $F_i$ (i.e.\ one of + $\text{Internal}_{F_i}$'s two elements), + \item one internal $\gamma$-edge from $F_j$. +\end{itemize} +Equivalently: blocks are in bijection with adjacent $O^{(2)}$-face +pairs (here, $\{AB, BC, CA\}$), and for each face $F_i$ the two +internal $\gamma$-edges are distributed between the two blocks +``involving'' $F_i$ (one per block). +\end{prop} + +\begin{proof}[Proof of count] +For $r = 3$ faces: $3$ boundary edges (one per adjacent pair), so $3$ +blocks. Each face $F_i$ has $2$ internal $\gamma$-edges, and each +internal must go to one of the two blocks involving $F_i$. Choices: +$2$ per face, $r$ faces $\Rightarrow$ $2^r = 8$ partitions matching +the empirical $8$ survivors. +\end{proof} + +\subsection*{All 8 survivors enumerated with this structure} + +Writing each partition as +$\{(\text{internal}_A, \delta_{AB}, \text{internal}_B),\; +(\text{internal}_B', \delta_{BC}, \text{internal}_C),\; +(\text{internal}_C', \delta_{CA}, \text{internal}_A')\}$ +where internal$_A$ and internal$_A'$ split $\{0, 1\}$, etc.: + +\begin{center} +\small +\begin{tabular}{ll} +\toprule +$(F_A, F_B, F_C)$ split & resulting partition\\ +\midrule +$(0|1, 3|4, 6|7)$ & $\{(0, 2, 3), (4, 5, 6), (7, 8, 1)\}$ \\ +$(0|1, 3|4, 7|6)$ & $\{(0, 2, 3), (4, 5, 7), (6, 8, 1)\}$ \\ +$(0|1, 4|3, 6|7)$ & $\{(0, 2, 4), (3, 5, 6), (7, 8, 1)\}$ \\ +$(0|1, 4|3, 7|6)$ & $\{(0, 2, 4), (3, 5, 7), (6, 8, 1)\}$ \\ +$(1|0, 3|4, 6|7)$ & $\{(1, 2, 3), (4, 5, 6), (7, 8, 0)\}$ \\ +$(1|0, 3|4, 7|6)$ & $\{(1, 2, 3), (4, 5, 7), (6, 8, 0)\}$ \\ +$(1|0, 4|3, 6|7)$ & $\{(1, 2, 4), (3, 5, 6), (7, 8, 0)\}$ \\ +$(1|0, 4|3, 7|6)$ & $\{(1, 2, 4), (3, 5, 7), (6, 8, 0)\}$ \\ +\bottomrule +\end{tabular} +\end{center} + +These match the empirical survivors (up to relabeling block order). + +\section*{Why the naive candidates fail} + +Both \texttt{induced\_partition.py}'s candidate $1$ (next-$D$) +$\{(0,1,8),(2,3,4),(5,6,7)\}$ and candidate $2$ (prev-$D$) +$\{(0,1,2),(3,4,5),(6,7,8)\}$ \emph{group both internal $\gamma$-edges +of one face into one block}. E.g.\ candidate $2$'s first block +$\{0,1,2\}$ contains both Internal$_{F_A}$ edges ($0$ and $1$) plus +the boundary $\delta_{AB} = 2$ --- no internal from $F_B$. + +This violates the structural rule of Prop.\ \ref{prop:fp-connection} +(which requires one internal from \emph{each} of the two adjacent +faces). Empirically these partitions' Latin sets are not contained +in $\pi_U(T_2)$. + +\section*{Generalisation to $r$ faces} + +For an SP tire whose $O^{(2)}$ has $r$ all-$3$ faces arranged cyclically +$F_0, F_1, \dots, F_{r-1}$ on $B_{\mathrm{in}}^{(2)}$, the $\gamma$-edge +classification gives: +\begin{itemize} + \item $2r$ internal $\gamma$-edges (two per face), + \item $r$ boundary $\gamma$-edges (one per cyclically-adjacent pair + $(F_i, F_{i+1})$), +\end{itemize} +for a total of $3r$ $\gamma$-edges, which is exactly $|\gamma| = k$ +when $k = 3r$ (i.e.\ $k_2 = k$, the symmetric case). + +\begin{prop}[General structural description] +\label{prop:general} +For the symmetric case $k = k_2$ with $r$ all-$3$ $O^{(2)}$-faces, the +triple-partitions $\widetilde{\mathcal{F}_2}$ satisfying +$\mathcal{L}(\gamma, \widetilde{\mathcal{F}_2}) \subseteq \pi_U(T_2)$ +are exactly those of the form: +\begin{itemize} + \item Block $b_{i, i+1}$ for each adjacent pair, containing + boundary $\delta_{i, i+1}$, one internal of $F_i$, one + internal of $F_{i+1}$, + \item subject to: for each face $F_i$, its two internals are + distributed between the two blocks $b_{i-1, i}$ and + $b_{i, i+1}$ (one per block). +\end{itemize} +Count: $2^r$ partitions. +\end{prop} + +\textbf{Status.} Proved (cleanly) at $k = 9$ by exhaustive verification +matching the $8 = 2^3$ count. At $k = 6$ ($r = 2$), the proposition +predicts $2^2 = 4$ ``structural'' partitions, which is a strict +subset of the $10$ triple-partitions whose Latin sets fit in +$\pi_U(T_2)$; the extra $6$ are absorbed by the relatively large +$|\pi_U(T_2)| = 90$ at $k = 6$. At $k \geq 9$ we expect (and +observe at $k = 9$) that the structural partitions are the only +ones working. + +\subsection*{Open: prove the proposition for all $r$} + +Prop.\ \ref{prop:general} is currently empirical-only. A clean proof +would presumably show: + +\begin{enumerate} + \item \emph{Necessity}: a Latin partition not of the face-pair- + connection form contains a $\sigma$ that violates a + proper-edge-coloring constraint inside $T'_{f'}$. + \item \emph{Sufficiency}: each of the $2^r$ structural partitions' + Latin sets is realisable as $\pi_U$-projections, by an + explicit construction lifting a structural assignment of + colors at internal and boundary $\gamma$-edges into a proper + coloring of $T'_{\mathrm{ann}}$ + spokes. +\end{enumerate} + +\section*{Implications for the K\"onig lift} + +The worst-case note's conjecture (\emph{t2-induces-partition}) was +that the induced $\gamma$-partition is unique (the next-$D$ or +prev-$D$ candidate). The reality is that there are $2^r$ structurally +valid candidates; the candidates from the worst-case note are +\emph{not} among them (they violate the ``one internal per face per +block'' rule). + +So the K\"onig-lift approach can be \emph{rescued} by replacing the +naive candidate $\widetilde{\mathcal{F}_2}$ with any of the $2^r$ +face-pair-connection partitions, and applying the K\"onig argument +on the bipartite face-incidence graph of $\mathcal{F}_1$ versus this +new $\widetilde{\mathcal{F}_2}$. This is the natural next step in +the program. + +\end{document}