For each interface size m, compare the realized census vocabulary (outer
up-tooth apexes and inner singleton-down apexes) against the full
parity-admissible set. At n=12, m=3..8 every parity-admissible sequence is
realized on both faces (counts 1,4,10,31,91,274; none missing), and up==down
throughout -- the n=9 result is n-independent and scales to m=8. Validated
against the known n=9 answer before running n=12.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The anchored single-representative reading interacted with dihedral graph
dedup to record an arbitrary orientation of each necklace, producing a
spurious up-vs-down split at n=9,m=6 (001212 only up, 010122 only down --
the same necklace). Add dihedral_reading_sequences(), which unions the
canonical reading over all 2n dihedral anchors and exactly reproduces the
brute un-deduped census; make it the default for both experiments, with
--anchored to recover the old behaviour. Document the artifact and fix in
kempe_sequence_orientation_note.md.
Regenerate up + down for n=9, m=3..6. Up and down now agree on sequences
and groupings at every m (m=6: identical 31 sequences, 6 groups; the
001212/010122 pair appears on both sides). Groupings coarsen vs anchored
(m=4: 3 groups; m=5: 2 groups) since the orientation-honest vocabulary
merges previously split sequence-sets.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Mirror of the up-tooth experiment with the distinguished valid face moved
from the outer face to an inner non-tooth face (root or bite inner-gap).
For each (M(T), inner face) config holding m singleton down-tooth apexes,
record the apex colour sequence (cyclic order, mod colour permutation) over
Kempe-balanced colourings and group configs by their sequence-set. Runs for
m=3,4,5,6 with per-sequence notes, figures, and a config atlas.
Finding: inner faces realise the same parity-admissible sequence vocabulary
and the same distinct-sequence counts (1/4/10/28) as the outer face, i.e.
the Kempe-parity law acts uniformly on every valid face. At m=6 the configs
are the U<->D embedding mirror of the up-m=6 graphs (matching 7 configs,
28 sequences, 127 colourings).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Enumerate Kempe-balanced 3-colourings of every M(T) with |A(T)|=9 and a
fixed number m of up teeth, record the up-tooth apex colour sequence
(cyclic order, mod colour permutation only), and group the M(T) by their
set of unique sequences. Runs for m=3,4,5,6 with per-sequence notes and
figures plus a summary atlas.
Finding: realised sequences obey outer-face Kempe parity (all three
colour-counts share m's parity). Distinct sequences grow 1/4/10/28 while
M(T) count falls 23/29/18/7 across m=3..6.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add draw_tire_realization.py: for each full medial tire graph from the seed-1
analysis, draw every proper 3-colouring (mod colour permutation) in a grid,
each panel coloured by its three colour classes and banner-labelled Realized /
Unrealized / Invalid, and write one standalone note per graph (plus a README
index). Refactor tire_realization_analysis to expose iter_pieces() yielding
per-piece coloured colourings.
Output: tire_realization_seed1/ with 17 piece notes + figures.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
For a random 12-vertex maximal planar graph (sphere convex hull), enumerate
all proper 3-colourings of M(G), take the BFS-level (tire-tree) decomposition
from every source vertex, and build each full medial tire graph M(T) in the
ambient tread-face model (cycle + teeth + bites). Recognise each M(T) as a
FullMedialTireGraph and label every proper 3-colouring Realized (Kempe-balanced
and a restriction of a global colouring), Unrealized (balanced but not a
restriction), or Invalid (not balanced).
Findings on seed 1 (17 pieces, M(G) with 90 colourings): zero realized-but-
invalid colourings (confirms Remark 5.8 on a real triangulation), and 12 of 17
pieces carry Unrealized colourings -- Kempe-balance is necessary but not
sufficient for realization; it is sufficient only on cap-like all-up/shallow
treads.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Bites arise when the inner outerplanar graph O has a bridge: the bridge
edge is traversed twice by the outer-face walk, so its medial vertex is
adjacent to four annular vertices.
- check_remark58_bite.py: a minimal bite tread (outer 4-cycle + interior
bridge u-w) restricts to Kempe-balanced on all colourings (outer face).
- check_remark58_bite_rich.py: O = triangle abc + pendant bridge a-d gives
one bite plus three singleton down teeth in the bite's inner-gap face;
every restriction is Kempe-balanced (the three gap singletons are a
rainbow in every global colouring).
Update Remark 5.8's verification note: the bite case, including singletons
in the bite-gap face, is now confirmed.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Computational checks of the necessity of Kempe-balance (Remark 5.8):
- check_medial_face_parity.py shows the naive "even P-coloured vertices
per medial face" claim is false (odd vertex-faces on the octahedron and
stacked triangulations), so the original face-parity justification was
wrong.
- check_remark58_bitefree.py builds genuine bite-free tire pieces (capped
triangulated annuli) and confirms every proper 3-colouring of M(G)
restricts to a Kempe-balanced colouring (|A(T)|=6,8,10,12, all
colourings, zero failures).
Rewrite Remark 5.8 to cite the correct mechanism: the up/down apexes lie
on level cycles, and a P-Kempe cycle meets each level cycle in an even
number of P-coloured incidences (Lemma 5.6). Note the bite case is not
yet checked end to end.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Define Kempe-balanced colourings of a full medial tire graph (Def 5.7):
for each valid face (outer face or interior non-tooth face of B(T)) and
each colour pair {a,b}, the number of tooth apexes incident to the face
coloured a or b must be even. Add Remark 5.8 (necessity: a colouring of
M(T) extends to M(G) only if it is Kempe-balanced) and rename Lemma 5.5
to "Kempe chains are cycles".
Add kempe_valid_colorings.py: enumerate all proper 3-colourings of a full
medial tire graph, label each Kempe-balanced/valid or invalid, and plot
them with the offending face's Kempe chains and odd apex set highlighted
on invalid panels.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Name A(T) the "annular cycle" (Thm 3.3, Def 3.4); clarify the bite-face
condition in Remark 3.8 to count down-tooth apexes interior to each face;
add the non-incidence stipulation for bite edges to Def 3.7.
Add an exhaustive generator over |A(T)| enforcing the 3.1-3.9 properties
(tooth word, non-crossing non-incident bites, >=3 up teeth, bite-face
condition), plus a plotting script and the n=9 atlas (81 dihedral classes).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds two TikZ figures (boundary-state worst cases and annular cycle
counterexample), a new subsection on Kempe-cycle conservation across
medial tires, and the experiment scripts/findings for the medial tire
restriction search and annular cycle condition check.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>