theorem
Hex.GraphIso.Nauty.Sparse.Compact.hit_bound
{before : Array Nat}
{p : Nat → Bool}
{first last : Nat}
{seen : List Nat}
{lab hit : Array Nat}
{cut n : Nat}
(h : Compact before p first last seen lab hit cut)
(hv : ∀ (v : Nat), v ∈ seen → v < n)
(v : Nat)
:
The hit buffer inherits the original labelling's vertex bounds.
theorem
Hex.GraphIso.Nauty.Sparse.Compact.scan_slice
{before : Array Nat}
{p : Nat → Bool}
{first last : Nat}
{lab hit : Array Nat}
{cut : Nat}
(h :
Compact before p first (first + (last - first))
(List.map (fun (q : Nat) => before[q]!) (List.range' first (last - first))) lab hit cut)
(hf : first ≤ last)
:
A completed scan can be read directly as the original cell slice.
theorem
Hex.GraphIso.Nauty.Sparse.Compact.preserve
{before : Array Nat}
{p : Nat → Bool}
{first last : Nat}
{seen : List Nat}
{lab hit : Array Nat}
{cut : Nat}
{ptn : Array Nat}
{level a len : Nat}
(h : Compact before p first last seen lab hit cut)
(hc : IsCell ptn level first (last - first))
(ha : IsCell ptn level a len)
(hne : a ≠ first)
:
Compaction and reinsertion preserve every other cell, independently of which singleton sentinel or activation branch follows the scan.