Positions list colours in nondecreasing order.
Equations
- Hex.GraphIso.Nauty.labelColorSorted G lab = (List.range n).all fun (i : Nat) => decide (i + 1 = n) || decide (Hex.GraphIso.Nauty.labColor G lab i ≤ Hex.GraphIso.Nauty.labColor G lab (i + 1))
Instances For
Validate a certificate together with the claimed canonical labelling: the replay must accept the key, and the labelling's leaf rows must be the key's rows. Returns the canonical form and label.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A successful checkCanon identifies the claimed key with the
spec key, exhibits the form as a relabelling, and shows the form
isomorphic to the input.
Produce a checked CanonResult: run the untrusted key search and
validate its candidate together with the transcribed search's
canonical labelling in ONE trusted checkCanon replay (which contains
the checkKey certificate replay: validating through certifyKey?
first would replay the certificate twice). The transcription supplies
nauty's exact label tie-breaking. Every ingredient stays untrusted
until the single replay accepts.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A successful checkCanon on the transcribed search's own
labelling forces the transcription to succeed with the same result:
both build the CanonResult from (runColored G).canonlab by the
same checked construction.
Whenever the single trusted replay accepts (certifyCanon?
succeeds), the fast transcription agrees with it exactly.
Executable disequality of two canonical keys: the lexicographic comparison finds the first differing entry.
Equations
- Hex.GraphIso.Nauty.checkDiff B1 B2 = (Hex.GraphIso.Nauty.keyCmp B1 B2 != Ordering.eq)
Instances For
Distinct spec keys separate isomorphism classes.
Two checked certificates with differing keys prove non-isomorphism.
Two replayed key certificates with differing keys prove
non-isomorphism: the Boolean form of not_isomorphic_of_certs. The
kernel computes two checkKey replays and one key comparison, with
no achieving labelling required.
Everything a successful checkCanon establishes, with the
label's entries equal to those of the claimed array.
The colours of a checked canonical form are nondecreasing along the vertex order.
The colour value at each vertex, as a plain list.
Equations
Instances For
Two checked canonical forms with the same key and the same colour class sizes are equal.
Executable equality of colour class sizes.
Equations
- Hex.GraphIso.Nauty.cellSizesCheck G H = (List.range k).all fun (c : Nat) => (Hex.GraphIso.Nauty.colorClass G c).length == (Hex.GraphIso.Nauty.colorClass H c).length
Instances For
Two checked certificates with the same key and matching colour class sizes prove isomorphism.