theorem
Hex.GraphIso.Nauty.Sparse.CountSort.finish_queue
{n : Nat}
(level first last : Nat)
(distance : Bool)
(s : RefineSt n)
(w1 v2 w2 v3 : Nat)
(hs : s.ptn.size = n)
(hb : last ≤ n)
(hc : IsCell s.ptn level first (last - first))
(hm : Minima.Bounded s.lab s.hits first last v2 v3 last w1 w2 (n + 2))
(hq : CellQueue s.ptn level s.active s.queue)
:
Fragment installation preserves the ordered active queue, including the replacement of the largest fragment.
theorem
Hex.GraphIso.Nauty.Sparse.splitCounts_queue
{n : Nat}
(level first : Nat)
(distance : Bool)
(s : RefineSt n)
(hl : s.lab.size = n)
(hs : s.ptn.size = n)
(hb : s.cellend[first]! < n)
(hc : IsCell s.ptn level first (s.cellend[first]! + 1 - first))
(hk : ∀ (q : Nat), first ≤ q → q ≤ s.cellend[first]! → s.hits[s.lab[q]!]! < n + 2)
(hq : CellQueue s.ptn level s.active s.queue)
:
have t := splitCounts level first distance s;
CellQueue t.ptn level t.active t.queue
Count splitting preserves the exact active queue.