Documentation

HexGraphIso.Nauty.Sparse.PassEquiv

theorem Hex.GraphIso.Nauty.Sparse.Binary.Pass.equiv {n level stamp : Nat} {xs : List Nat} {s a : RefineSt n} (f : Nat → Nat) (h : Pass level stamp xs s a) {t b : RefineSt n} {otherStamp : Nat} :
Pass level otherStamp xs t b → s.lab.toList.Perm (List.range n) → t.lab.toList.Perm (List.range n) → s.ptn.size = n → t.ptn = s.ptn → Index.Valid n s.lab s.ptn level s.cellstart s.cellend → Index.Valid n t.lab t.ptn level t.cellstart t.cellend → cellsPerm s.ptn level t.lab (Array.map f s.lab) → (∀ (v : Nat), v < n → (s.vmarks[v]! == stamp) = (t.vmarks[f v]! == otherStamp)) → CountTrace.control s = CountTrace.control t → s.numcells = t.numcells → a.ptn = b.ptn ∧ cellsPerm a.ptn level b.lab (Array.map f a.lab) ∧ CountTrace.control a = CountTrace.control b ∧ a.numcells = b.numcells

Paired touched-cell traces preserve ordered partition, cell contents, hash, active set, ordered queue and exact cell count. Their caches and mark generations may differ.