theorem
Hex.PermGroup.Chain.orbit_valid
{n : Nat}
{level : Level n}
{tail : Chain n}
{base : Nat}
(h : (cons level tail).checkFrom base = true)
:
Orbit.Valid level.generators ⟨base, ⋯⟩ level.orbit
Compile the representative product for a successful sift. Each transition substitutes the next level's generators by their checked provenance programs, sharing those replacements rather than expanding repeated references.
Equations
- One or more equations did not get rendered due to their size.
- (Hex.PermGroup.Chain.leaf S words).program x x_1 x_6 = ⟨{ nodes := #[Hex.PermGroup.Node.id], root := 0 }, ⋯⟩
Instances For
Translate a chain representative product into the original input generators.
Equations
- G.program digits = Hex.PermGroup.Program.substitute G.generators G.chain.generators G.chain.words ⋯ (G.chain.program 0 ⋯ digits).val ⋯
Instances For
A checked program in the original generators exactly when the complete sift accepts. Negative queries do not allocate membership programs.
Instances For
Positive containment certificates, one checked membership program for each original generator of the smaller group.
Equations
- H.subgroupWords G h = Hex.Vector.ofFn' fun (i : Fin H.generators.size) => (G.word? H.generators[↑i]).get ⋯
Instances For
Decide containment and, on success, retain the original generators' words.
Equations
- H.subgroupWords? G = if h : H.isSubgroup G = true then some (H.subgroupWords G ⋯) else none
Instances For
theorem
Hex.PermGroup.Group.subgroupWords?_sound
{n : Nat}
(H G : Group n)
(words : Vector Program H.generators.size)
(h : H.subgroupWords? G = some words)
: