inductive
Hex.GraphIso.Nauty.Sparse.CountTrace.Tail
{n : Nat}
(distance : Bool)
(lab hits : Array Nat)
(first last : Nat)
:
A derivation of the actual tail scan's control transitions. Each step consumes one maximal constant-count run; completion includes replacement. This relation does not run another refinement algorithm.
- done {n : Nat} {distance : Bool} {lab hits : Array Nat} {first last k : Nat} {s : Control n} {pos : Option Nat} {big : Nat} (hk : last ≤ k + 1) : Tail distance lab hits first last k s pos big (s.finish distance first pos)
- step {n : Nat} {distance : Bool} {lab hits : Array Nat} {first last k b : Nat} {out s : Control n} {pos : Option Nat} {big : Nat} (hk : k + 1 < last) (hr : Index.Run lab hits (k + 1) (last - 1) (k + 1) b) (ht : Tail distance lab hits first last b (s.advance distance k hits[lab[k + 1]!]!) ((s.advance distance k hits[lab[k + 1]!]!).choose pos big (b - (k + 1) + 1)).fst ((s.advance distance k hits[lab[k + 1]!]!).choose pos big (b - (k + 1) + 1)).snd out) : Tail distance lab hits first last k s pos big out
Instances For
theorem
Hex.GraphIso.Nauty.Sparse.CountTrace.Tail.deterministic
{distance : Bool}
{lab hits : Array Nat}
{first last k n✝ : Nat}
{s : Control n✝}
{pos : Option Nat}
{big : Nat}
{out other : Control n✝}
(h : Tail distance lab hits first last k s pos big out)
(h' : Tail distance lab hits first last k s pos big other)
:
A fixed count sequence determines all tail hashes, queue entries and the saved-largest tie rule uniquely.
theorem
Hex.GraphIso.Nauty.Sparse.CountTrace.Tail.congr
{distance : Bool}
{lab hits : Array Nat}
{first last k n✝ : Nat}
{s : Control n✝}
{pos : Option Nat}
{big : Nat}
{out : Control n✝}
{keys vertices : Array Nat}
(h : Tail distance lab hits first last k s pos big out)
(hk : ∀ (q : Nat), k + 1 ≤ q → q < last → hits[lab[q]!]! = keys[vertices[q]!]!)
:
Tail distance vertices keys first last k s pos big out
Equal count sequences transport the complete tail trace, without requiring literal equality of the vertex arrays.