theorem
Hex.GraphIso.Nauty.Sparse.Target.ordered
(ptn : Array Nat)
(level n : Nat)
:
List.Pairwise (fun (x1 x2 : Nat) => x1 < x2) (nontrivial (cells ptn level n))
The nontrivial-cell list is strictly increasing, so its order also fixes ties.
theorem
Hex.GraphIso.Nauty.Sparse.Target.nodup
(ptn : Array Nat)
(level n : Nat)
:
(nontrivial (cells ptn level n)).Nodup
theorem
Hex.GraphIso.Nauty.Sparse.Target.index_mem
{lab ptn starts ends : Array Nat}
{n level i : Nat}
(h : Index.Valid n lab ptn level starts ends)
(hs : ptn.size = n)
(hend : ptn[n - 1]! ≤ level)
(hi : i < n)
(hne : starts[lab[i]!]! ≠ n)
:
Every nonsentinel vertex index is an enumerated nontrivial cell start.
theorem
Hex.GraphIso.Nauty.Sparse.Target.vertex_index
{lab ptn starts ends : Array Nat}
{n level : Nat}
(h : Index.Valid n lab ptn level starts ends)
(hs : ptn.size = n)
(hend : ptn[n - 1]! ≤ level)
(l : Label n)
(hl : Label.ofArray? n lab = some l)
(v : Fin n)
:
A checked labelling makes every native vertex lookup a cell start or the singleton sentinel; the count loops need no stronger scratch hypothesis.