HaskellForMaths-0.4.0: Combinatorics, group theory, commutative algebra, non-commutative algebra

Math.Algebra.Group.PermutationGroup

Synopsis

Documentation

newtype Permutation a Source

A type for permutations, considered as functions or actions which can be performed on an underlying set.

Constructors

P (Map a a) 

Instances

(.^) :: 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