diff --git a/papers/coloring_nested_tire_graphs/experiments/induced_partition.py b/papers/coloring_nested_tire_graphs/experiments/induced_partition.py new file mode 100644 index 0000000..076d849 --- /dev/null +++ b/papers/coloring_nested_tire_graphs/experiments/induced_partition.py @@ -0,0 +1,210 @@ +"""Verify the candidate induced γ-partition conjecture for T_2 (the inner +tire whose chord is on B_in^(2), not on γ). + +Setup: + T_2 is an SP tire with B_out^(2) = γ (length k) and B_in^(2) = C_{k_2} + (length k_2 divisible by 3) plus chord(s) creating O^(2)-faces of + size 3 each. Balanced annular triangulation interleaves D-triangles + (one per B_in^(2)-edge) and U-triangles (one per γ-edge) on the dual + cycle T'_ann of length k + k_2. + +The conjecture is that π_U(C(T_2)) ⊇ L(γ, ~F_2), the Latin subset for +some induced γ-face partition ~F_2. Candidate construction (from +worst_case_proof_sketch.tex): for each O^(2)-face F^(2) (a triple of +B_in^(2)-edges = a triple of D-triangles), the associated γ-edges are +the U-triangles that lie in the cyclic span of F^(2)'s D-positions on +T'_ann, with boundary U-triangles assigned by some rule (e.g. "next +F^(2) cyclically"). + +This script: + - Constructs the candidate induced partition. + - Computes π_U(C(T_2)) by brute enumeration. + - Checks whether L(γ, induced partition) ⊆ π_U. + - Reports findings. +""" +from itertools import permutations, product +from collections import defaultdict + +from tire_fiber_chords import ( + fiber_distribution, + u_positions_for, + projection_support, +) +from tire_fiber_chunked import projection_support_streaming + + +def induced_gamma_partition_candidate_1(k, k_2, chords, d_positions, u_positions): + """Candidate 1: assign each U-triangle to the O^(2)-face whose + D-triangle interval on T'_ann contains it. Boundary U-triangles + are assigned to the cyclically-next F^(2).""" + n = k + k_2 + # First find face structure of O^(2) + from tire_fiber_chords import compute_faces_from_chords + o_faces = compute_faces_from_chords(k_2, chords) # list of lists of B_in^(2)-edge indices + # For each B_in^(2)-edge a, find which face it's in + edge_to_face = {} + for face_idx, edges in enumerate(o_faces): + for a in edges: + edge_to_face[a] = face_idx + # d_positions[i] = T'_ann position of B_in^(2)-edge i. + # Walk T'_ann cyclically. At each U-position, find the next D-position + # cyclically, and assign U to that D's face. + d_pos_set = set(d_positions) + d_pos_to_edge = {p: i for i, p in enumerate(d_positions)} + + u_to_face = {} + for u_pos in u_positions: + # Find the next D-position cyclically after u_pos + for offset in range(1, n): + check_pos = (u_pos + offset) % n + if check_pos in d_pos_set: + next_b_in_edge = d_pos_to_edge[check_pos] + u_to_face[u_pos] = edge_to_face[next_b_in_edge] + break + + # Each U-position corresponds to a γ-edge. γ-edges are indexed by + # u_positions in cyclic order. + # u_positions[i] ↔ γ-edge i in the cyclic order on T'_ann + u_pos_to_gamma_edge = {p: i for i, p in enumerate(u_positions)} + + # Build the partition: face_idx → list of γ-edge indices + partition = defaultdict(list) + for u_pos, face_idx in u_to_face.items(): + partition[face_idx].append(u_pos_to_gamma_edge[u_pos]) + return [sorted(v) for v in partition.values()] + + +def induced_gamma_partition_candidate_2(k, k_2, chords, d_positions, u_positions): + """Candidate 2: assign each U-triangle to the O^(2)-face whose + D-triangle interval on T'_ann contains it (using PREVIOUS D for + boundary assignment instead of next).""" + n = k + k_2 + from tire_fiber_chords import compute_faces_from_chords + o_faces = compute_faces_from_chords(k_2, chords) + edge_to_face = {} + for face_idx, edges in enumerate(o_faces): + for a in edges: + edge_to_face[a] = face_idx + d_pos_set = set(d_positions) + d_pos_to_edge = {p: i for i, p in enumerate(d_positions)} + + u_to_face = {} + for u_pos in u_positions: + for offset in range(1, n): + check_pos = (u_pos - offset) % n + if check_pos in d_pos_set: + prev_b_in_edge = d_pos_to_edge[check_pos] + u_to_face[u_pos] = edge_to_face[prev_b_in_edge] + break + + u_pos_to_gamma_edge = {p: i for i, p in enumerate(u_positions)} + partition = defaultdict(list) + for u_pos, face_idx in u_to_face.items(): + partition[face_idx].append(u_pos_to_gamma_edge[u_pos]) + return [sorted(v) for v in partition.values()] + + +def latin_set(partition, k): + """Set of σ ∈ {1,2,3}^k where σ restricted to each partition block + is a permutation of {1,2,3} (= each block has exactly 3 elements + using all 3 colors).""" + L = set() + if any(len(b) != 3 for b in partition): + return None # not all triples + 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): + """Yield all ways to partition a set of 3n elements into triples.""" + 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 check_all_triple_partitions(pi_U, k): + """Return all triple-partitions of {0,...,k-1} whose Latin set ⊆ π_U.""" + if k % 3 != 0: + return [] + good = [] + for partition in all_partitions_into_triples(range(k)): + L = latin_set([list(b) for b in partition], k) + if L is None: + continue + if L <= pi_U: + good.append([sorted(b) for b in partition]) + return good + + +def main(): + cases = [ + (6, 6, [(0, 3)], "k=k_2=6, antipodal chord (faces 3+3)"), + (6, 6, [(0, 2), (3, 5)], "k=k_2=6, two chords (faces 2+2+2)"), + (6, 3, [], "k=6, k_2=3 (T_2 inner = C_3, no chord, SP)"), + (9, 9, [(0, 3), (3, 6)], "k=k_2=9, two chords (faces 3+3+3)"), + ] + for k, k_2, chords, desc in cases: + print(f'\n=== {desc} ===') + print(f' k = γ length = {k}, k_2 = {k_2}, chords = {chords}') + + # Get T_2's projections. T_2's outer boundary = γ, so we use π_U. + from tire_fiber_chords import d_positions_for + d_pos = d_positions_for(k, k_2) + u_pos = u_positions_for(k, k_2) + try: + if k + k_2 <= 14: + fibers, _, _ = fiber_distribution(k, k_2, chords) + pi_U = projection_support(fibers, u_pos) + else: + # chunked streaming for larger cases + pi_U = projection_support_streaming(k, k_2, chords, u_pos) + except Exception as e: + print(f' computation failed: {e}') + continue + print(f' |π_U| = {len(pi_U)}, 3^k = {3**k}') + + # Try candidate induced partitions + for cand_name, cand_fn in [ + ('Candidate 1 (next-D)', induced_gamma_partition_candidate_1), + ('Candidate 2 (prev-D)', induced_gamma_partition_candidate_2), + ]: + partition = cand_fn(k, k_2, chords, d_pos, u_pos) + partition_str = ", ".join(str(sorted(b)) for b in partition) + print(f' {cand_name}: partition = {partition_str}') + + L = latin_set(partition, k) + if L is None: + print(f' partition not all-3-triples; skipping Latin test') + continue + print(f' |L| = {len(L)}, L ⊆ π_U? {L <= pi_U}') + + # Enumerate all triple-partitions and find which give Latin ⊆ π_U + if k % 3 == 0: + good_partitions = check_all_triple_partitions(pi_U, k) + print(f' # triple-partitions with Latin ⊆ π_U: {len(good_partitions)}') + for p in good_partitions[:5]: + print(f' Latin ⊆ π_U: {p}') + + +if __name__ == '__main__': + main() diff --git a/papers/coloring_nested_tire_graphs/notes/induced_partition_findings.aux b/papers/coloring_nested_tire_graphs/notes/induced_partition_findings.aux new file mode 100644 index 0000000..a79beaf --- /dev/null +++ b/papers/coloring_nested_tire_graphs/notes/induced_partition_findings.aux @@ -0,0 +1,2 @@ +\relax +\gdef \@abspage@last{3} diff --git a/papers/coloring_nested_tire_graphs/notes/induced_partition_findings.log b/papers/coloring_nested_tire_graphs/notes/induced_partition_findings.log new file mode 100644 index 0000000..8db2f40 --- /dev/null +++ b/papers/coloring_nested_tire_graphs/notes/induced_partition_findings.log @@ -0,0 +1,317 @@ +This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 26 MAY 2026 11:33 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**induced_partition_findings.tex +(./induced_partition_findings.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 +) +(./induced_partition_findings.aux) +\openout1 = `induced_partition_findings.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 16. +LaTeX Font Info: ... okay on input line 16. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 16. +LaTeX Font Info: ... okay on input line 16. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 16. +LaTeX Font Info: ... okay on input line 16. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 16. +LaTeX Font Info: ... okay on input line 16. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 16. +LaTeX Font Info: ... okay on input line 16. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 16. +LaTeX Font Info: ... okay on input line 16. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 16. +LaTeX Font Info: ... okay on input line 16. + +(/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 17. + +(/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 17. + + +(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsb.fd +File: umsb.fd 2013/01/14 v3.01 AMS symbols B +) +Overfull \hbox (3.63722pt too wide) in paragraph at lines 88--93 +[]\OT1/cmr/m/n/10.95 The eight sur-viv-ing par-ti-tions are not con-tigu-ous bl +ocks. Ex-am-ples: $\OMS/cmsy/m/n/10.95 ff\OT1/cmr/m/n/10.95 0\OML/cmm/m/it/10.9 +5 ; \OT1/cmr/m/n/10.95 2\OML/cmm/m/it/10.95 ; \OT1/cmr/m/n/10.95 3\OMS/cmsy/m/n +/10.95 g\OML/cmm/m/it/10.95 ; \OMS/cmsy/m/n/10.95 f\OT1/cmr/m/n/10.95 1\OML/cmm +/m/it/10.95 ; \OT1/cmr/m/n/10.95 6\OML/cmm/m/it/10.95 ; \OT1/cmr/m/n/10.95 8\OM +S/cmsy/m/n/10.95 g\OML/cmm/m/it/10.95 ; \OMS/cmsy/m/n/10.95 f\OT1/cmr/m/n/10.95 + 4\OML/cmm/m/it/10.95 ; \OT1/cmr/m/n/10.95 5\OML/cmm/m/it/10.95 ; \OT1/cmr/m/n/ +10.95 7\OMS/cmsy/m/n/10.95 gg$\OT1/cmr/m/n/10.95 , + [] + +[1 + +{/usr/local/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] +[2] +LaTeX Font Info: Font shape `OT1/cmtt/bx/n' in size <10.95> not available +(Font) Font shape `OT1/cmtt/m/n' tried instead on input line 171. + [3] (./induced_partition_findings.aux) ) +Here is how much of TeX's memory you used: + 3256 strings out of 478268 + 48561 string characters out of 5846347 + 351623 words of memory out of 5000000 + 21440 multiletter control sequences out of 15000+600000 + 480708 words of font info for 72 fonts, out of 8000000 for 9000 + 1141 hyphenation exceptions out of 8191 + 55i,9n,62p,243b,242s 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 induced_partition_findings.pdf (3 pages, 222172 bytes). +PDF statistics: + 115 PDF objects out of 1000 (max. 8388607) + 69 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/induced_partition_findings.pdf b/papers/coloring_nested_tire_graphs/notes/induced_partition_findings.pdf new file mode 100644 index 0000000..d7a9def Binary files /dev/null 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 new file mode 100644 index 0000000..68dcbe6 --- /dev/null +++ b/papers/coloring_nested_tire_graphs/notes/induced_partition_findings.tex @@ -0,0 +1,188 @@ +\documentclass[11pt]{article} +\usepackage{amsmath,amssymb,amsthm} +\usepackage{graphicx} +\usepackage{geometry} +\usepackage{booktabs} +\geometry{margin=1in} + +\title{Empirical findings on the K\"onig-lift conjecture\\ + (Conj.\ \emph{t2-induces-partition} from + \texttt{worst\_case\_proof\_sketch.tex})} +\author{} +\date{} + +\newtheorem*{obs}{Observation} + +\begin{document} +\maketitle + +\section*{What was tested} + +The K\"onig-lift approach to chain pigeonhole +(\texttt{worst\_case\_proof\_sketch.tex}) conjectures that for an SP +tire $T_2$ with $B_{\mathrm{in}}^{(2)}$-chord structure such that +every $O^{(2)}$-face has exactly $3$ $B_{\mathrm{in}}^{(2)}$-edges, +there is an \emph{induced} face partition $\widetilde{\mathcal{F}_2}$ +of $\gamma$ into triples with +\[ + \pi_U(\mathcal{C}(T_2)) \supseteq + \mathcal{L}(\gamma, \widetilde{\mathcal{F}_2}). +\] +The candidate construction (worst-case note, ``one concrete +attempt'') groups $\gamma$-edges by the $O^{(2)}$-face whose +$D$-triangle is cyclically next (or previous) on $T'_{\mathrm{ann}}$. + +Script: \texttt{experiments/induced\_partition.py}. + +\section*{Findings} + +\begin{center} +\small +\begin{tabular}{lll|cc|cc} +\toprule +$k = |\gamma|$ & $k_2 = |B_{\mathrm{in}}^{(2)}|$ & chords on $B_{\mathrm{in}}^{(2)}$ + & $|\pi_U|$ & $3^k$ + & candidate 1 OK? & candidate 2 OK? \\ +\midrule +$6$ & $6$ & $(0,3)$ (faces $3{+}3$) + & $90$ & $729$ & \textbf{Yes} & \textbf{Yes}\\ +$6$ & $6$ & $(0,2)(3,5)$ (faces $2{+}2{+}2$) + & $456$ & $729$ & N/A (not triples) & N/A\\ +$6$ & $3$ & none (face $3$, single) + & $84$ & $729$ & N/A (not triples) & N/A\\ +$9$ & $9$ & $(0,3)(3,6)$ (faces $3{+}3{+}3$) + & $978$ & $19683$ & \textbf{No} & \textbf{No}\\ +\bottomrule +\end{tabular} +\end{center} + +\subsection*{(a) The candidate works at $k = 6$} + +For $k = k_2 = 6$ antipodal chord (the symmetric all-$3$-faces case), +both candidate $1$ (next-$D$) and candidate $2$ (prev-$D$) produce +the same kind of $\gamma$-partition (a two-block partition of size +$3$ each), and the Latin subset $\mathcal{L}(\gamma, \widetilde{ +\mathcal{F}_2})$ of size $36$ is verified $\subseteq \pi_U$. + +In fact \emph{every} two-block triple-partition of +$\{0, \ldots, 5\}$ (there are $10$ such) has Latin subset +$\subseteq \pi_U$ here, because $|\pi_U| = 90$ is much larger than +$36$ and absorbs all of them. + +\subsection*{(b) The candidate \emph{fails} at $k = 9$} + +This is the surprise. For $k = k_2 = 9$ with chords $(0,3),(3,6)$ +producing three $O^{(2)}$-faces of size $3$ each: +\begin{itemize} + \item Candidate $1$ (next-$D$): + $\widetilde{\mathcal{F}_2} = \{\{0,1,8\},\;\{2,3,4\},\;\{5,6,7\}\}$. + $|\mathcal{L}| = 216$, but $\mathcal{L} \not\subseteq \pi_U$ + (some Latin elements are missing). + \item Candidate $2$ (prev-$D$): + $\widetilde{\mathcal{F}_2} = \{\{0,1,2\},\;\{3,4,5\},\;\{6,7,8\}\}$. + $|\mathcal{L}| = 216$, but $\mathcal{L} \not\subseteq \pi_U$. + \item Of all $280$ possible triple-partitions of $\{0, \ldots, 8\}$, + only $8$ have $\mathcal{L} \subseteq \pi_U$. +\end{itemize} + +The eight surviving partitions are not contiguous blocks. Examples: +$\{\{0,2,3\},\{1,6,8\},\{4,5,7\}\}$, +$\{\{0,2,4\},\{1,6,8\},\{3,5,7\}\}$, etc. They do not have an +obvious geometric interpretation in terms of $T_2$'s annular +triangulation. + +\subsection*{(c) The asymmetric case ($k \ne k_2$) is outside scope} + +For $k = 6, k_2 = 3$ (the configuration with $T_2 = (3, -, \mathrm{SP})$), +the candidate construction collapses to a single block of $6$ +$\gamma$-edges (since there is only one $O^{(2)}$-face), so it is not a +triple-partition. Moreover, \emph{no} triple-partition of +$\{0, \ldots, 5\}$ has Latin subset $\subseteq \pi_U$ here. + +So Conj.\ \emph{t2-induces-partition} as currently stated does not +cover $k \ne k_2$, and the empirical data shows there is no +``rescue'' partition of any kind. + +\section*{Implications} + +\subsection*{The K\"onig lift's natural construction breaks past $k = 6$} + +The candidate $\widetilde{\mathcal{F}_2}$ from the worst-case note is +the geometrically natural one (group $\gamma$-edges by their nearest +$O^{(2)}$-face $D$-triangle), and it succeeds at $k = 6$ partly by +coincidence: $|\pi_U|$ is so large that every triple-partition fits. +At $k = 9$ the gap between $|\pi_U|$ and $3^k$ widens, and the +candidate's specific partition is no longer in the small set of +``correct'' partitions. + +The fact that only $8 / 280$ partitions work at $k = 9$ suggests +that whatever the right $\widetilde{\mathcal{F}_2}$ is, it is +\emph{not} just a function of $T_2$'s outerplanar face structure --- +it must encode finer information about the annular triangulation. + +\subsection*{Asymmetric pairs not covered at all} + +The empirical worst-case overlap $|S_1 \cap S_2| = 6$ in step-$2$ +data comes from \emph{asymmetric} pairs (e.g.\ +$T_1 = (6, (0,3), \mathrm{SP})$ vs $T_2 = (3, -, \mathrm{SR})$) +where $k \ne k_2$. Even if the K\"onig lift were proved for the +symmetric case, it would not handle the asymmetric pairs that +witness the worst case. + +\subsection*{Step 3 (proof) is not the right next move} + +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} + +\section*{Reassessment of Approach 2} + +Approach 2 (K\"onig lift) was preferred in +\texttt{two\_approaches\_comparison.tex} on the grounds that ``the +hard step is already proven, only the induced-partition piece is +conjectural.'' These findings show: + +\begin{itemize} + \item The induced-partition piece is \emph{not} just conjectural --- + the specific construction in the worst-case note is + \emph{wrong} for $k > 6$. + \item The K\"onig-overlap proposition (when both tires give direct + $\gamma$-face partitions) is still cleanly proved; it just + applies to fewer cases than was hoped. +\end{itemize} + +\subsection*{Updated ranking} + +Both approaches now have known structural obstacles: + +\begin{itemize} + \item \textbf{Approach 1 (2-SAT, \texttt{rainbow\_proof.tex})}: + single open conjecture (2-SAT solvability), empirically true + for all tested $\sigma \in \mathcal{P}_m$ at $m \in \{4, 6\}$. + Limited to $m \in \{4, 6\}$ (SP feasibility) but at least + empirically holds throughout that range. + \item \textbf{Approach 2 (K\"onig lift, + \texttt{worst\_case\_proof\_sketch.tex})}: K\"onig-overlap + prop proved, but the natural induced-partition construction + is empirically wrong at $k = 9$. Asymmetric pairs (where + the worst case actually lives) are not covered at all. +\end{itemize} + +Both approaches give partial structural results. Neither closes +the chain-pigeonhole step in its full generality. The honest +status: chain pigeonhole has no full proof yet, and both attempted +attacks have specific empirical limits. + +\end{document}