- newtype Permutation a = P (Map a a)
- (.^) :: Ord k => k -> Permutation k -> k
- (-^) :: Ord t => [t] -> Permutation t -> [t]
- p :: Ord a => [[a]] -> Permutation a
- (^-) :: (Ord k, Show k) => Permutation k -> Int -> Permutation k
- (~^) :: (Ord t, Show t) => Permutation t -> Permutation t -> Permutation t
- (.^^) :: Ord a => a -> [Permutation a] -> [a]
- (-^^) :: Ord t => [t] -> [Permutation t] -> [[t]]
- _C :: Integral a => a -> [Permutation a]
- _S :: Integral a => a -> [Permutation a]
- _A :: Integral a => a -> [Permutation a]
- elts :: (Num a, Ord a) => [a] -> [a]
- order :: (Num a, Ord a) => [a] -> Int
- orderSGS :: Ord a => [Permutation a] -> Integer
- conjClassReps :: (Ord t, Show t) => [Permutation t] -> [(Permutation t, Int)]
- subgps :: (Ord a, Show a) => [Permutation a] -> [[Permutation a]]
- isNormal :: (Ord a, Show a) => [Permutation a] -> [Permutation a] -> Bool
- normalSubgps :: (Ord a, Show a) => [Permutation a] -> [[Permutation a]]
- quotientGp :: (Ord a, Show a) => [Permutation a] -> [Permutation a] -> [Permutation Int]
- (//) :: (Ord a, Show a) => [Permutation a] -> [Permutation a] -> [Permutation Int]

# Documentation

newtype Permutation a Source

Type for permutations, considered as group elements.

Eq a => Eq (Permutation a) | |

(Ord a, Show a) => Fractional (Permutation a) | |

(Ord a, Show a) => Num (Permutation a) | |

Ord a => Ord (Permutation a) | |

(Ord a, Show a) => Show (Permutation a) |

(.^) :: Ord k => k -> Permutation k -> kSource

x .^ g returns the image of a vertex or point x under the action of the permutation g. The dot is meant to be a mnemonic for point or vertex.

(-^) :: Ord t => [t] -> Permutation t -> [t]Source

b -^ g returns the image of an edge or block b under the action of the permutation g The dash is meant to be a mnemonic for edge or line or block.

p :: Ord a => [[a]] -> Permutation aSource

Construct a permutation from a list of cycles. For example, p [[1,2,3],[4,5]] returns the permutation that sends 1 to 2, 2 to 3, 3 to 1, 4 to 5, 5 to 4

(^-) :: (Ord k, Show k) => Permutation k -> Int -> Permutation kSource

A trick: g^-1 returns the inverse of g

(~^) :: (Ord t, Show t) => Permutation t -> Permutation t -> Permutation tSource

g ~^ h returns the conjugate of g by h. The tilde is meant to a mnemonic, because conjugacy is an equivalence relation.

(.^^) :: Ord a => a -> [Permutation a] -> [a]Source

x .^^ gs returns the orbit of the point or vertex x under the action of the gs

(-^^) :: Ord t => [t] -> [Permutation t] -> [[t]]Source

b -^^ gs returns the orbit of the block or edge b under the action of the gs

_C :: Integral a => a -> [Permutation a]Source

_C n returns generators for Cn, the cyclic group of order n

_S :: Integral a => a -> [Permutation a]Source

_S n returns generators for Sn, the symmetric group on [1..n]

_A :: Integral a => a -> [Permutation a]Source

_A n returns generators for An, the alternating group on [1..n]

elts :: (Num a, Ord a) => [a] -> [a]Source

Given generators for a group, return a (sorted) list of all elements of the group. Implemented using a naive closure algorithm, so only suitable for small groups (|G| < 10000)

order :: (Num a, Ord a) => [a] -> IntSource

Given generators for a group, return the order of the group (the number of elements). Implemented using a naive closure algorithm, so only suitable for small groups (|G| < 10000)

orderSGS :: Ord a => [Permutation a] -> IntegerSource

Given a strong generating set, return the order of the group it generates

conjClassReps :: (Ord t, Show t) => [Permutation t] -> [(Permutation t, Int)]Source

conjClassReps gs returns a conjugacy class representatives and sizes for the group generated by gs. This implementation is only suitable for use with small groups (|G| < 10000).

subgps :: (Ord a, Show a) => [Permutation a] -> [[Permutation a]]Source

Return the subgroups of a group. Only suitable for use on small groups (eg < 100 elts)

isNormal :: (Ord a, Show a) => [Permutation a] -> [Permutation a] -> BoolSource

isNormal gs ks returns True if <ks> is normal in <gs>. Note, it is caller's responsibility to ensure that <ks> is a subgroup of <gs> (ie that each k is in <gs>).

normalSubgps :: (Ord a, Show a) => [Permutation a] -> [[Permutation a]]Source

Return the normal subgroups of a group. Only suitable for use on small groups (eg < 100 elts)

quotientGp :: (Ord a, Show a) => [Permutation a] -> [Permutation a] -> [Permutation Int]Source

quotientGp gs ks returns <gs> / <ks>

(//) :: (Ord a, Show a) => [Permutation a] -> [Permutation a] -> [Permutation Int]Source

Synonym for quotientGp