k1 ≤ k2 in the leaf-key order.
Equations
- Hex.GraphIso.Nauty.keyLe k1 k2 = (Hex.GraphIso.Nauty.keyCmp k1 k2 ≠ Ordering.gt)
Instances For
When the first key compares below the second, the second is the maximum.
If γ fixes the adjacency rows and carries the cells of lab₂ to
the cells of lab₁, the two subtrees produce the same key.
One node of a canonical certificate: the shape of the pruned
search tree the producer visited. Prune variants justify discarding a
subtree; node lists one entry per position of the target cell.
- leaf : CertNode
The replayed state is discrete; compare its leaf key with the claimed best.
- codePrune : CertNode
The subtree's refinement code falls below the best code at this depth.
- autom
(o : Nat)
(γ : Array Nat)
: CertNode
γmaps this subtree onto the earlier sibling at offseto. - node
(children : List CertNode)
: CertNode
Recurse into every position of the target cell.
Instances For
The number of proof-rule records in a certificate tree.
Equations
Instances For
The total record count of a list of certificate subtrees.
Equations
Instances For
Membership of a permutation array in the validated-generator list, by explicit recursion.
Equations
- Hex.GraphIso.Nauty.containsGamma [] γ = false
- Hex.GraphIso.Nauty.containsGamma (g :: rest) γ = (Hex.GraphIso.Nauty.gammaEq g γ || Hex.GraphIso.Nauty.containsGamma rest γ)
Instances For
The automorphism arrays of a certificate, deduplicated, fuel bounded by the tree depth.
Equations
- One or more equations did not get rendered due to their size.
- Hex.GraphIso.Nauty.certGammas 0 x✝¹ x✝ = x✝
- Hex.GraphIso.Nauty.certGammas n.succ Hex.GraphIso.Nauty.CertNode.leaf x✝ = x✝
- Hex.GraphIso.Nauty.certGammas n.succ Hex.GraphIso.Nauty.CertNode.codePrune x✝ = x✝
- Hex.GraphIso.Nauty.certGammas n.succ (Hex.GraphIso.Nauty.CertNode.autom o γ) x✝ = if Hex.GraphIso.Nauty.containsGamma x✝ γ = true then x✝ else γ :: x✝
Instances For
Validate each distinct automorphism of a certificate once: the
replay then looks records up in this list instead of re-validating
the same generator at every .autom record.
Equations
- Hex.GraphIso.Nauty.validGammas g cert = List.filter (fun (γ : Array Nat) => Hex.GraphIso.Nauty.checkAutom g γ) (Hex.GraphIso.Nauty.certGammas (n + 2) cert [])
Instances For
Replay one node of the certificate. ⟨bcodes, brows⟩ is the
claimed best key's suffix at this depth. Returns none if the replay
fails, otherwise some achieved where achieved records whether this
subtree attains the claimed best. Success certifies that every leaf
key of the subtree is ≤ the claimed suffix.
One structural recursion (fuel-first, the child fold written inline
with none absorbing, the per-node refine/breakout results bound
once with let for shared reduction), so goals about certificates
reduce in any module's kernel. checkChildren below spells the same
child fold as a separate recursion, and checkNode_children_eq
relates the two.
Equations
- One or more equations did not get rendered due to their size.
- Hex.GraphIso.Nauty.checkNode ctx tcLevel brows vgens 0 x✝⁶ x✝⁵ x✝⁴ x✝³ x✝² x✝¹ x✝ = none
- Hex.GraphIso.Nauty.checkNode ctx tcLevel brows vgens fuel.succ x✝⁵ x✝⁴ x✝³ x✝² x✝¹ x✝ [] = none
- Hex.GraphIso.Nauty.checkNode ctx tcLevel brows vgens fuel.succ x✝⁴ x✝³ x✝² x✝¹ x✝ (Hex.GraphIso.Nauty.CertNode.autom o γ) (bc :: brest) = none
Instances For
The child fold of checkNode as its own recursion over the child
list, from offset o on: the spelling the soundness induction
consumes.
Equations
Instances For
The inline child fold of checkNode agrees with the
checkChildren spelling.
The state after individualizing one target-cell vertex is again well formed at the next level.
A subtree whose refinement code falls below the best code at its depth is dominated.
The initial coloured-partition state is well formed.