NumericPrelude-0.0: An experimental alternative hierarchy of numeric type classesContentsIndex
MathObj.PermutationGroup
Portabilityrequires multi-parameter type classes
Stabilityprovisional
Maintainermik@math.uni-jena.de
Description

Routines and abstractions for permutation groups as subgroups of Sym(Integer).

Erm, currently PermutationGroup.T is only a Permutation.

Synopsis
data Cycle = Cycle {
cycleToList :: [Integer]
}
data T = Cons {
omega :: Integer
cyclesToList :: [Cycle]
}
cycleRightAction :: Integer -> Cycle -> Integer
cycleLeftAction :: Cycle -> Integer -> Integer
cycleAction :: [Integer] -> Integer -> Integer
cycleOrbit :: Cycle -> Integer -> [Integer]
(*>) :: T -> Integer -> Integer
cyclesOrbit :: T -> Integer -> [Integer]
orbit :: (Integer -> Integer) -> Integer -> [Integer]
takeUntilRepetition :: Ord a => [a] -> [a]
takeUntilRepetitionSlow :: Eq a => [a] -> [a]
choose :: Set a -> Maybe a
reduceCycles :: T -> T
keepEssentials :: T -> T
isEssential :: Cycle -> Bool
reduceCyclesSlow :: T -> T
permutation :: [[Integer]] -> T
inverse :: T -> T
generate :: [T] -> [T]
Documentation
data Cycle

We shall make a little bit of a hack here, enabling us to use additive or multiplicative syntax for groups as we wish by simply instantiating Num with both operations corresponding to the group operation of the permutation group we're studying

There are quite a few way we could represent elements of permutation groups: the images in a row, a list of the cycles, et.c. All of these differ highly in how complex various operations end up being.

Constructors
Cycle
cycleToList :: [Integer]
show/hide Instances
data T
Constructors
Cons
omega :: Integer
cyclesToList :: [Cycle]
show/hide Instances
cycleRightAction :: Integer -> Cycle -> Integer
cycleLeftAction :: Cycle -> Integer -> Integer
cycleAction :: [Integer] -> Integer -> Integer
cycleOrbit :: Cycle -> Integer -> [Integer]
(*>) :: T -> Integer -> Integer
Right (left?) group action on the Integers. Close to, but not the same as the module action in Algebra.Module.
cyclesOrbit :: T -> Integer -> [Integer]
orbit :: (Integer -> Integer) -> Integer -> [Integer]
takeUntilRepetition :: Ord a => [a] -> [a]
takeUntilRepetitionSlow :: Eq a => [a] -> [a]
choose :: Set a -> Maybe a
reduceCycles :: T -> T
keepEssentials :: T -> T
isEssential :: Cycle -> Bool
reduceCyclesSlow :: T -> T
permutation :: [[Integer]] -> T
inverse :: T -> T
generate :: [T] -> [T]
Extremely naïve algorithm to generate a list of all elements in a group. Should be replaced by a Schreier-Sims system if this code is ever used for anything bigger than .. say .. groups of order 512 or so.
Produced by Haddock version 0.7