theorem
Hex.GraphIso.Nauty.cheapautom_go_cells
{ptn : Array Nat}
{level nn : Nat}
(hps : ptn.size = nn)
(hend : ptn[ptn.size - 1]! ≤ level)
(fuel i k nnt : Nat)
:
cheapautom's scan aligned with the partition's cell list: the
first component counts down once per cell and the second counts the
nontrivial cells.
theorem
Hex.GraphIso.Nauty.size_le_three_of_defect_le
{ptn : Array Nat}
{level nn : Nat}
(hps : ptn.size = nn)
(hend : ptn[ptn.size - 1]! ≤ level)
(hguard :
nn - (cells ptn level nn).length ≤ List.countP (fun (p : Nat × Nat) => decide (p.fst < p.snd)) (cells ptn level nn) + 1)
(q : Nat × Nat)
:
In the first guard branch every cell has size at most three.
theorem
Hex.GraphIso.Nauty.triple_uniq_of_defect_le
{ptn : Array Nat}
{level nn : Nat}
(hps : ptn.size = nn)
(hend : ptn[ptn.size - 1]! ≤ level)
(hguard :
nn - (cells ptn level nn).length ≤ List.countP (fun (p : Nat × Nat) => decide (p.fst < p.snd)) (cells ptn level nn) + 1)
(q : Nat × Nat)
:
In the first guard branch any two size-three cells coincide.
theorem
Hex.GraphIso.Nauty.cells_shape_of_defect_le
{ptn : Array Nat}
{level nn : Nat}
(hps : ptn.size = nn)
(hend : ptn[ptn.size - 1]! ≤ level)
(hguard :
nn - (cells ptn level nn).length ≤ List.countP (fun (p : Nat × Nat) => decide (p.fst < p.snd)) (cells ptn level nn) + 1)
(q : Nat × Nat)
:
The first-branch shape: every cell is a singleton, a pair, or the unique triple.