The two shapes a passing cheapautom guard admits: the
first-branch shape, or a defect of at most four. Both yield flip data
at every cell, and both descend through individualization, which is
why the invariant carries the disjunction rather than either
disjunct. A defect-four node need not have the first-branch shape:
the four-vertex empty graph's root is a single cell of size four.
Equations
- Hex.GraphIso.Nauty.NodeShape n level ptn = (Hex.GraphIso.Nauty.SmallShape n level ptn ∨ n - (Hex.GraphIso.Nauty.cells ptn level n).length ≤ 4)
Instances For
Every cell of the child partition sits inside a cell of the split partition: refinement only adds boundaries.
The first-branch shape descends to the child: sizes only shrink under containment, and a child triple fills the unique parent triple's window exactly.
The node shape descends: the first-branch shape by containment, and a defect of at most four because individualization splits a cell while the vertex count stays fixed, so the cell count strictly grows.
Individualization and refinement preserve the refined-state invariants and strictly increase the number of cells. No small-cell shape is needed.
The node invariant descends through one subtree step.
A descent recording its target-and-offset path.
- refl {n : Nat} {ctx : Ctx n} (level : Nat) (st : RefineSt n) : DescPath ctx level st [] level st
- step {n : Nat} {ctx : Ctx n} {level level' : Nat} {st st' : RefineSt n} {path : List (Nat × Nat)} (tc e o : Nat) (hlvl : level < n) (hcell : (tc, e) ∈ cells st.ptn level n) (hne : tc < e) (ho : o ≤ e - tc) (htail : DescPath ctx (level + 1) (childSt ctx level st tc st.lab[tc + o]!) path level' st') : DescPath ctx level st ((tc, o) :: path) level' st'
Instances For
The path-preserving bisimulation: a descent below one state mirrors below any renamed-equivalent state along the same target cells.
The path-preserving leaf collapse: a descent to a discrete state mirrors along the same target cells with equal leaf rows and the same final partition.
The path-preserving single-deviation door: a self-symmetry of the node carrying one child's individualized vertex to another's mirrors any discrete descent below the first child along the same target cells.
Any two distinct members of a cell are related by an automorphism that preserves every cell of the node's partition.
Two discrete descents below a cheapautom node with the same target-cell path have equal final levels and leaf rows.
The search's child loops perform breakout at the parent and then
the child node's refine on the returned labelling, split partition,
and singleton active set. That composite is childSt of the parent's
post-refine state.
A surviving target-cell vertex is a window member: any vertex of
the cell set maketargetcell returns sits at some offset of the
target cell, in the shape a DescPath step consumes.
A passing guard gives the first-branch shape or the exotic defect-at-most-four configuration: a cell of size four or five, or two triples. The defect-four flip analogues discharge the second disjunct.
The node invariant at a guard-passing node. The guard's two branches are exactly the invariant's two shapes, so nothing is left over: a defect-four node keeps its own shape rather than being forced into the first-branch one, which it need not have.
The tie's central consequence: two discrete same-target descents
below a first-branch node end with equal leaf rows. The run-level
bookkeeping (gcaFirst, eqlevFirst, firsttc) supplies the two
descents with the same target path; this theorem turns them into the
rows equality the admission exits consume.
The code-1 admission is a checked automorphism: the scatter
of the second descent's leaf labelling over the first's passes
checkAutom, with no isautom scan.