Commit Graph

370 Commits

Author SHA1 Message Date
didericis d9007c8697 Add bridge-derived census (n=6..10) to the disjunction section
Cross-tabulate bridge-derived vs intertwining-tree coverage: the
bridge-derived share falls from 100% (n=6) to 62.7% (n=10), the
disjunction never relies on it alone, and the "neither" column is
identically zero throughout.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 02:27:49 -04:00
didericis b1d681f39e Add self-flip-neighbor survey and write-up
Add experiments/self_flip_neighbor.py: enumerate the admissible flips of a
maximal planar graph and test each for isomorphism to the original, i.e. decide
whether G lies in its own flip neighborhood N(G). Supports a single graph6 input
or an order-range survey over min-degree-5 triangulations.

Add a "self-flip neighbors" section to paper.tex with the n=12..25 survey table
and a remark: the self-flip fraction declines as expected (min-degree-5
triangulations are asymptotically rigid), and this is not useful for narrowing
the minimal criminal since it neither includes nor excludes any candidate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 00:59:44 -04:00
didericis f54b66f857 Add double-contraction reductio strategy note
Records the degree-5 double-contraction proof skeleton: Kempe chains as
Heawood face-chains (flip-set + same-side sign rule), the chain-transport
hypothesis L1, the inner/outer nested reductio, H'' as per-interface
contraction along the chain, and the single emptiness Claim it reduces to,
with the Errera oracle as the stress test.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 23:43:45 -04:00
didericis 5552e07803 Add force-first Heawood labelling to the medial tire dual-cut experiment
heawood_labelling(): depth-seeded force-first +/-1 labelling of the
source-dual cut, targeting sum ≡ 0 (mod 3) on each dual face (vertex
link), with bookkeeping for seeds, forced fills, unforceable faces, and
failing faces.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 21:43:21 -04:00
didericis 163e453464 Reframe the constraint floor honestly as a conjecture
Section 4 no longer states the floor as a proven Proposition. Now: prove
interior-free disks attain 2^(n-2) (ear-peeling) and the un-stacking
lemma, state |Phi(D)| >= 2^(n-2) as a Conjecture, and give an honest
status remark -- holds for the Apollonian class, reduces to the
irreducible case, empirically strict (5/4), but |Phi| is NOT monotone
(the earlier freedom-positive monotonicity claim was wrong) and both
natural elementary proofs provably fail. Soften the note's observation to
match.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 21:32:57 -04:00
didericis c482bc5633 Option 2 (direct transversal) clean form is dead too
transversal.py: a STRONG transversal (n-2 faces whose Boolean assignment
single-valuedly and injectively determines the boundary) would give a
constructive proof. It exists in 0/2948 disks with k>=1 -- once there is
any interior vertex, fixing n-2 faces leaves boundary-visible completion
freedom, so the boundary is never single-valued in them. Works only at
k=0 (base case). Both elementary routes (reduction localization, direct
transversal) now closed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 21:13:35 -04:00
didericis c4339624ce Strategy A localization fails: local star-vs-fan domination is false
local_star_fan.py: the size step |Phi(D-v)| <= |Phi(D)| localizes to a
star-vs-fan contribution comparison at v. But |Star(t)| >= min_root
|Fan(t)| is FALSE (6586 violations) -- the star's extra v-constraint
(sum mu ≡ 0) can make it realize fewer boundary vectors than the fan when
the link has interior vertices. So Strategy A is globally true (100%) but
NOT via per-vertex local domination; the size inequality needs a global
union/choice-of-v argument. Useful byproduct: the Boolean-bit / mod-3
incidence reformulation of Phi.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 21:09:58 -04:00
didericis d7c93cf2c2 Test induction strategy for the irreducible lemma
reduction_exists.py: every disk with k>=1 (and every irreducible disk)
has a Phi-NON-INCREASING vertex removal (|Phi(D-v)| <= |Phi(D)|), 100%
over thousands of disks -- so induction to the k=0 base case is viable.
BUT the clean set-inclusion Phi(D-v) subset Phi(D) holds for only ~8%, so
the size step cannot be proved by "re-inserting v loses no sequence"; it
needs a genuine cardinality injection between non-nested sets.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 20:35:49 -04:00
didericis 411ff7f465 Add the lower-bound proof programme to the note
Section 4: un-stacking lemma (degree-3 removal preserves Phi, proved),
ear-peeling base case (k=0 => 2^(n-2)), reduction to the irreducible
case, and the irreducible lemma as the sole open conjecture (|Phi| >=
5/4 * 2^(n-2), tight at the degree-4/5 patch; wheel = floor(2^n/3) is not
extremal). Records the two dead ends (monotonicity false, universal
toggles insufficient) and ties each claim to its experiment.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 20:27:36 -04:00
didericis 24a3d89d88 Pin the extremal irreducible disk (correcting the wheel claim)
wheel_extremal.py: |Phi(wheel_n)| = floor(2^n/3) exactly (ratio ->4/3),
but the wheel is NOT the irreducible minimiser for n>=6. The extremal disk
is a single MINIMAL-degree interior vertex (degree 4 or 5, both tie),
giving |Phi| = (5/4)*2^(n-2) = 5*2^(n-4). The ratio rises monotonically
with center degree, 5/4 -> 4/3, so minimal degree is extremal. Sharpens
the irreducible lemma to |Phi| >= (5/4)*2^(n-2), tight at the degree-4/5
patch.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 20:14:52 -04:00
didericis bd8499a25b Isolate the irreducible case: reduces the floor proof to one lemma
irreducible_floor.py: over 10k+ irreducible disks (k>=1, min interior
degree >=4), |Phi| never violates 2^(n-2) and never sits on it -- min is
5*2^(n-4) = (5/4)2^(n-2), the wheel being the minimizer. Universal toggles
are dead (99.9% have zero boundary-only faces). Since un-stacking degree-3
vertices preserves Phi and terminates at a k=0 or irreducible residue, the
whole lower bound reduces to: every irreducible disk has |Phi| >= 2^(n-2).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 20:08:00 -04:00
didericis 9f6328788c Test monotonicity lemma: degree-3 exact, but lemma is false at degree-4
monotonicity_test.py inserts interior vertices and checks |Phi|. Degree-3
stacks preserve Phi exactly (confirms un-stacking, 100%), but degree-4
insertions can SHRINK Phi (6->5, 30->28) and Phi(D') subset Phi(D) fails
~13% -- so the reduce-to-base-case proof of the 2^(n-2) floor via
monotonicity does not work. Violations stay above the floor, so the floor
is protected by something stronger; redirect to a direct n-2 toggle
construction.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 19:58:59 -04:00
didericis 1d981b4d01 Add the freedom-positive counting balance to the constraint floor
Remark: a disk with k interior vertices has 2k+n-2 faces (Euler) but only
k interior constraints, so each interior vertex adds two degrees of
freedom against one constraint -- depth is freedom-positive and Phi can
only retain or enlarge below the interior-free floor 2^(n-2). Motivates
the lower bound and replaces the prior TODO sketch.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 02:24:04 -04:00
didericis b70ea2c087 Back the 2^(n-2) floor with validated diverse-disk search
The stacked-only search missed non-stacked disks, and cocircular boundary
points gave degenerate Delaunay (invalid disks, spurious sub-floor |Phi|).
Add floor_diverse_disks.py: 1700+ validated disks per n (convex non-
cocircular boundary, face-count and boundary-edge checks) confirm min|Phi|
= 2^(n-2). Note records that interior structure tends to ENLARGE Phi
(wheel 5 vs fan 4) and that depth adds two faces per one constraint.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 02:22:41 -04:00
didericis d2156f06ee Scaffold the 2^(n-2) constraint-floor proposition
Add section 4: define the achievable boundary set Phi(D) of a triangulated
disk and state the constraint-floor proposition |Phi(D)| >= 2^(n-2), with
the attainment direction proved (fan injectivity) and the lower bound left
as a marked gap with strategy. Remark records the zonotope structure and
the short-interface concentration of difficulty.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 02:14:52 -04:00
didericis 60c9f1d3a8 Add Heawood boundary-restriction experiments and findings note
Experiments probing the cluster restriction set R_K / Phi: R_K is a Z/3
zonotope (not a GF(3) subspace), the "richness" invariant is an artifact
of non-shrinking annuli, the interface gluing always works on interior
cycles (forced by 4CT), and the maximal constraint achievable on an
n-cycle is a floor of 2^(n-2) -- already reached by the trivial tire.
Note boundary_restriction_structure.tex writes these up.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 02:12:54 -04:00
didericis 351ae0cdfe Account for the outer face in the Heawood face-sum identity
The bounded-face sum omits the outer face at outer-boundary vertices, so
restrict the gluing identity to interior vertices (where all cluster
interfaces live) and recover a colouring by carrying a single +/-1 label
on the unbounded face f_inf, giving Heawood's identity on the full cubic
dual for the Tait step.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 01:33:07 -04:00
didericis c5f81842c7 Run Heawood pigeonhole between nested connected tire clusters
Add the two-sided cluster decomposition proposition: a vertex's full
Heawood face-sum splits as exactly one child-cluster contribution plus
one parent-cluster contribution (the at-most-two-clusters bound makes the
pairing binary and complete). Explain why this fails per-tire -- a vertex
on many same-depth tires has only a fragment of its face-star in any one
tire -- and recast the chain-pigeonhole and 4CT conjectures to nested
clusters with a cluster restriction relation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 01:10:30 -04:00
didericis 646cf9d12f Add connected tire clusters with two-cluster-per-vertex proposition
Define a connected tire cluster (union of same-depth tires joined by
shared vertices, transitive closure), prove same-depth tires meet only
in vertices, and prove every vertex lies in at most two clusters (one at
each of two consecutive depths) -- the bounded coarsening of the
unbounded per-vertex tire count.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 01:03:37 -04:00
didericis 251c453437 Add Heawood chain-pigeonhole programme to tire-dual paper
Define a +/-1 Heawood face-labelling of a tire, its induced boundary
Heawood sequences and restriction relation, and interface compatibility
(0<->0, +1<->-1 = vertex face-sum vanishes mod 3). State the Heawood
chain-pigeonhole conjecture and a tire route to the Four Colour Theorem,
parallel to the medial programme.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 00:45:03 -04:00
didericis 851ca7fbed Scaffold Heawood restrictions on nested tire graph duals paper
Add a new paper stub referencing the nested tire decompositions paper,
with intro, Heawood bibliography entry, and an empty restrictions section.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 00:31:48 -04:00
didericis af60c3b241 Draw source-dual cut on a valid straight-line embedding
Store the combinatorial planar embedding in the result and lay out the
source graph with nx.planar_layout so no primal edges cross and each dual
node sits inside its own triangle, replacing the concentric layout that
produced crossings. Add a committed generate_full_walk.py that reproduces
the walk .md/.pdf/.png outputs, and regenerate the walk 1 and walk 2 dual
figures and PDFs (reports unchanged).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 03:59:22 -04:00
didericis 4ba9ce47d1 Add walk-distance labelling to source-dual cut
Label each dual face by its distance, within the source-dual cut, from
the first entry's cap down tooth. Regenerate the seed 1 and seed 2 full
walk figures and metadata with the new labelling.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 03:42:08 -04:00
didericis 696a6b3104 Add second full medial tire cut walk (seed 2)
Source-dual cut is a spanning tree of the dual (38 faces, 37 edges,
connected and acyclic) after 20 cut edges removed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 21:56:30 -04:00
didericis 1e8bee04ce Handle compound medial tires in cut labelling 2026-06-15 21:46:56 -04:00
didericis 37a7ff0b00 Update medial tire cut labelling 2026-06-15 20:54:25 -04:00
didericis 9ef231655e Draw compound medial tires as separated cycles 2026-06-15 16:42:37 -04:00
didericis d541aea526 Move medial tire drawing script into lib 2026-06-15 16:25:33 -04:00
didericis 2a56322841 Define simple and compound medial tires 2026-06-15 16:14:50 -04:00
didericis 51c9efa7f2 Stop splitting random medial treads into components 2026-06-15 14:41:41 -04:00
didericis 464335082d Augment same-level faces before medial tire extraction 2026-06-15 14:35:13 -04:00
didericis 5829938ab0 Add branching medial tire decomposition example 2026-06-15 14:18:47 -04:00
didericis f537db9758 Draw random medial tire decompositions 2026-06-15 14:11:27 -04:00
didericis 6ef1dc710c Extract medial tire decomposition helpers 2026-06-15 14:05:17 -04:00
didericis b605931678 Treat each disjoint annular cycle as its own full medial tire graph
A tread's annular frontier can split into several disjoint cycles; each
is now recognised as a separate full medial tire graph instead of
disqualifying the whole tread.

- recognise() returns a list of (g, bij), one per annular cycle
  component; add annular_cycle_components() and _recognise_one(), and
  iterate components in iter_pieces().
- Key tires/results by (depth, component) throughout both experiment
  drivers: _label_treads chains each tire to a parent-depth down tooth
  sharing its apex; _cap_cut/_assemble_cut_graph/to_json/summary and the
  dual-cut collectors/draws follow suit.

Source vertex selection for the dual-cut experiment now deep-embeds a
random face and roots at the outer-cap vertex. The source-dual figure
labels the source-graph vertices, highlights the entry medial vertex,
and uses a cap-rooted concentric layout.

For seed 7 / face (14,15,19) this recognises treads 3 and 4 as two
tires each (3.0,3.1,4.0,4.1), so every dual face is now cut.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 12:01:36 -04:00
didericis 7554582056 Draw tread 0 (the source cap) in the dual-cut experiment
Add draw_cap_png and a --cap-png flag: render tread 0 as a wheel (source
hub, link-cycle rim, cap triangles filled, cap cut marked) from the
extract_tread roles, since tread 0 is skipped by tire recognition (a wheel
has no up teeth). Render funcD seed7's cap.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 11:06:49 -04:00
didericis 192d97a31d Regenerate funcD seed7 figures with the apex-cut model
Reflects cutting up-tooth apexes (except entry teeth): seed7 removes 17
source-dual edges, so its dual retains cycles (not a tree).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 10:52:28 -04:00
didericis 4e92dde36e Cut up-tooth apexes (except entry teeth) in the dual-cut experiment
Duplicate the apex medial vertex of every singleton up tooth across all
recognised treads -- except each tread's entry tooth, whose apex is left
intact -- in addition to the closing annular-vertex cuts.

For seed59 (source 5) this removes 19 = n-1 source-dual edges and the
remaining dual is a tree (verified for every source/entry choice). The
tree property holds exactly when n-1 distinct edges are cut; some graphs
(e.g. seed7, cutting 17) fall short and retain cycles.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 10:50:56 -04:00
didericis 0a3d7b2615 Draw each full medial tire cut from the dual-cut experiment
Add draw_tire_cuts_png (and a --tire-png flag): one panel per recognised
tread showing the annular cycle, up/down/bite teeth, walk-depth labels, and
cut slits, ported from medial_tire_cut_labelling.to_tikz. Render the
function-D (seed 7) graph's tire cuts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 10:37:42 -04:00
didericis 367b5adc71 Add source-dual cut experiment with chained entry points
Reads the chained medial tire cut off as a source-dual cut (planar dual of
G with the cut edges removed), as in seed59_min5_dual_cut_1.png, and counts
the missing dual edges around each dual face (vertex of G).

Four chained entry points, broad to narrow control:
  - random_dual_cut: random min-degree-5 maximal planar graph -> ...
  - dual_cut_random_source: random level source -> ...
  - dual_cut_random_entry: random root entry tooth -> ...
  - medial_tire_dual_cut: worker chaining the walk-depth labelling/cut.

Refactor _label_treads to accept an optional root_entry_edge (default
preserves the arbitrary-up-tooth behaviour) so the worker can pin the entry.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 10:33:15 -04:00
didericis 94d59ceaed Relabel medial comparison plots by walk depth 2026-06-15 02:11:27 -04:00
didericis 24af5485d2 Add medial cut comparison plots 2026-06-15 01:47:23 -04:00
didericis ea1ab0b986 Add source cap cut to medial tire figures 2026-06-15 01:11:04 -04:00
didericis c64c720e5a Draw the whole medial graph with all tire cuts
Add a --whole mode to draw_medial_tire_cut.py that renders the entire
medial graph M(G) (the assembled cut graph), on a Kamada-Kawai layout,
with the recognised tires highlighted (black annular vertices, blue/red
teeth carrying walk depths, larger red bite apex) and the rest of M(G)
in grey. Add the resulting figure (Figure 3) and a describing paragraph
to the paper for the n=20 seed-72 example, via an \input-ed .tikz file.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 00:07:00 -04:00
didericis 9d7cb7644e Draw a medial tire cut from a random n=20 graph
Add experiments/draw_medial_tire_cut.py, the paper-graphics companion
that imports run_experiment and emits a TikZ panel (walk-depth labels +
cut slits) per recognised tread via to_tikz. Add the resulting figure
(Example 3.2, Figure 2): the single recognised tread T_2 of the medial
tire decomposition of a random maximal planar graph on 20 vertices
(seed 72), an 8-cycle piece with a bite, labelled and cut.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 23:55:00 -04:00
didericis a22ca4b888 Add medial tire cut experiment and chaining section
New experiments/run_medial_tire_cut_experiment.py: generates a random
maximal planar graph (stacked seed + random diagonal flips), builds the
medial graph, takes the tire decomposition at a random vertex level
source, walk-depth labels and cuts each full medial tire graph chained
down the tire tree, and assembles one final cut graph of M(G) with a
global label map (data only; graphics go in a separate script).

Fix label_and_cut: the root face is None, which collided with the
next(..., None) sentinel, leaving teeth unlabelled when the entry up
tooth lay inside a bite gap; use a distinct sentinel so the ascent to
the root face runs.

Add a "Chaining across the tire tree" section to the paper, clarifying
that the candidate parent down teeth are the boundary (singleton) down
teeth only -- bite teeth are interior to the parent and shared with no
child, so a lower-walk bite is skipped.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 23:46:49 -04:00
didericis b4ddc7da8b Add walk-depth labelling/cut script and worked example
New experiments/medial_tire_cut_labelling.py: takes a full medial tire
graph and an entry up tooth and runs the walk-depth labelling-and-cut
procedure, reusing the full medial tire generator's model and emitting
TikZ. Add a generator-produced 8-tooth example to the paper (Figure 1,
Example 2.3) showing the labelling and the two cuts, plus a remark
fixing the cut's closing tooth for descended faces.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 22:00:52 -04:00
didericis 291f7e98c7 Add Medial Tire Cuts paper with walk-depth labelling and cut
New paper "Medial Tire Cuts" citing the medial tire decompositions
paper. States the goal of decomposing the medial graph into a tree of
3-faces, and gives the walk-depth labelling-and-cut procedure for a
single full medial tire graph: a cut duplicates the annular vertex
where a face's tooth traversal closes (planar unzip), reducing the
inner faces to teeth.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 21:39:03 -04:00
didericis b2439e4bac Walkthrough: show only the medial graph in panels C and D
Drop the faint base-graph (G') edges and the dotted restored base edge from the
medial panels, leaving just the medial graph (medial vertices at edge midpoints,
medial edges, colours, halos, and the restored-diagonal medial square). Panels A
and B still show the triangulation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 00:20:25 -04:00
didericis 20e2cc94b4 Fix walkthrough figure to use verified planar embeddings
The walkthrough previously used a concentric layout whose outer-triangle->ring
spokes can cross -- not a valid plane embedding. Rebuild draw_walkthrough.py on
networkx planar_layout with an explicit crossing check: G, G', and the medial
M(G') drawn at edge midpoints are each verified crossing-free before rendering.
G' is embedded once and reused for panels B/C/D; G reuses it when still planar.

The medial-at-midpoints drawing is planar except for the medial triangle of the
geometric outer face (its midpoint-chords would cut across the unbounded region),
so those three edges are detected via the convex hull and omitted; the remainder
is verified crossing-free. Note updated to describe the embedding.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 00:16:03 -04:00