37 lines
1.4 KiB
Haskell
37 lines
1.4 KiB
Haskell
import Data.List (nub, sortOn)
|
|
import Cayley.Group
|
|
import Cayley.Symmetric
|
|
|
|
-- generators of W(B_4), order 384
|
|
goodB4Embedding = map read ["(1 3)", "(1 2)(3 4)(5 6)(7 8)", "(1 3)(2 6)(4 5)(7 8)", "(1 3)(2 4)(5 7)(6 8)"] :: [Perm]
|
|
goodB4Edges = filter ((>2) . order) [x <> y | x <- goodB4Embedding, y <- goodB4Embedding]
|
|
-- generators of H, order 192
|
|
badb4Embedding = map read ["(1 2)(3 4)(5 6)(7 8)", "(1 3)(2 5)(4 7)(6 8)", "(1 2)(3 4)(5 7)(6 8)", "(1 2)(3 5)(4 6)(7 8)"] :: [Perm]
|
|
|
|
|
|
-- Order 192 subgroup of only even permutations in W(B_4)
|
|
goodB4EvenPermsSubgroup = filter ((==1) . pParity) $ generatingSet $ goodB4Embedding
|
|
|
|
-- Count the orders in the group xs
|
|
-- Should probably be done better in CayleyOps
|
|
countOrders xs = sortOn fst $ map ((,) <*> flip numOrder xs) (nub $ map order xs)
|
|
|
|
commutatorSubgroup xs = nub $ [commutator x y | x <- xs, y <- xs]
|
|
|
|
printGroupData x = do
|
|
putStr "\tOrder: "
|
|
putStrLn $ show $ length x
|
|
putStr "\tElement order count: "
|
|
putStrLn $ show $ countOrders x
|
|
putStr "\tCommutator subgroup order: "
|
|
putStrLn $ show $ length $ commutatorSubgroup x
|
|
|
|
|
|
main = do
|
|
putStrLn "Bad embedding:"
|
|
printGroupData $ generatingSet badb4Embedding
|
|
putStrLn "Even permutation subgroup of the good embedding:"
|
|
printGroupData goodB4EvenPermsSubgroup
|
|
putStrLn "Edge-generated subgroup of the good embedding:"
|
|
printGroupData $ generatingSet goodB4Edges
|