The simulation-relation clause: lab is cell-content-reachable
from the initial labelling relative to the initial partition. Every
labelling the search visits satisfies this (individualization and
refinement permute within the initial colour classes).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The initial labelling reaches itself.
A reached labelling of full size is a permutation of [0, n):
label well-formedness.
A reached labelling passes labelColorSorted: the transcription
output's colours are nondecreasing, the certifyCanon?_isSome
residual. The colour at each position matches sortedColorSeq
(achieved_position_colors), which is sorted
(pairwise_sortedColorSeq).
refine preserves CellsReach: it reorders labels within cells of
its own (finer) partition, and the initial boundaries persist, so
cell-content equivalence transfers to the initial partition.
Individualization rotates the target vertex to the front of its cell, a permutation confined to that cell, so it preserves cell-content equivalence on the current partition.
breakout preserves CellsReach: individualization permutes within
one cell of the current partition, which refines the initial one, so
cell-content equivalence coarsens and transfers. The second
operation-level preservation lemma.
The value window's multiplicities cover the whole cell.
A step that touches neither the partition, the count, nor the labelling size preserves the invariant.
One paired write: level at an open in-range position together
with one numcells increment.
The window scan's paired writes: each nonempty group except the final one writes one fresh boundary, and each nonempty group except the first counts one new cell, so over a whole cell the two balance.
The remaining cells of a pass: ordered left to right, in range, with open interiors in the current state.
Equations
- One or more equations did not get rendered due to their size.
- Hex.GraphIso.Nauty.CellsFresh level nn st [] = True
Instances For
refine keeps every closed position's exact value.
The executable target cell of a live state is an in-range nontrivial cell start, whatever the hint.
The executable maketargetcell of a live state: an open
nontrivial cell with its exact extent and contents.
The initial partition's boundary count is its cell count.
The per-node invariant of the transcribed search at level with
claimed cell count numcells.
- reach : CellsReach G st.lab
Instances For
What a quartet call leaves behind: sizes kept, reachability kept,
the partition preserved exactly wherever it is (or becomes) closed at
B, the labelling permuted only within cells of the entry partition
at lev, and canonlab kept or installed reached.
- reach : CellsReach G st'.lab
Instances For
A stored first leaf keeps the entry of a singleton cell, provided the incoming stored leaf already has that entry.
A stored canonical leaf keeps the entry of a singleton cell, provided the incoming stored leaf already has that entry.
The invariant survives an iteration whose net effect preserves
the closed positions, provided the final partition satisfies the
level dichotomy (which recover restores unconditionally).
Individualizing a target-cell vertex yields the child invariant one level down with one more cell.
The effect of individualization followed by a child call, in the parent loop's frame.
The invariant after refine, for any state carrying the refined
labelling and partition.
Compose the refine step with the rest of a node's work.