Raw stabilizer-chain data. The terminal generator array is checked explicitly; only a successful complete check makes this a group certificate.
- leaf {n : Nat} (generators : Array (Perm n)) (words : Vector Program generators.size) : Chain n
- cons {n : Nat} (level : Level n) (tail : Chain n) : Chain n
Instances For
A raw sift records either all orbit digits or its first failure. Negative results have mathematical meaning only after the chain has passed its checker.
- member {n : Nat} (digits : List Nat) : SiftResult n
- missing {n : Nat} (level : Nat) (image : Fin n) : SiftResult n
- residual {n : Nat} (value : Perm n) : SiftResult n
- shape {n : Nat} (level : Nat) : SiftResult n
Instances For
Instances For
Prepend the current orbit digit, preserving the first failure unchanged.
Equations
- Hex.PermGroup.SiftResult.prepend digit (Hex.PermGroup.SiftResult.member digits) = Hex.PermGroup.SiftResult.member (digit :: digits)
- Hex.PermGroup.SiftResult.prepend digit (Hex.PermGroup.SiftResult.missing level image) = Hex.PermGroup.SiftResult.missing level image
- Hex.PermGroup.SiftResult.prepend digit (Hex.PermGroup.SiftResult.residual value) = Hex.PermGroup.SiftResult.residual value
- Hex.PermGroup.SiftResult.prepend digit (Hex.PermGroup.SiftResult.shape level) = Hex.PermGroup.SiftResult.shape level
Instances For
Equations
- (Hex.PermGroup.Chain.leaf S words).generators = S
- (Hex.PermGroup.Chain.cons level tail).generators = level.generators
Instances For
Equations
- (Hex.PermGroup.Chain.leaf S words).words = words
- (Hex.PermGroup.Chain.cons level tail).words = level.words
Instances For
Number of stored nonterminal levels. The checker requires exactly the remaining number of points in the fixed base.
Equations
- (Hex.PermGroup.Chain.leaf S words).length = 0
- (Hex.PermGroup.Chain.cons level tail).length = tail.length + 1
Instances For
Sift by multiplying the current residual on the left by the inverse of its selected representative. Digits are stored with level zero most significant.
Equations
- One or more equations did not get rendered due to their size.
- (Hex.PermGroup.Chain.leaf generators words).sift x✝¹ x✝ = if x✝ = Hex.Perm.id n then Hex.PermGroup.SiftResult.member [] else Hex.PermGroup.SiftResult.residual x✝
Instances For
sift for compiled code: it multiplies by the stored inverse
representatives and skips identity representatives, which the chains of
Group.ofGenerators have at every level whose orbit is a single point.
Equations
- One or more equations did not get rendered due to their size.
- (Hex.PermGroup.Chain.leaf generators words).siftImpl x✝¹ x✝ = if x✝ = Hex.Perm.id n then Hex.PermGroup.SiftResult.member [] else Hex.PermGroup.SiftResult.residual x✝
Instances For
The raw orbit-size product, before its interpretation as a group order has been justified by complete checking.
Equations
- (Hex.PermGroup.Chain.leaf S words).orbitProduct = 1
- (Hex.PermGroup.Chain.cons level tail).orbitProduct = level.orbit.points.size * tail.orbitProduct