Inclusion of the represented permutation subgroups.
Equations
- H.IsSubgroup G = ∀ (p : Hex.Perm n), Hex.PermGroup.Generated H.generators p → Hex.PermGroup.Generated G.generators p
Instances For
Containment needs only the original generators of the smaller group.
Equations
- H.isSubgroup G = decide (∀ (i : Fin H.generators.size), G.contains H.generators[↑i] = true)
Instances For
The first original generator whose complete sift disproves containment.
Equations
- H.subgroupFailure? G = List.find? (fun (i : Fin H.generators.size) => !G.contains H.generators[↑i]) (List.finRange H.generators.size)
Instances For
Equality of subgroups, independent of their presentations.
Equations
- G.sameGroup H = (G.isSubgroup H && H.isSubgroup G)
Instances For
Concatenate the original generators and rebuild a complete chain.
Equations
- G.join H = Hex.PermGroup.Group.ofGenerators (G.generators ++ H.generators)
Instances For
Normalize once for orbit operations; signed input references retain the connection to the group's original generator array.
Equations
Instances For
The top working array already has checked symmetry and original-generator provenance; point-orbit replay need not normalize the input again.
Equations
- G.orbitData a = Hex.PermGroup.Orbit.ofSymmetric G.chain.generators a ⋯
Instances For
Sorted point orbit, retaining fixed points. The discovery order remains in the certificate and is independent of this public serialization.
Equations
Instances For
Retain an orbit at its least point. This gives a deterministic partition with both point arrays and the list of orbits sorted.
Instances For
Equations
- G.orbits = (List.filterMap G.orbitAt? (List.finRange n)).toArray
Instances For
A transporter is returned exactly when the target is in the point orbit.
Equations
Instances For
The full point stabilizer, generated by the Schreier generators of the point orbit that are not generated by earlier ones.