One level of a kernel certificate. orbit, reps, invs and parents
are read at indices below size only.
- base : Nat
The base point.
- size : Nat
The number of orbit points.
The packed generators of this level.
- orbit : Lean.RArray Nat
Orbit point
j, withorbit.get 0 = base. - reps : Lean.RArray Nat
The packed transversal element mapping
baseto orbit pointj. - invs : Lean.RArray Nat
The packed inverse of
reps.get j. - parents : Lean.RArray (Nat × Nat)
For
0 < j, the Schreier-tree edge(i, k)withreps.get j = gens[i] * reps.get k. - lookup : Nat
Field
xisj + 1whenxis orbit pointj, and0off the orbit. For each generator of the next level, the Schreier-pair indices
(i, j)of the Schreier generators whose product it is.At the first level only, for each generator, the indices of the inputs whose product it is. Ignored at later levels.
Instances For
Equations
- One or more equations did not get rendered due to their size.
A kernel certificate: the nontrivial levels of a stabilizer chain.
Instances For
Generator i of a level (0 out of range).
Equations
- Hex.PermGroup.Kernel.gen L i = L.gens.getD i 0
Instances For
Item 1: the orbit and lookup table agree, and every point is below n.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Item 4: the transversal follows its Schreier tree, and the stored inverses are inverses.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The product of the Schreier generators at the given pairs, leftmost
outermost; e for no pairs.
Equations
- Hex.PermGroup.Kernel.schreierProduct n W e L [] = e
- Hex.PermGroup.Kernel.schreierProduct n W e L (q :: qs) = Hex.PermGroup.Kernel.comp n W (Hex.PermGroup.Kernel.schreier n W L q.fst q.snd) (Hex.PermGroup.Kernel.schreierProduct n W e L qs)
Instances For
Items 1, 4 and 6 for one level followed by rest. Generators need not be
closed under inverses: in a finite group the inverse of a generator is one of
its powers.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The product of the inputs at the given indices, leftmost outermost; e for
no indices.
Equations
- Hex.PermGroup.Kernel.inputProduct n W e inputs [] = e
- Hex.PermGroup.Kernel.inputProduct n W e inputs (i :: is) = Hex.PermGroup.Kernel.comp n W (inputs.getD i e) (Hex.PermGroup.Kernel.inputProduct n W e inputs is)
Instances For
Item 2 for the inputs: every input sifts through the certificate, and each first-level generator is the product of the inputs at its recorded indices.
Equations
Instances For
The complete kernel check of a certificate for packed inputs of degree n.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The order certified by c: the product of its orbit sizes.
Equations
- Hex.PermGroup.Kernel.order c = List.foldr (fun (L : Hex.PermGroup.Kernel.Level) (acc : Nat) => L.size.mul acc) 1 c