With no node budget, the candidate producer always returns a candidate.
theorem
Hex.GraphIso.Nauty.produceCand_key
{n k : Nat}
{G : Colored n k}
{budget : Option Nat}
{cert : CertNode}
{B : Key n}
(h : produceCand G budget = some (cert, B))
:
The key of every produced candidate is read off the traced run: the recorded code chain with the sentinel, and the spec rows of the traced canonical labelling.
theorem
Hex.GraphIso.Nauty.certifyCanon?_isSome_of_checkKey
{n k : Nat}
(G : Colored n k)
(h : ∀ (cert : CertNode) (B : Key n), produceCand G none = some (cert, B) → checkKey G cert B = true)
:
The reduction of certifyCanon? totality to the certificate
replay: if the produced certificate replays against the traced key,
the transcription-side results discharge every other conjunct of the
single trusted validation, so the certified canonicalization
succeeds.