theorem
Hex.GraphIso.Nauty.Sparse.Replay.sibling_of_check
{check : Nat → CertNode → Option Bool}
{witness : Nat → Nat → Array Nat → Bool}
{seen : Array Bool}
{o : Nat}
{c : CertNode}
{a : Bool}
(hne : ∀ (earlier : Nat) (raw : Array Nat), c ≠ CertNode.autom earlier raw)
(hs : seen.size = o)
(h : check o c = some a)
:
An accepted ordinary node enters the sibling scan with the same flag.
def
Hex.GraphIso.Nauty.Sparse.Replay.emit
(choose : Nat → Option (Nat × Array Nat))
(witness : Nat → Nat → Array Nat → Bool)
(fallback : Nat → CertNode)
(o : Nat)
:
Emit a checked earlier-sibling reference when available. The fallback is a function so compiled execution never expands a pruned subtree eagerly.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
Hex.GraphIso.Nauty.Sparse.Replay.emit_replays
{choose : Nat → Option (Nat × Array Nat)}
{witness : Nat → Nat → Array Nat → Bool}
{fallback : Nat → CertNode}
{check : Nat → CertNode → Option Bool}
{seen : Array Bool}
{o : Nat}
(hs : seen.size = o)
(h : ∃ (a : Bool), sibling check witness seen (fallback o) = some a)
:
Emission cannot invalidate a successful fallback: a reference is emitted only after exactly the same check that the sibling scan will replay.