Documentation

HexGraphIso.Nauty.Cert.CertReplay

theorem Hex.GraphIso.Nauty.keyCmp_codes_nil_gt {n c : Nat} {cs : List Nat} {r br : List (VSet n)} :
keyCmp { codes := c :: cs, rows := r } { codes := [], rows := br } = Ordering.gt

A key with a nonempty code list exceeds any key with an empty one.

theorem Hex.GraphIso.Nauty.keysMax_lt {n : Nat} {b k : Key n} {l : List (Key n)} (hk : keyCmp k b = Ordering.lt) (hl : ∀ (y : Key n), y lkeyCmp y b = Ordering.lt) :

The maximum of strictly dominated keys is strictly dominated.

theorem Hex.GraphIso.Nauty.automsOkList_of_forall {P : Array NatProp} {cs : List CertNode} :
(∀ (c : CertNode), c csAutomsOk P c)AutomsOkList P cs
theorem Hex.GraphIso.Nauty.automsOk_mono {P Q : Array NatProp} (hPQ : ∀ (γ : Array Nat), P γQ γ) (c : CertNode) :
AutomsOk P cAutomsOk Q c
theorem Hex.GraphIso.Nauty.automsOkList_mono {P Q : Array NatProp} (hPQ : ∀ (γ : Array Nat), P γQ γ) (cs : List CertNode) :
theorem Hex.GraphIso.Nauty.depthList_le {cs : List CertNode} {d : Nat} (h : ∀ (c : CertNode), c csc.depth d) :
theorem Hex.GraphIso.Nauty.certifyNodeAutom_depth {n : Nat} (ctx : Ctx n) (tcLevel fuel level : Nat) (lab ptn : Array Nat) (active : VSet n) (numcells : Nat) (bcodes : List Nat) (st : AutState) :
(certifyNodeAutom ctx tcLevel fuel level lab ptn active numcells bcodes st).fst.depth fuel + 1

The walk emits trees no deeper than its fuel allows.

theorem Hex.GraphIso.Nauty.automsOk_validGammas {nn : Nat} {g : Array (VSet nn)} {cert : CertNode} (hd : cert.depth nn + 2) (hv : AutomsOk (fun (γ : Array Nat) => checkAutom g γ = true) cert) :
AutomsOk (fun (γ : Array Nat) => containsGamma (validGammas g cert) γ = true) cert

A certificate whose records all pass checkAutom has every record's generator in its own validated store.

theorem Hex.GraphIso.Nauty.certifyNode_replays {n : Nat} {ctx : Ctx n} (hgsz : ctx.g.size = n) {vgens : List (Array Nat)} (hv : ∀ (γ : Array Nat), γ vgenscheckAutom ctx.g γ = true) (tcLevel : Nat) (brows : List (VSet n)) (fuel level : Nat) (lab ptn : Array Nat) (active : VSet n) (numcells : Nat) (bcodes : List Nat) (st : AutState) :
st.budget = nonest.exhausted = falseNodeOk n level lab ptn activelevel + fuel n + 1n + 1 level + fuellevel bcount ptn level nkeyLe (specNode ctx tcLevel fuel level lab ptn active numcells) { codes := bcodes, rows := brows }AutomsOk (fun (γ : Array Nat) => containsGamma vgens γ = true) (certifyNodeAutom ctx tcLevel fuel level lab ptn active numcells bcodes st).fst (a : Bool), checkNode ctx tcLevel brows vgens fuel level lab ptn active numcells (certifyNodeAutom ctx tcLevel fuel level lab ptn active numcells bcodes st).fst bcodes = some a (a = falsekeyCmp (specNode ctx tcLevel fuel level lab ptn active numcells) { codes := bcodes, rows := brows } = Ordering.lt)

A dominated walk's certificate replays: checkNode accepts it, and a some false verdict forces the subtree strictly below the claimed suffix.

def Hex.GraphIso.Nauty.tracedKey {n k : Nat} (G : Colored n k) :
Key n

The traced key of the candidate producer, as produceCand claims it.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    theorem Hex.GraphIso.Nauty.produceCand_checkKey {n k : Nat} {G : Colored n k} {cert : CertNode} {B : Key n} (hp : produceCand G none = some (cert, B)) (hval : AutomsOk (fun (γ : Array Nat) => checkAutom (rowsOf G) γ = true) cert) (hdom : canonSpecKey G = B) :
    checkKey G cert B = true

    The produced certificate replays: under domination (the traced key is the spec key) and store validity (every record's generator is a checked automorphism), checkKey accepts the produced pair.

    theorem Hex.GraphIso.Nauty.certifyCanon?_isSome_of_dominated {n k : Nat} (G : Colored n k) (hdom : canonSpecKey G = tracedKey G) (hval : ∀ (cert : CertNode) (B : Key n), produceCand G none = some (cert, B)AutomsOk (fun (γ : Array Nat) => checkAutom (rowsOf G) γ = true) cert) :

    Two hypotheses suffice for certifyCanon? totality: domination (the traced key is the spec key) and store validity (every produced record's generator is a checked automorphism).