Test inner-boundary conjecture on Holton-McKay duals

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-01 20:56:19 -04:00
parent 88c74efd28
commit 59410747ea
5 changed files with 116 additions and 6 deletions
@@ -0,0 +1,103 @@
"""Test the tire inner-boundary three-colour conjecture
(Conjecture 1.31, conj:tire-inner-boundary-three-colour) on the six
duals of the non-Hamiltonian 38-vertex cubic plane graphs found by
Holton & McKay.
Each Holton-McKay graph G' is a 3-connected cubic plane graph on 38
vertices; its planar dual G is a 21-vertex triangulation. We run the
exists-source, vertex-rooted inner-boundary check on each dual.
Run with:
sage -python experiments/check_inner_boundary_on_holton_mckay.py
"""
from __future__ import annotations
import os
import sys
from typing import cast
from sage.all import Graph # type: ignore[attr-defined] # pylint: disable=no-name-in-module
HERE = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, HERE)
from check_level_cycle_three_color import ( # noqa: E402
level_sources,
test_graph,
)
HM_FILE = (
"/Users/didericis/Code/math-research/papers/"
"even_level_graph_generators/experiments/nonham38m4.pc"
)
def parse_planar_code_to_sage(path: str) -> list[Graph]:
"""Parse McKay's planar_code file -> list of Sage Graphs."""
with open(path, "rb") as f:
data = f.read()
header = b">>planar_code<<"
assert data.startswith(header), data[:20]
pos = len(header)
out: list[Graph] = []
while pos < len(data):
n = data[pos]
pos += 1
edges = set()
for v in range(n):
while True:
w = data[pos]
pos += 1
if w == 0:
break
edges.add(frozenset((v, w - 1)))
g = Graph([tuple(e) for e in edges], multiedges=False, loops=False)
g.is_planar(set_embedding=True)
out.append(g)
return out
def main() -> int:
hm = parse_planar_code_to_sage(HM_FILE)
print(f"Loaded {len(hm)} Holton-McKay graphs from {HM_FILE}\n")
all_pass = True
for i, gprime in enumerate(hm, start=1):
# Dual: triangulation of the sphere. Sage's planar_dual requires a
# plane embedding; gprime already has one set above.
dual = cast(Graph, gprime.planar_dual())
n = dual.order()
e = dual.size()
print(f"=== HM #{i}: G' has {gprime.order()} vertices, "
f"{gprime.size()} edges; dual has n={n}, m={e} ===")
# Sanity: triangulation has 3n - 6 edges.
if e != 3 * n - 6:
print(f" WARNING: dual is not a triangulation (m != 3n-6)")
sources = list(level_sources(dual, "vertex", None))
passed, complete, checked = test_graph(
dual,
sources,
max_colorings=None,
stop_first=True,
quantifier="exists-source",
restriction="inner-boundary",
)
status = "PASS" if (passed and complete) else (
"UNKNOWN" if not complete else "FAIL"
)
print(f" {status}: sources_tried={checked}/{len(sources)}\n")
if not (passed and complete):
all_pass = False
print("---")
print(
"All Holton-McKay duals satisfy the inner-boundary conjecture: "
f"{all_pass}"
)
return 0 if all_pass else 1
if __name__ == "__main__":
raise SystemExit(main())
@@ -1,5 +1,5 @@
# Fdb version 3
["pdflatex"] 1780341904 "paper.tex" "paper.pdf" "paper" 1780341906
["pdflatex"] 1780361150 "paper.tex" "paper.pdf" "paper" 1780361151
"/usr/local/texlive/2022/texmf-dist/fonts/map/fontname/texfonts.map" 1577235249 3524 cb3e574dea2d1052e39280babc910dc8 ""
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1246382020 1004 54797486969f23fa377b128694d548df ""
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex8.tfm" 1246382020 988 bdf658c3bfc2d96d3c8b02cfc1c94c20 ""
@@ -146,8 +146,8 @@
"fig_tire_example.png" 1779857443 104494 8f9ce26b469b4236b8b67829f73a5faa ""
"fig_tire_tree_decomposition.png" 1780290287 372371 1b44f5a3e9f637d78ae951b1f2e3a89d ""
"fig_universal_level_cycle_counterexample.png" 1780325973 75145 08f600be4e05c11d702bee45996ca222 ""
"paper.aux" 1780341906 8992 aa580f9d36e55b0f1c12ef76f2e58090 "pdflatex"
"paper.tex" 1780341827 80807 9fc330654feb3dd6b936274a0cc57040 ""
"paper.aux" 1780361151 8992 aa580f9d36e55b0f1c12ef76f2e58090 "pdflatex"
"paper.tex" 1780361128 81166 412ad5cc268416100823025ff610b3f4 ""
(generated)
"paper.aux"
"paper.log"
+3 -3
View File
@@ -1,4 +1,4 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 1 JUN 2026 15:25
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 1 JUN 2026 20:45
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
@@ -542,7 +542,7 @@ Package pdftex.def Info: fig_universal_level_cycle_counterexample.png used on
input line 1303.
(pdftex.def) Requested size: 280.79956pt x 156.91663pt.
[17 <./fig_universal_level_cycle_counterexample.png>] [18] [19] [20]
Overfull \hbox (1.78508pt too wide) in paragraph at lines 1644--1646
Overfull \hbox (1.78508pt too wide) in paragraph at lines 1651--1653
[]\OT1/cmr/m/n/10 Length lower bound (Birkhoff). \OT1/cmr/m/it/10 Ev-ery non-tr
ivial seam $\OML/cmm/m/it/10 C$ \OT1/cmr/m/it/10 of $\OML/cmm/m/it/10 G$ \OT1/c
mr/m/it/10 has $\OMS/cmsy/m/n/10 j\OML/cmm/m/it/10 V\OT1/cmr/m/n/10 (\OML/cmm/m
@@ -584,7 +584,7 @@ ve/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti8.pfb></usr/local/texlive
/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb></usr/local/texlive/
2022/texmf-dist/fonts/type1/public/amsfonts/symbols/msam10.pfb></usr/local/texl
ive/2022/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm10.pfb>
Output written on paper.pdf (22 pages, 1022633 bytes).
Output written on paper.pdf (22 pages, 1022921 bytes).
PDF statistics:
218 PDF objects out of 1000 (max. 8388607)
132 compressed objects within 2 object streams
Binary file not shown.
@@ -1540,6 +1540,13 @@ conjecture.}
\label{tab:inner-boundary-three-colour-c5}
\end{table}
We also re-ran the inner-boundary check on the six dual triangulations
of the Holton--McKay graphs and found a vertex source witnessing the
conjecture for each. In four of the six cases the first source tried
already succeeded; in the remaining two, one or two vertex sources
exhausted all $4320$ proper $4$-colourings before a witnessing source
was found.
Unlike the small-$n$ census, where the first source and colouring tried
typically already witness the restriction, the source choice is
genuinely active in the $5$-connected slice: many vertex sources fail