A canonical key with bitset rows: the literal reading of
Nauty.Key that the kernel replay produces and compares.
The refinement codes along the path, ending with the sentinel.
The leaf's
g^labrows, as bitsets, in nauty's row order.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
Instances For
The packed key of a literal whose rows are bitsets over n
vertices.
Equations
- Hex.GraphIso.Kernel.Key.toKey n K = { codes := K.codes, rows := List.map Hex.GraphIso.Nauty.VSet.ofNat K.rows }
Instances For
The list view of a refine state.
Equations
Instances For
Equations
- Hex.GraphIso.Nauty.cellEndGoL ptn level 0 x✝ = x✝
- Hex.GraphIso.Nauty.cellEndGoL ptn level fuel.succ x✝ = if Hex.GraphIso.atD ptn x✝ 0 > level then Hex.GraphIso.Nauty.cellEndGoL ptn level fuel (x✝ + 1) else x✝
Instances For
Equations
- Hex.GraphIso.Nauty.cellEndL ptn level i = Hex.GraphIso.Nauty.cellEndGoL ptn level (ptn.length - i) i
Instances For
Equations
- Hex.GraphIso.Nauty.cellsL ptn level nn = Hex.GraphIso.Nauty.cellsGoL ptn level nn nn 0
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Hex.GraphIso.Nauty.refineTrivialGoL nn level gRow [] x✝ = x✝
- Hex.GraphIso.Nauty.refineTrivialGoL nn level gRow ((cell1, cell2) :: rest) x✝ = Hex.GraphIso.Nauty.refineTrivialGoL nn level gRow rest (Hex.GraphIso.Nauty.trivialCellL nn level gRow cell1 cell2 x✝)
Instances For
Equations
- Hex.GraphIso.Nauty.worksetOfL nn lab lo hi = List.foldl (fun (w o : Nat) => Hex.GraphIso.Nauty.NatSet.insert nn w (Hex.GraphIso.atD lab (lo + o) 0)) 0 (List.range (hi + 1 - lo))
Instances For
Equations
- Hex.GraphIso.Nauty.writeSegmentL lab cell1 [] = lab
- Hex.GraphIso.Nauty.writeSegmentL lab cell1 (x_1 :: rest) = Hex.GraphIso.Nauty.writeSegmentL (lab.set cell1 x_1) (cell1 + 1) rest
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
pickSplit over a bitset active set.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Hex.GraphIso.Nauty.refineLoopL ctx level 0 x✝ = x✝
Instances For
Equations
- Hex.GraphIso.Nauty.breakoutL nn lab ptn level tc tv = (Hex.GraphIso.Nauty.breakoutGoL tv (lab.length + 1) lab tc tv, ptn.set tc level, Hex.GraphIso.Nauty.NatSet.insert nn 0 tc)
Instances For
Equations
- Hex.GraphIso.Nauty.segNL lab lo len = List.map (fun (o : Nat) => Hex.GraphIso.atD lab (lo + o) 0) (List.range len)
Instances For
Equations
- Hex.GraphIso.Nauty.invPermGoL x✝¹ [] x✝ = x✝
- Hex.GraphIso.Nauty.invPermGoL x✝¹ (i :: rest) x✝ = Hex.GraphIso.Nauty.invPermGoL x✝¹ rest (x✝.set (Hex.GraphIso.atD x✝¹ i 0) i)
Instances For
Equations
- Hex.GraphIso.Nauty.invPermL lab = Hex.GraphIso.Nauty.invPermGoL lab (List.range lab.length) (List.replicate lab.length 0)
Instances For
Equations
- Hex.GraphIso.Nauty.permsetL s perm nn = Hex.GraphIso.Nauty.NatSet.image nn (fun (v : Nat) => Hex.GraphIso.atD perm v 0) s
Instances For
The literal reading of a packed key.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
checkDiff on literal keys.
Equations
- Hex.GraphIso.Nauty.checkDiffL K1 K2 = (Hex.GraphIso.Nauty.keyCmpL K1 K2 != Ordering.eq)
Instances For
validGammas with bitset rows.
Equations
- Hex.GraphIso.Nauty.validGammasL g nn cert = List.filter (fun (γ : Array Nat) => Hex.GraphIso.Nauty.checkAutomL g nn γ) (Hex.GraphIso.Nauty.certGammas (nn + 2) cert [])
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Hex.GraphIso.Nauty.checkNodeL ctx tcLevel brows vgens 0 x✝⁶ x✝⁵ x✝⁴ x✝³ x✝² x✝¹ x✝ = none
- Hex.GraphIso.Nauty.checkNodeL ctx tcLevel brows vgens fuel.succ x✝⁵ x✝⁴ x✝³ x✝² x✝¹ x✝ [] = none
- Hex.GraphIso.Nauty.checkNodeL ctx tcLevel brows vgens fuel.succ x✝⁴ x✝³ x✝² x✝¹ x✝ (Hex.GraphIso.Nauty.CertNode.autom o γ) (x_9 :: rest) = none
Instances For
The replay context over packed rows: w/m are the field width
and mask for positions and vertices, g the rows packed with width
n, and rm the row mask.
- n : Nat
The number of vertices.
- w : Nat
The field width of packed position and vertex vectors.
- m : Nat
2 ^ w - 1. - g : Nat
The adjacency rows, row
vin bits[n * v, n * (v + 1)). - rm : Nat
2 ^ n - 1.
Instances For
The correspondence between a packed context and a list context.
Instances For
Read a packed position or vertex vector.
Equations
- Hex.GraphIso.Nauty.lget ctx a i = Hex.GraphIso.Nauty.pget ctx.w ctx.m a i
Instances For
Write a packed position or vertex vector.
Equations
- Hex.GraphIso.Nauty.lset ctx a i v = Hex.GraphIso.Nauty.pset ctx.w ctx.m ctx.n a i v
Instances For
The row of vertex v.
Equations
- Hex.GraphIso.Nauty.rowP ctx v = Hex.GraphIso.Nauty.pget ctx.n ctx.rm ctx.g v
Instances For
The correspondence between packed and list refine states.
Instances For
RepSt from the two packed correspondences and the scalar field
equalities in one conjunction.
multOf, raw.
Equations
- Hex.GraphIso.Nauty.multOfK counts v = Hex.GraphIso.Nauty.multOfK.go v counts 0
Instances For
Equations
- Hex.GraphIso.Nauty.multOfK.go v [] a✝ = a✝
- Hex.GraphIso.Nauty.multOfK.go v (c :: rest) a✝ = Hex.GraphIso.Nauty.multOfK.go v rest (bif c.beq v then a✝.add 1 else a✝)
Instances For
pickSplit, raw.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Hex.GraphIso.Nauty.cellEndP ctx ptn level i = Hex.GraphIso.Nauty.cellEndGoP ctx ptn level (ctx.n.sub i) i
Instances For
Equations
- Hex.GraphIso.Nauty.cellsP ctx ptn level = Hex.GraphIso.Nauty.cellsGoP ctx ptn level ctx.n 0
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Hex.GraphIso.Nauty.windowScanP ctx level cell1 cell2 counts [] x✝² x✝¹ x✝ = x✝
Instances For
Equations
- Hex.GraphIso.Nauty.writeSegmentP ctx lab cell1 [] = lab
- Hex.GraphIso.Nauty.writeSegmentP ctx lab cell1 (x_1 :: rest) = Hex.GraphIso.Nauty.writeSegmentP ctx (Hex.GraphIso.Nauty.lset ctx lab cell1 x_1) (cell1.add 1) rest
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Hex.GraphIso.Nauty.listContainsK [] x✝ = false
- Hex.GraphIso.Nauty.listContainsK (c :: rest) x✝ = bif x✝.beq c then true else Hex.GraphIso.Nauty.listContainsK rest x✝
Instances For
Equations
- Hex.GraphIso.Nauty.listEraseK [] x✝ = []
- Hex.GraphIso.Nauty.listEraseK (c :: rest) x✝ = bif c.beq x✝ then rest else c :: Hex.GraphIso.Nauty.listEraseK rest x✝
Instances For
List.isPerm, raw.
Equations
- Hex.GraphIso.Nauty.isPermK [] x✝ = x✝.isEmpty
- Hex.GraphIso.Nauty.isPermK (a :: l₁) x✝ = (Hex.GraphIso.Nauty.listContainsK x✝ a && Hex.GraphIso.Nauty.isPermK l₁ (Hex.GraphIso.Nauty.listEraseK x✝ a))
Instances For
Equations
- Hex.GraphIso.Nauty.discreteAtP ctx ptn level = (Hex.GraphIso.Nauty.cellsP ctx ptn level).all fun (p : Nat × Nat) => p.fst.beq p.snd
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Hex.GraphIso.Nauty.specBestcellRowP ctx lab ptn level startArr workset v2 [] x✝ = x✝
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
The start of the first nontrivial cell, 0 if every cell is a
singleton: the target-cell rule below the tcLevel cutoff.
Equations
- Hex.GraphIso.Nauty.firstNontrivialP [] = 0
- Hex.GraphIso.Nauty.firstNontrivialP (p :: rest) = bif p.fst.beq p.snd then Hex.GraphIso.Nauty.firstNontrivialP rest else p.fst
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Hex.GraphIso.Nauty.segNP ctx lab lo len = Hex.GraphIso.Nauty.mapRange len fun (o : Nat) => Hex.GraphIso.Nauty.lget ctx lab (lo.add o)
Instances For
The packed image of a packed labelling under a packed permutation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Hex.GraphIso.Nauty.invPermP ctx lab = Hex.GraphIso.Nauty.iterUp ctx.n (fun (i inv : Nat) => Hex.GraphIso.Nauty.lset ctx inv (Hex.GraphIso.Nauty.lget ctx lab i) i) 0
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Hex.GraphIso.Nauty.imageP σ n s = Hex.GraphIso.Nauty.iterUp n (fun (v t : Nat) => bif Hex.GraphIso.Nauty.elemK s v then Hex.GraphIso.Nauty.insertK n t (σ v) else t) 0
Instances For
Membership of a certificate's permutation among the validated
generators, on packed numbers: the array must have n vertex entries
(so the packing is faithful) and its packing must appear.
Equations
- Hex.GraphIso.Nauty.containsGammaP ctx vgens γ = (Hex.GraphIso.Nauty.gammaOkP ctx γ.toList && vgens.any (Hex.GraphIso.Nauty.pack ctx.w γ.toList).beq)
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Hex.GraphIso.Nauty.checkNodeP ctx tcLevel brows vgens 0 x✝⁶ x✝⁵ x✝⁴ x✝³ x✝² x✝¹ x✝ = none
- Hex.GraphIso.Nauty.checkNodeP ctx tcLevel brows vgens fuel.succ x✝⁵ x✝⁴ x✝³ x✝² x✝¹ x✝ [] = none
- Hex.GraphIso.Nauty.checkNodeP ctx tcLevel brows vgens fuel.succ x✝⁴ x✝³ x✝² x✝¹ x✝ (Hex.GraphIso.Nauty.CertNode.autom o γ) (x_9 :: rest) = none
Instances For
The packed context of the replay on n vertices with packed rows
rows.
Equations
- Hex.GraphIso.initCtx n rows = { n := n, w := Hex.GraphIso.initW n, m := 2 ^ Hex.GraphIso.initW n - 1, g := rows, rm := 2 ^ n - 1 }
Instances For
The initial packed labelling of a coloured graph.
Equations
Instances For
The initial packed partition of a coloured graph.
Equations
Instances For
The correspondences of the initial packed state with the list state the internal replay layer uses.
The proposition the tactic's negative route reduces in the kernel:
the certificate replayed over packed state, with the rows packed once
from the adjacency matrix (Kernel.packRows) and the labelling and
partition packed with the field width initW n.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Kernel.checkKey agrees with the trusted Nauty.checkKey, for a
literal key whose rows are bitsets over n vertices.
The tactic-facing certificate producer: budgeted
Nauty.certifyKey? with its key read as a literal.
Equations
- Hex.GraphIso.Kernel.certifyKey? budget G = Option.map (fun (p : Hex.GraphIso.Nauty.CertNode × Hex.GraphIso.Nauty.Key n) => (p.fst, p.snd.toL)) (Hex.GraphIso.Nauty.certifyKey? G (some budget))
Instances For
Equalities identifying each graph's packed rows, plus two key certificates with differing keys, prove non-isomorphism: one kernel evaluation of the rows per graph, then one certificate replay per side.