RepLAB provides ways to work with permutation groups.
Permutation groups are finite groups that are subgroups of the symmetric group acting on n
elements.
In particular, the decomposition of \(\{1,...,n\}\) into orbits, the natural action and representation of the group are all defined.
Permutation
: Class with static methods to work with permutations.
PermutationGroup
: Describes a generic permutation group.
As a closely related variant, we describe signed permutations. Signed permutations act on the domain \(\{-n,...,-1, 1,...,n\}\).
SignedPermutation
: Class with static methods to work with signed permutations.
SignedPermutationGroup
: Describes a group of signed permutations.
This class regroups functions that are useful when dealing with permutations.
In RepLAB, permutations are represented using row vectors of integers, those integers being
encoded using the type double
; so this class does not have any instances.
Class members list
Properties
cycleStructure
– Returns the cycle structure of the given permutation
cycles
– Returns the cycles of the given permutation
lexCompare
– Returns the comparison of two permutations by lexicographic order
order
– Returns the order of the permutation
sign
– Returns the sign of a given permutation
sorting
– Returns the permutation that sorts a cell array using a custom comparison function
Construction
fromCycles
– Constructs a permutation from a product of cycles.
shift
– Returns the cyclic permutation that shifts the domain indices by i
.
transposition
– Returns the transposition permuting i
and j
.
Matrix conversion
fromMatrix
– Returns the permutation corresponding to the given matrix representation
toMatrix
– Returns the permutation matrix corresponding to the given permutation
toSparseMatrix
– Returns the sparse permutation matrix corresponding to the given permutation
Returns the cycle structure of the given permutation
Example
>>> isequal(replab.Permutation.cycleStructure([2 1 4 3]), [2 2])
1
perm (permutation
) – Permutation
Nonincreasing vector of integers containing the sizes of cycles (for sizes > 1)
integer(1,*)
Returns the cycles of the given permutation
Example
>>> isequal(replab.Permutation.cycleStructure([2 1 4 3]), [2 2])
1
perm (permutation
) – Permutation
Nonincreasing vector of integers containing the sizes of cycles (for sizes > 1)
integer(1,*)
Constructs a permutation from a product of cycles.
Each cycle is given as a row vector, and the sequence of cycles is given as variable arguments.
n (integer
) – Domain size
varargin (cell(1,*) of integer(1,*)
) – Sequence of cycles as row vectors of indices
The permutation corresponding to the product of cycles.
permutation
Returns the permutation corresponding to the given matrix representation
See replab.Permutation.toMatrix
mat – A permutation matrix.
The permutation corresponding to matrix mat
.
Error
– if mat
is not a permutation matrix, throws an error
Returns the comparison of two permutations by lexicographic order
lhs (permutation
) – First permutation
rhs (permutation
) – Second permutation
1 if lhs > rhs
, 0 if lhs == rhs
, -1 if lhs < rhs
integer
Returns the order of the permutation
perm (permutation
) – Permutation
The order of perm
, i.e. the smallest o
such that perm^o == identity
integer
Returns the cyclic permutation that shifts the domain indices by i
.
n (integer
) – Domain size
i (nonnegative integer
) – Shift so that j
is sent to j + i
(wrapping around).
The constructed cyclic shift
permutation
Returns the sign of a given permutation
Example
>>> replab.Permutation.sign([3 2 1 4])
-1
perm (permutation
) – Permutation to compute the sign of
Sign of the permutation
integer
Returns the permutation that sorts a cell array using a custom comparison function
array – A (row or column) vector array containing data of arbitrary type
greaterFun – A function handle that compares elements such that
greaterFun(x, y) == true
when x > y
and false otherwise
A permutation p
such that sorted = array(p)
Returns the permutation matrix corresponding to the given permutation
The returned matrix is such that matrix multiplication is compatible with composition of
permutations, i.e. for Sn = replab.S(domainSize)
we have
replab.permutation.toMatrix(Sn.compose(x, y)) = replab.Permutation.toMatrix(x) * replab.Permutation.toMatrix(y)
perm (permutation
) – Permutation
The permutation matrix corresponding to perm
.
Returns the sparse permutation matrix corresponding to the given permutation
The returned matrix is such that matrix multiplication is compatible with composition of permutations.
I.e. for Sn = replab.S(n)
we have
replab.Permutation.toMatrix(Sn.compose(x, y)) = replab.Permutation.toMatrix(x) * replab.Permutation.toMatrix(y)
perm (permutation
) – Permutation
The sparse permutation matrix corresponding to perm
.
Returns the transposition permuting i
and j
.
n (integer
) – Domain size
i (integer
) – First domain element to be transposed.
j (integer
) – Second domain element to be transposed.
The constructed transposition
permutation
Bases: replab.FiniteGroup
Permutation group over the integer 1, .., domainSize
Class members list
Properties
generators
– Group generators
identity
– Monoid identity element
type
– Type of the contained elements
Prettyprinting
additionalFields
– Returns the name/value pairs corresponding to additional fields to be printed
disp
– Standard MATLAB/Octave display method
headerStr
– Tiny single line description of the current object type
hiddenFields
– Returns the names of the fields that are not printed as a row vector
longStr
– Multi-line description of the current object
shortStr
– Single line text description of the current object
Test helpers
assertEqv
– Compares two elements for equality
assertNotEqv
– Compares two elements for inequality
Sampling and equality test
Laws
check
– Checks the consistency of this object
checkAndContinue
– Checks the consistency of this object
laws
– Returns the laws that this object obeys
Property cache
cache
– Sets the value of the designated property in the cache
cached
– Returns the cached property if it exists, computing it if necessary
cachedOrDefault
– Returns the cached property if it exists, or the provided default value if it is unknown yet
cachedOrEmpty
– Returns the cached property if it exists, or []
if it is unknown yet
inCache
– Returns whether the value of the given property has already been computed
Unique ID
eq
– Equality test
id
– Returns the unique ID of this object (deprecated)
isequal
– Tests finite sets for equality
ne
– Non-equality test
Monoid operations
areCommuting
– Returns whether the two given elements commute
compose
– Composes two monoid/group elements
composeAll
– Composes a sequence of monoid elements
composeN
– Computes the power of a given element by repeated squaring
isIdentity
– Tests if the given element is the identity
Morphisms
abstractIsomorphism
– Returns an isomorphism to an abstract group
automorphismGroup
– Returns the automorphism group of this group
commutingMorphismsMorphism
– Constructs a morphism from morphisms with commuting images
conjugatingAutomorphism
– Returns the morphism that corresponds to left conjugation by an element
findIsomorphism
– Finds an isomorphism from this finite group to another finite group, if it exists
findIsomorphisms
– Finds all the isomorphisms from this finite group to another finite group
findMorphisms
– Finds all the morphisms from this finite group to another finite group
innerAutomorphism
– Returns the inner automorphism given using conjugation by the given element
isIsomorphicTo
– Returns whether this group is isomorphic to another group
isMorphismByImages
– Checks whether the given images describe a group morphism
isomorphismByFunction
– Constructs an isomorphism to a finite group using an image function
isomorphismByFunctions
– Constructs a group isomorphism using preimage/image functions
isomorphismByImages
– Constructs an isomorphism to a group using images of generators
morphismByFunction
– Constructs a group morphism using an image function
morphismByImages
– Constructs a morphism to a group using images of generators
orderPreservingPermutationIsomorphism
– Returns an isomorphism from this group to a permutation group, which preserves element order
permutationIsomorphism
– Returns an isomorphism from this group to a permutation group
regularIsomorphism
– Returns an isomorphism from this group to a permutation group whose degree matches the order of this group
Group methods
commutator
– Returns the commutator of two group elements
composeFlat
– Returns the composition of elements from an array picked according to the given indices/letters
composeWithInverse
– Returns the composition of an element with the inverse of another element
inverse
– Computes the inverse of an element
leftConjugate
– Returns the left conjugate of a group element
Elements
contains
– Tests whether this set contains the given element
elementOrder
– Returns the order of a group element
elements
– Returns a cell array containing all the elements of this set
elementsSequence
– Returns a sequence corresponding to this set
nElements
– Returns the size of this set
representative
– Returns the minimal element of this set under the type ordering
setProduct
– Returns a description of this set as a product of sets
smallGeneratingSet
– Returns a small set of elements generating the group
Relations to other sets
hasSameTypeAs
– Returns if this finite set has the same type as the given finite set
Image under isomorphism
imap
– Returns the image of this finite set under an isomorphism
General
Representations
commutingRepsRep
– Constructs a representation from commuting representations
directSumRep
– Computes the direct sum of representations on this group
indexRelabelingRep
– Representation that permutes the indices of a tensor
naturalRep
– Returns the natural permutation representation of this permutation group
permutationRep
– Constructs a permutation representation of this group
regularRep
– Returns the left regular representation of this group
repByImages
– Constructs a finite dimensional representation of this group from preimages/images pairs
signRep
– Returns the sign representation of this permutation group
signedPermutationRep
– Returns a real signed permutation representation of this group
standardRep
– Returns the standard representation of this permutation group
tensorRep
– Computes the tensor product of representations
trivialRep
– Returns the trivial representation of this group on a finite dimensional vector space
Group construction
directPower
– Returns the direct product of this group with itself a number of times
directProduct
– Returns the direct product of groups
semidirectProduct
– Describes an external semidirect product of groups
Group properties
abelianInvariants
– Returns the group abelian invariants
exponent
– Returns the group exponent
fastRecognize
– Attempts to recognize this group in the standard atlas
hasReconstruction
– Returns whether the group has a “reconstruction”
isCommutative
– Returns whether this group is commutative
isCyclic
– Returns whether this group is a cyclic group
isSimple
– Returns whether this group is simple
isTrivial
– Tests whether this group is trivial
knownOrder
– Returns whether the order of this group has already been computed
maximalTorusDimension
– Returns, if available, the dimension of the maximal torus contained in the connected component of this group
order
– Returns the group order
presentation
– Returns a presentation of this group as a string
recognize
– Attempts to recognize this group in the standard atlas
reconstruction
– Returns a reconstruction of the group used to speed up group averaging
Isomorphic groups
abstractGroup
– Returns an abstract group isomorphic to this finite gorup
permutationGroup
– Returns the permutation group isomorphic to this finite group
Subgroups
center
– Returns the center of this group
centralizer
– Returns the centralizer of the given object in this group
derivedSeries
– Returns the derived series of this group
derivedSubgroup
– Computes the derived subgroup of this group
intersection
– Computes the intersection of two groups
randomProperSubgroup
– Constructs a random proper subgroup of this group
randomSubgroup
– Constructs a random subgroup of this group
subgroup
– Constructs a subgroup of the current group from elements
subgroupWithGenerators
– Constructs a subgroup of the current group from generators
trivialSubgroup
– Returns the trivial subgroup of this group
Conjugacy classes and character table
characterTable
– Alias for complexCharacterTable
complexCharacterTable
– Returns the complex character table of this group
conjugacyClass
– Returns the conjugacy class corresponding to the given element
conjugacyClasses
– Returns the conjugacy classes of this group
findLeftConjugations
– Returns the set of all elements that left conjugates an element to another element
knownComplexCharacterTable
– Returns whether the complex character table of this group is already known or computed
knownRealCharacterTable
– Returns whether the real character table of this group is already known or computed
realCharacterTable
– Returns the real character table of this group
setComplexCharacterTable
– Sets the complex character table of this group
setConjugacyClasses
– Sets the conjugacy classes of this group
setRealCharacterTable
– Sets the real character table of this group
Construction of groups
closure
– Computes the group generated by the elements of this group and other elements/groups
leftConjugateGroup
– Returns the left conjugate of the current group by the given element
normalClosure
– Computes the normal closure of an object in the closure of this group and this object
withGeneratorNames
– Returns a modified copy of this finite group with renamed generators
Cosets
doubleCoset
– Returns a double coset
doubleCosets
– Returns the set of double cosets in this group by the given groups
isNormalizedBy
– Returns whether a given element/group normalizes this group
leftCoset
– Returns a left coset
leftCosets
– Returns the set of left cosets of the given subgroup in this group
mldivide
– Shorthand for rightCosets
mrdivide
– Shorthand for leftCosets
normalCoset
– Returns a normal coset
normalCosets
– Returns the set of normal cosets of the given subgroup in this group
rightCoset
– Returns a right coset
rightCosets
– Returns the set of right cosets of the given subgroup in this group
Generators-related methods
factorizeFlat
– Factorizes an element or a coset as a flat sequence in the generators
factorizeWord
– Factorizes an element or a coset as a word in the generators
flatToWord
– Prints a word described by letters into a string
generator
– Returns the i-th group generator
generatorInverse
– Returns the inverse of the i-th group generator
generatorNames
– Returns the names of the group generators
imageFlat
– Returns the image of a flat word in the group generators
imageWord
– Computes the image of a word in the group generators
knownRelators
– Returns whether the relators of this group are known
nGenerators
– Returns the number of group generators
relatorsFlat
– Returns the relators of a presentation of this finite group in the flat format
relatorsWord
– Returns the relators of a presentation of this finite group
wordToFlat
– Parses a word into generator letters
Relations to other groups
isNormalSubgroupOf
– Returns whether this group is a normal subgroup of another group
isSubgroupOf
– Returns whether this group is a subgroup of another group
Constructor
PermutationGroup
– Constructs a permutation group
Construction of standard groups
alternating
– Constructs the alternating group
cyclic
– Constructs the cyclic group of order n
acting on n
points
dihedral
– Constructs the dihedral group of order 2*n
kleinFourGroup
– Constructs the Klein Four-Group
symmetric
– Returns the symmetric group acting on a certain domain size
trivial
– Constructs the trivial permutation group acting on n
points
Group internal description
chain
– Returns the stabilizer chain corresponding to this permutation group.
factorization
– Returns an object able to compute factorizations in the group generators
lexChain
– Returns the reduced stabilizer chain corresponding to this permutation group in lexicographic order
partialChain
– Returns the stabilizer chain corresponding to this permutation group if it can be computed quickly
Methods specific to permutation groups
generatorsAsMatrix
– Returns the generators of this group concatenated in a matrix
matrixFindPermutationsTo
– Finds the permutations that send a matrix to another matrix
matrixStabilizer
– Returns the permutation subgroup that leaves a given matrix invariant by joint permutation of its rows and columns
orbits
– Returns the partition of the domain into orbits under this group
orderedPartitionStabilizer
– Computes the subgroup that leaves the given ordered partition invariant
pointwiseStabilizer
– Returns the subgroup that stabilizes the given set pointwise
setwiseStabilizer
– Returns the subgroup that stabilizes the given set as a set
stabilizer
– Returns the subgroup that stabilizes a given point
unorderedPartitionStabilizer
– Computes the subgroup that leaves the given unordered partition invariant
vectorFindLexMinimal
– Finds the lexicographic minimal vector under permutation of its coefficients by this group
vectorFindPermutationsTo
– Finds the permutations that send a vector to another vector
vectorStabilizer
– Returns the permutation subgroup that leaves a given vector invariant
wreathProduct
– Returns the wreath product of a compact group by this permutation group
Actions
indexRelabelingMorphism
– Returns the morphism the permutation action of this group on tensor coefficients
indexRelabelingPermutation
– Returns the permutation that acts by permuting tensor coefficients
matrixAction
– Returns the simultaneous action of permutations on both rows and columns of square matrices
naturalAction
– Returns the natural action of elements of this group on its domain
vectorAction
– Returns the action of permutations on column vectors
Construction of permutation groups
of
– Constructs a nontrivial permutation group from the given generators
permutingGivenPoints
– Constructs the group that permutes the given points
Inherited elements
Documentation in replab.FiniteGroup.abelianInvariants()
Documentation in replab.FiniteGroup.abstractGroup()
Documentation in replab.FiniteGroup.abstractIsomorphism()
Documentation in replab.Str.additionalFields()
Documentation in replab.Monoid.areCommuting()
Documentation in replab.Domain.assertEqv()
Documentation in replab.Domain.assertNotEqv()
Documentation in replab.Group.automorphismGroup()
Documentation in replab.Obj.cache()
Documentation in replab.Obj.cached()
Documentation in replab.Obj.cachedOrDefault()
Documentation in replab.Obj.cachedOrEmpty()
Documentation in replab.FiniteGroup.center()
Documentation in replab.FiniteGroup.centralizer()
Documentation in replab.FiniteGroup.characterTable()
Documentation in replab.Obj.check()
Documentation in replab.Obj.checkAndContinue()
Documentation in replab.FiniteGroup.closure()
Documentation in replab.Group.commutator()
Documentation in replab.Group.commutingMorphismsMorphism()
Documentation in replab.CompactGroup.commutingRepsRep()
Documentation in replab.FiniteGroup.complexCharacterTable()
Documentation in replab.Monoid.compose()
Documentation in replab.Monoid.composeAll()
Documentation in replab.Group.composeFlat()
Documentation in replab.Monoid.composeN()
Documentation in replab.Group.composeWithInverse()
Documentation in replab.FiniteGroup.conjugacyClass()
Documentation in replab.FiniteGroup.conjugacyClasses()
Documentation in replab.FiniteGroup.conjugatingAutomorphism()
Documentation in replab.FiniteSet.contains()
Documentation in replab.FiniteGroup.derivedSeries()
Documentation in replab.FiniteGroup.derivedSubgroup()
Documentation in replab.CompactGroup.directPower()
Documentation in replab.CompactGroup.directProduct()
Documentation in replab.CompactGroup.directSumRep()
Documentation in replab.Str.disp()
No documentation
Documentation in replab.FiniteGroup.doubleCoset()
Documentation in replab.FiniteGroup.doubleCosets()
Documentation in replab.FiniteGroup.elementOrder()
Documentation in replab.FiniteSet.elements()
Documentation in replab.FiniteSet.elementsSequence()
Documentation in replab.Obj.eq()
Documentation in replab.Domain.eqv()
Documentation in replab.FiniteGroup.exponent()
Documentation in replab.FiniteGroup.factorizeFlat()
Documentation in replab.FiniteGroup.factorizeWord()
Documentation in replab.FiniteGroup.fastRecognize()
Documentation in replab.FiniteGroup.findIsomorphism()
Documentation in replab.FiniteGroup.findIsomorphisms()
Documentation in replab.FiniteGroup.findLeftConjugations()
Documentation in replab.FiniteGroup.findMorphisms()
Documentation in replab.FiniteGroup.flatToWord()
Documentation in replab.FiniteGroup.generator()
Documentation in replab.FiniteGroup.generatorInverse()
Documentation in replab.FiniteGroup.generatorNames()
Documentation in replab.FiniteGroup.generators
Documentation in replab.CompactGroup.hasReconstruction()
Documentation in replab.FiniteSet.hasSameTypeAs()
Documentation in replab.Str.headerStr()
Documentation in replab.Str.hiddenFields()
Documentation in replab.Obj.id()
Documentation in replab.Monoid.identity
Documentation in replab.FiniteGroup.imageFlat()
Documentation in replab.FiniteGroup.imageWord()
Documentation in replab.FiniteSet.imap()
Documentation in replab.Obj.inCache()
Documentation in replab.Group.innerAutomorphism()
Documentation in replab.FiniteGroup.intersection()
Documentation in replab.Group.inverse()
Documentation in replab.FiniteGroup.isCommutative()
Documentation in replab.FiniteGroup.isCyclic()
Documentation in replab.Monoid.isIdentity()
Documentation in replab.FiniteGroup.isIsomorphicTo()
Documentation in replab.FiniteGroup.isMorphismByImages()
Documentation in replab.FiniteGroup.isNormalSubgroupOf()
Documentation in replab.FiniteGroup.isNormalizedBy()
Documentation in replab.FiniteGroup.isSimple()
Documentation in replab.FiniteGroup.isSubgroupOf()
Documentation in replab.FiniteGroup.isTrivial()
Documentation in replab.FiniteSet.isequal()
Documentation in replab.FiniteGroup.isomorphismByFunction()
Documentation in replab.Group.isomorphismByFunctions()
Documentation in replab.FiniteGroup.isomorphismByImages()
Documentation in replab.FiniteGroup.knownComplexCharacterTable()
Documentation in replab.FiniteGroup.knownOrder()
Documentation in replab.FiniteGroup.knownRealCharacterTable()
Documentation in replab.FiniteGroup.knownRelators()
Documentation in replab.Obj.laws()
Documentation in replab.Group.leftConjugate()
Documentation in replab.FiniteGroup.leftConjugateGroup()
Documentation in replab.FiniteGroup.leftCoset()
Documentation in replab.FiniteGroup.leftCosets()
Documentation in replab.Str.longStr()
Documentation in replab.CompactGroup.maximalTorusDimension()
Documentation in replab.FiniteGroup.mldivide()
Documentation in replab.Group.morphismByFunction()
Documentation in replab.FiniteGroup.morphismByImages()
Documentation in replab.FiniteGroup.mrdivide()
No documentation
Documentation in replab.FiniteSet.nElements()
Documentation in replab.FiniteGroup.nGenerators()
Documentation in replab.Obj.ne()
Documentation in replab.FiniteGroup.normalClosure()
Documentation in replab.FiniteGroup.normalCoset()
Documentation in replab.FiniteGroup.normalCosets()
Documentation in replab.FiniteGroup.order()
Documentation in replab.FiniteGroup.orderPreservingPermutationIsomorphism()
Documentation in replab.FiniteGroup.permutationGroup()
Documentation in replab.FiniteGroup.permutationIsomorphism()
Documentation in replab.FiniteGroup.permutationRep()
Documentation in replab.FiniteGroup.presentation()
Documentation in replab.FiniteGroup.randomProperSubgroup()
Documentation in replab.FiniteGroup.randomSubgroup()
Documentation in replab.FiniteGroup.realCharacterTable()
Documentation in replab.FiniteGroup.recognize()
Documentation in replab.CompactGroup.reconstruction()
Documentation in replab.FiniteGroup.regularIsomorphism()
Documentation in replab.FiniteGroup.regularRep()
Documentation in replab.FiniteGroup.relatorsFlat()
Documentation in replab.FiniteGroup.relatorsWord()
Documentation in replab.FiniteGroup.repByImages()
Documentation in replab.FiniteSet.representative()
Documentation in replab.FiniteGroup.rightCoset()
Documentation in replab.FiniteGroup.rightCosets()
Documentation in replab.Domain.sample()
Documentation in replab.CompactGroup.semidirectProduct()
Documentation in replab.FiniteGroup.setComplexCharacterTable()
Documentation in replab.FiniteGroup.setConjugacyClasses()
Documentation in replab.FiniteSet.setProduct()
Documentation in replab.FiniteGroup.setRealCharacterTable()
Documentation in replab.Str.shortStr()
Documentation in replab.FiniteGroup.signedPermutationRep()
Documentation in replab.FiniteGroup.smallGeneratingSet()
Documentation in replab.FiniteGroup.subgroup()
Documentation in replab.FiniteGroup.subgroupWithGenerators()
Documentation in replab.CompactGroup.tensorRep()
Documentation in replab.CompactGroup.trivialRep()
Documentation in replab.FiniteGroup.trivialSubgroup()
Documentation in replab.FiniteSet.type
Documentation in replab.FiniteGroup.withGeneratorNames()
Documentation in replab.FiniteGroup.wordToFlat()
Generator names
cell(1,*) of charstring
Constructs a permutation group
domainSize (integer
) – Domain size of this permutation group
generators (cell(1,*) of permutation
) – Group generators
chain – BSGS chain describing the group
generatorNames – Names of the generators
order – Order of the group
relators – Relators given either in word or letter format
replab.bsgs.Chain
cell(1,*) of charstring
vpi, optional
cell(1,*) of charstring
Constructs the alternating group
n (integer
) – Group degree
The alternating group of degree n
Returns the stabilizer chain corresponding to this permutation group.
Stabilizer chain
replab.bsgs.Chain
Constructs the cyclic group of order n
acting on n
points
n (integer
) – Cyclic group order and domain size
The cyclic group of given order/domain size
Constructs the dihedral group of order 2*n
This corresponds to the group of symmetries of the polygon with n
vertices
n (integer
) – Half the dihedral group order
The dihedral group permuting the vertices of the n
-gon
Returns an object able to compute factorizations in the group generators
A factorization instance
replab.mrp.Factorization
Creates a permutation group from a BSGS chain
This method is mostly used internally.
chain (replab.bsgs.Chain
) – BSGS chain
Permutation group
Returns the generators of this group concatenated in a matrix
Matrix whose rows are the group generators
integer(*,*)
Returns the morphism the permutation action of this group on tensor coefficients
The tensor coefficients correspond to R^ir x R^ir ... (domainSize times)
where ir = indexRange
.
The enumeration of indices is done in the same order as in indexRelabelingPermutation
:
if I = (i1, ..., id)
is a sequence of indices, we increment first id
, then
i_{d-1}
and so on.
indexRange (integer
) – Dimension of each subindex
The permutation group homomorphism
function_handle
Returns the permutation that acts by permuting tensor coefficients
Let I = (i_1, ..., i_d)
be a sequence of indices, where d = self.domainSize
and 1 <= i_1,...,i_d <= indexRange
We enumerate elements of I
by first incrementing i_d
, then i_{d-1}
, etc…
We compute the permutation of domain size indexRange^domainSize
that acts on the
indices of I according to the argument g
.
g (permutation
) – Permutation of subindices
indexRange (integer
) – Dimension of each subindex
The permutation on the enumeration of indices
permutation
Representation that permutes the indices of a tensor
It acts on the tensor space R^ir x R^ir … (domainSize times) where ir = indexRange, by permuting the indices.
The representation returned is real.
indexRange (integer
) – Dimension of the tensor components/range of the subindices
The desired permutation representation
replab.Rep
Constructs the Klein Four-Group
This corresponds to the symmetry group of a non-square rectangle, and corresponds to the direct product S2 x S2
.
The Klein four-group as a permutation gorup
Returns the reduced stabilizer chain corresponding to this permutation group in lexicographic order
No base points are redundant.
Stabilizer chain
replab.bsgs.Chain
Returns the simultaneous action of permutations on both rows and columns of square matrices
Acts on matrices of size self.domainSize x self.domainSize
The matrix action
replab.Action
Finds the permutations that send a matrix to another matrix
We return the set of p
such that T == S(inverse(p),inverse(p))
or S == T(p,p)
.
We use this notation as the left action of p
on a matrix S
is given by S(inverse(p),inverse(p))
.
S (double(1,domainSize)
) – Source matrix
T (double(1,domainSize)
) – Target matrix
SStabilizer (PermutationGroup
or []
, optional) – Stabilizer of S
TStabilizer (PermutationGroup
or []
, optional) – Stabilizer of T
The set of permutations {p}
such that T == S(inverse(p),inverse(p))
; or []
if no element found
Returns the permutation subgroup that leaves a given matrix invariant by joint permutation of its rows and columns
Example
>>> S4 = replab.S(4);
>>> A = [1 1 0 1; 1 1 1 0; 0 1 1 1; 1 0 1 1]; % adjacency matrix of the square
>>> G = S4.matrixStabilizer(A);
>>> G.order == 8 % is the dihedral group of order 8
1
matrix (double(domainSize,domainSize)
) – Matrix to stabilize under permutation
The subgroup of this group such that every element g
satisfies matrix(g,g) == matrix
Returns the natural action of elements of this group on its domain
This group natural domain is the set of integers {1..domainSize}
The natural action
replab.Action
Returns the natural permutation representation of this permutation group
The (real) natural permutation representation
replab.Rep
Constructs a nontrivial permutation group from the given generators
Example
>>> G = replab.PermutationGroup.of([2 3 4 1], [4 3 2 1]);
>>> G.order
8
The generators of the group can be named by preceding them all by a charstring:
Example
>>> G = replab.PermutationGroup.of('r', [2 3 4 1], 's', [4 3 2 1]);
>>> G.order
8
>>> G.factorizeWord([3 4 1 2])
'r^2'
This method cannot construct trivial groups without any generators. In that case, use the constructor:
Example
>>> generators = {};
>>> domainSize = 4;
>>> G = replab.PermutationGroup(domainSize, generators);
>>> G.order
1
varargin (cell(1,*) of permutation
) – Group generators
The permutation group given as the closure of the generators
Returns the partition of the domain into orbits under this group
Permutation group orbits are also called domains of transitivity, see https://www.encyclopediaofmath.org/index.php/Transitive_group
The orbit partition
Computes the subgroup that leaves the given ordered partition invariant
The subgroup maps every block of the partition to itself under permutation of the domain elements.
Example
>>> S4 = replab.S(4);
>>> G = S4.orderedPartitionStabilizer(replab.Partition.fromVector([1 1 2 2]));
>>> G == S4.subgroup({[2 1 3 4] [1 2 4 3]})
1
partition (Partition
) – Ordered partition to leave invariant
The subgroup that stabilizes the ordered partition
Returns the stabilizer chain corresponding to this permutation group if it can be computed quickly
Constructs the group that permutes the given points
Essentially constructs the symmetric group of order |points|
.
n (integer
) – Domain size of the created group
points (integer(1,*)
) – Set of points being permuted
The permutation group
Returns the subgroup that stabilizes the given set pointwise
i.e. for this group G
, it returns H = {g \in G : g(i) = i, i \in set}
.
Example
>>> S4 = replab.S(4);
>>> G = S4.pointwiseStabilizer([1 2]);
>>> G.order == 2
1
set (integer(1,*)
) – The set to stabilize pointwise
The subgroup that stabilizes the set pointwise
Returns the subgroup that stabilizes the given set as a set
i.e. for this group G
, it returns H = {g \in G : g(set) = set}
Example
>>> G = replab.PermutationGroup.of([3 1 2 4], [1 4 2 3]);
>>> H = G.setwiseStabilizer([1 2]);
>>> H == replab.PermutationGroup.of([2 1 4 3])
1
Example
>>> G = replab.PermutationGroup.of([1,3,2,10,9,8,6,5,7,4], [1,4,3,2,5,6,7,8,9,10]);
>>> H = G.setwiseStabilizer([2 3]);
>>> H.order
10
set (integer(1,*)
) – The set to stabilize
The subgroup that stabilizes the set
Returns the sign representation of this permutation group
One dimensional sign representation of this group
Returns the subgroup that stabilizes a given point
Returns the standard representation of this permutation group
It is an abuse of terminology as the “standard representation” is the faithful \(n-1\) dimensional representation of the symmetric group acting on \(n\) elements; but we can reuse that subrepresentation on subgroups of the symmetric group.
It corresponds to the representation complementary to the
trivial representation with basis [1, 1, ..., 1]'
The (real) standard representation
Returns the symmetric group acting on a certain domain size
domainSize (integer
) – Domain size, must be >= 0
Symmetric group
Constructs the trivial permutation group acting on n
points
Example
>>> G = replab.PermutationGroup.trivial(4);
>>> G.order
1
n (integer
) – Domain size
Trivial group
Computes the subgroup that leaves the given unordered partition invariant
Example
>>> S4 = replab.S(4);
>>> G = S4.unorderedPartitionStabilizer(replab.Partition.fromVector([1 1 2 2]));
>>> G == S4.subgroup({[2 1 3 4] [3 4 1 2]})
1
partition (Partition
) – Unordered partition to leave invariant
The subgroup that stabilizes the unordered partition
Returns the action of permutations on column vectors
Acts on vectors of size domainSize
by permuting their coefficients
The vector action
replab.Action
Finds the lexicographic minimal vector under permutation of its coefficients by this group
Example
>>> n = 10;
>>> s = randi([-3 3], 1, n);
>>> G = replab.S(n);
>>> [sml, P] = G.vectorFindLexMinimal(s);
>>> all(sml == sort(s)) % lexmin using the symmetric group is simply a sort
1
>>> all(sml(P.representative) == s)
1
s (double(1,domainSize)
) – Vector to permute
sStabilizer (PermutationGroup
or []
, optional) – Stabilzier of s
sMinLex (double(1,domainSize):) – Minimal lexicographic representative of s
under permutation by this group
P (LeftCoset
) – Set of permutations p
such that sMinLex == s(inverse(p))
or s == sMinLex(p)
Finds the permutations that send a vector to another vector
We return the set of p
such that t == s(inverse(p))
or s == t(p)
.
We use this notation as the left action of p
on a list s
is given by s(inverse(p))
.
s (double(1,domainSize)
) – Source vector
t (double(1,domainSize)
) – Target vector
sStabilizer (PermutationGroup
or []
, optional) – Stabilizer of s
tStabilizer (PermutationGroup
or []
, optional) – Stabilizer of t
The set of permutations {p}
such that t == s(inverse(p))
; or []
if no element found
Returns the permutation subgroup that leaves a given vector invariant
vector (double(1,domainSize)
) – Vector to stabilize under permutation
The subgroup of this group leaving vector
invariant
Returns the wreath product of a compact group by this permutation group
See https://en.wikipedia.org/wiki/Wreath_product
Note that our notation is reversed compared to the Wikipedia page, the permutation group is on the left hand side, as our convention for semidirect product places the group acted upon on the right.
Note that the return type depends on the argument type:
if A
is a FiniteGroup
, the result will be a finite group too.
A (CompactGroup
) – The group whose copies are acted upon
A wreath product group
This class regroups functions that are useful when dealing with signed permutations.
Class members list
General
fromMatrix
– Returns the signed permutation corresponding to the given matrix representation or throws an error
fromPermutation
– Returns the signed permutation corresponding to the given permutation encoding
isSignedPermutationMatrix
– Returns true when “mat” is a signed permutation matrix, i.e. a monomial matrix with nonzero entries equal to +1 or -1
toMatrix
– Returns the signed permutation matrix corresponding to the given signed permutation
toPermutation
– Returns the permutation corresponding to the given signed permutation where the permutation acts on the list [-d,..,-1,1,..,d]
Inherited elements
No documentation
Returns the signed permutation corresponding to the given matrix representation or throws an error
Returns the signed permutation corresponding to the given permutation encoding
See toPermutation
Returns true when “mat” is a signed permutation matrix, i.e. a monomial matrix with nonzero entries equal to +1 or -1
Returns the signed permutation matrix corresponding to the given signed permutation
Such that matrix multiplication is compatible with composition of permutations, i.e. S.toMatrix(S.compose(x, y)) = S.toMatrix(x) * S.toMatrix(y) where S = SignedPermutations(domainSize)
Returns the permutation corresponding to the given signed permutation where the permutation acts on the list [-d,..,-1,1,..,d]
Bases: replab.gen.FiniteGroup
A base class for all signed permutation groups
Class members list
Properties
domainSize
– The integer \(d\) when this group acts on \(\{-d, .., -1, 1, .., d\}\)
generators
– Group generators
identity
– Monoid identity element
nice
– Nice object where computations are done
niceIsomorphism
– Order-preserving isomorphism from a group containing self
to a group containing nice
type
– Type of the contained elements
Prettyprinting
additionalFields
– Returns the name/value pairs corresponding to additional fields to be printed
disp
– Standard MATLAB/Octave display method
headerStr
– Tiny single line description of the current object type
hiddenFields
– Returns the names of the fields that are not printed as a row vector
longStr
– Multi-line description of the current object
shortStr
– Single line text description of the current object
Test helpers
assertEqv
– Compares two elements for equality
assertNotEqv
– Compares two elements for inequality
Sampling and equality test
Laws
check
– Checks the consistency of this object
checkAndContinue
– Checks the consistency of this object
laws
– Returns the laws that this object obeys
Property cache
cache
– Sets the value of the designated property in the cache
cached
– Returns the cached property if it exists, computing it if necessary
cachedOrDefault
– Returns the cached property if it exists, or the provided default value if it is unknown yet
cachedOrEmpty
– Returns the cached property if it exists, or []
if it is unknown yet
inCache
– Returns whether the value of the given property has already been computed
Unique ID
Monoid operations
areCommuting
– Returns whether the two given elements commute
compose
– Composes two monoid/group elements
composeAll
– Composes a sequence of monoid elements
composeN
– Computes the power of a given element by repeated squaring
isIdentity
– Tests if the given element is the identity
Morphisms
abstractIsomorphism
– Returns an isomorphism to an abstract group
automorphismGroup
– Returns the automorphism group of this group
commutingMorphismsMorphism
– Constructs a morphism from morphisms with commuting images
conjugatingAutomorphism
– Returns the morphism that corresponds to left conjugation by an element
findIsomorphism
– Finds an isomorphism from this finite group to another finite group, if it exists
findIsomorphisms
– Finds all the isomorphisms from this finite group to another finite group
findMorphisms
– Finds all the morphisms from this finite group to another finite group
innerAutomorphism
– Returns the inner automorphism given using conjugation by the given element
isIsomorphicTo
– Returns whether this group is isomorphic to another group
isMorphismByImages
– Checks whether the given images describe a group morphism
isomorphismByFunction
– Constructs an isomorphism to a finite group using an image function
isomorphismByFunctions
– Constructs a group isomorphism using preimage/image functions
isomorphismByImages
– Constructs an isomorphism to a group using images of generators
morphismByFunction
– Constructs a group morphism using an image function
morphismByImages
– Constructs a morphism to a group using images of generators
orderPreservingPermutationIsomorphism
– Returns an isomorphism from this group to a permutation group, which preserves element order
permutationIsomorphism
– Returns an isomorphism from this group to a permutation group
regularIsomorphism
– Returns an isomorphism from this group to a permutation group whose degree matches the order of this group
Group methods
commutator
– Returns the commutator of two group elements
composeFlat
– Returns the composition of elements from an array picked according to the given indices/letters
composeWithInverse
– Returns the composition of an element with the inverse of another element
inverse
– Computes the inverse of an element
leftConjugate
– Returns the left conjugate of a group element
Elements
elementOrder
– Returns the order of a group element
smallGeneratingSet
– Returns a small set of elements generating the group
Relations to other sets
hasSameTypeAs
– Returns if this finite set has the same type as the given finite set
Image under isomorphism
imap
– Returns the image of this finite set under an isomorphism
General
SignedPermutationGroup
– Constructs a signed permutation group
compatibleWithNiceIsomorphism
– Returns whether the given finite isomorphism is compatible with this object isomorphism
mtimes
–
of
– Constructs a nontrivial signed permutation group from the given generators
signedSymmetric
– Creates the signed symmetric group of a given degree
Representations
commutingRepsRep
– Constructs a representation from commuting representations
directSumRep
– Computes the direct sum of representations on this group
permutationRep
– Constructs a permutation representation of this group
regularRep
– Returns the left regular representation of this group
repByImages
– Constructs a finite dimensional representation of this group from preimages/images pairs
signedPermutationRep
– Returns a real signed permutation representation of this group
tensorRep
– Computes the tensor product of representations
trivialRep
– Returns the trivial representation of this group on a finite dimensional vector space
Group construction
directPower
– Returns the direct product of this group with itself a number of times
directProduct
– Returns the direct product of groups
semidirectProduct
– Describes an external semidirect product of groups
Group properties
abelianInvariants
– Returns the group abelian invariants
exponent
– Returns the group exponent
fastRecognize
– Attempts to recognize this group in the standard atlas
hasReconstruction
– Returns whether the group has a “reconstruction”
isCommutative
– Returns whether this group is commutative
isCyclic
– Returns whether this group is a cyclic group
isSimple
– Returns whether this group is simple
isTrivial
– Tests whether this group is trivial
knownOrder
– Returns whether the order of this group has already been computed
maximalTorusDimension
– Returns, if available, the dimension of the maximal torus contained in the connected component of this group
order
– Returns the group order
presentation
– Returns a presentation of this group as a string
recognize
– Attempts to recognize this group in the standard atlas
reconstruction
– Returns a reconstruction of the group used to speed up group averaging
Isomorphic groups
abstractGroup
– Returns an abstract group isomorphic to this finite gorup
permutationGroup
– Returns the permutation group isomorphic to this finite group
Subgroups
center
– Returns the center of this group
centralizer
– Returns the centralizer of the given object in this group
derivedSeries
– Returns the derived series of this group
derivedSubgroup
– Computes the derived subgroup of this group
intersection
– Computes the intersection of two groups
randomProperSubgroup
– Constructs a random proper subgroup of this group
randomSubgroup
– Constructs a random subgroup of this group
subgroup
– Constructs a subgroup of the current group from elements
subgroupWithGenerators
– Constructs a subgroup of the current group from generators
trivialSubgroup
– Returns the trivial subgroup of this group
Conjugacy classes and character table
characterTable
– Alias for complexCharacterTable
complexCharacterTable
– Returns the complex character table of this group
conjugacyClass
– Returns the conjugacy class corresponding to the given element
conjugacyClasses
– Returns the conjugacy classes of this group
findLeftConjugations
– Returns the set of all elements that left conjugates an element to another element
knownComplexCharacterTable
– Returns whether the complex character table of this group is already known or computed
knownRealCharacterTable
– Returns whether the real character table of this group is already known or computed
realCharacterTable
– Returns the real character table of this group
setComplexCharacterTable
– Sets the complex character table of this group
setConjugacyClasses
– Sets the conjugacy classes of this group
setRealCharacterTable
– Sets the real character table of this group
Construction of groups
closure
– Computes the group generated by the elements of this group and other elements/groups
leftConjugateGroup
– Returns the left conjugate of the current group by the given element
normalClosure
– Computes the normal closure of an object in the closure of this group and this object
withGeneratorNames
– Returns a modified copy of this finite group with renamed generators
Cosets
doubleCoset
– Returns a double coset
doubleCosets
– Returns the set of double cosets in this group by the given groups
isNormalizedBy
– Returns whether a given element/group normalizes this group
leftCoset
– Returns a left coset
leftCosets
– Returns the set of left cosets of the given subgroup in this group
mldivide
– Shorthand for rightCosets
mrdivide
– Shorthand for leftCosets
normalCoset
– Returns a normal coset
normalCosets
– Returns the set of normal cosets of the given subgroup in this group
rightCoset
– Returns a right coset
rightCosets
– Returns the set of right cosets of the given subgroup in this group
Generators-related methods
factorizeFlat
– Factorizes an element or a coset as a flat sequence in the generators
factorizeWord
– Factorizes an element or a coset as a word in the generators
flatToWord
– Prints a word described by letters into a string
generator
– Returns the i-th group generator
generatorInverse
– Returns the inverse of the i-th group generator
generatorNames
– Returns the names of the group generators
imageFlat
– Returns the image of a flat word in the group generators
imageWord
– Computes the image of a word in the group generators
knownRelators
– Returns whether the relators of this group are known
nGenerators
– Returns the number of group generators
relatorsFlat
– Returns the relators of a presentation of this finite group in the flat format
relatorsWord
– Returns the relators of a presentation of this finite group
wordToFlat
– Parses a word into generator letters
Relations to other groups
isNormalSubgroupOf
– Returns whether this group is a normal subgroup of another group
isSubgroupOf
– Returns whether this group is a subgroup of another group
Bugfix for Octave method selection
contains
– Tests whether this set contains the given element
elements
– Returns a cell array containing all the elements of this set
elementsSequence
– Returns a sequence corresponding to this set
isequal
– Tests finite sets for equality
nElements
– Returns the size of this set
representative
– Returns the minimal element of this set under the type ordering
setProduct
– Returns a description of this set as a product of sets
Signed permutation methods
elementPermutationPart
– Returns the permutation part of a signed permutation, by taking image absolute values
permutationPart
– Returns the permutation part of the current group
Actions
matrixAction
– Returns the action of elements of this group on d x d matrices
naturalAction
– Returns the action of elements of this group on {-d..-1 1..d}
vectorAction
– Returns the action of elements of this group on vectors
Representation construction
naturalRep
– Natural representation on R^d of signed permutations on integers -d..-1, 1..d
Inherited elements
Documentation in replab.FiniteGroup.abelianInvariants()
Documentation in replab.FiniteGroup.abstractGroup()
Documentation in replab.FiniteGroup.abstractIsomorphism()
Documentation in replab.Str.additionalFields()
Documentation in replab.Monoid.areCommuting()
Documentation in replab.Domain.assertEqv()
Documentation in replab.Domain.assertNotEqv()
Documentation in replab.Group.automorphismGroup()
Documentation in replab.Obj.cache()
Documentation in replab.Obj.cached()
Documentation in replab.Obj.cachedOrDefault()
Documentation in replab.Obj.cachedOrEmpty()
Documentation in replab.FiniteGroup.center()
Documentation in replab.FiniteGroup.centralizer()
Documentation in replab.FiniteGroup.characterTable()
Documentation in replab.Obj.check()
Documentation in replab.Obj.checkAndContinue()
Documentation in replab.FiniteGroup.closure()
Documentation in replab.Group.commutator()
Documentation in replab.Group.commutingMorphismsMorphism()
Documentation in replab.CompactGroup.commutingRepsRep()
Documentation in replab.gen.FiniteSet.compatibleWithNiceIsomorphism()
Documentation in replab.FiniteGroup.complexCharacterTable()
Documentation in replab.Monoid.compose()
Documentation in replab.Monoid.composeAll()
Documentation in replab.Group.composeFlat()
Documentation in replab.Monoid.composeN()
Documentation in replab.Group.composeWithInverse()
Documentation in replab.FiniteGroup.conjugacyClass()
Documentation in replab.FiniteGroup.conjugacyClasses()
Documentation in replab.FiniteGroup.conjugatingAutomorphism()
Documentation in replab.FiniteSet.contains()
Documentation in replab.FiniteGroup.derivedSeries()
Documentation in replab.FiniteGroup.derivedSubgroup()
Documentation in replab.CompactGroup.directPower()
Documentation in replab.CompactGroup.directProduct()
Documentation in replab.CompactGroup.directSumRep()
Documentation in replab.Str.disp()
Documentation in replab.FiniteGroup.doubleCoset()
Documentation in replab.FiniteGroup.doubleCosets()
Documentation in replab.FiniteGroup.elementOrder()
Documentation in replab.FiniteSet.elements()
Documentation in replab.FiniteSet.elementsSequence()
Documentation in replab.Obj.eq()
Documentation in replab.Domain.eqv()
Documentation in replab.FiniteGroup.exponent()
Documentation in replab.FiniteGroup.factorizeFlat()
Documentation in replab.FiniteGroup.factorizeWord()
Documentation in replab.FiniteGroup.fastRecognize()
Documentation in replab.FiniteGroup.findIsomorphism()
Documentation in replab.FiniteGroup.findIsomorphisms()
Documentation in replab.FiniteGroup.findLeftConjugations()
Documentation in replab.FiniteGroup.findMorphisms()
Documentation in replab.FiniteGroup.flatToWord()
Documentation in replab.FiniteGroup.generator()
Documentation in replab.FiniteGroup.generatorInverse()
Documentation in replab.FiniteGroup.generatorNames()
Documentation in replab.FiniteGroup.generators
Documentation in replab.CompactGroup.hasReconstruction()
Documentation in replab.FiniteSet.hasSameTypeAs()
Documentation in replab.Str.headerStr()
Documentation in replab.Str.hiddenFields()
Documentation in replab.Obj.id()
Documentation in replab.Monoid.identity
Documentation in replab.FiniteGroup.imageFlat()
Documentation in replab.FiniteGroup.imageWord()
Documentation in replab.FiniteSet.imap()
Documentation in replab.Obj.inCache()
Documentation in replab.Group.innerAutomorphism()
Documentation in replab.FiniteGroup.intersection()
Documentation in replab.Group.inverse()
Documentation in replab.FiniteGroup.isCommutative()
Documentation in replab.FiniteGroup.isCyclic()
Documentation in replab.Monoid.isIdentity()
Documentation in replab.FiniteGroup.isIsomorphicTo()
Documentation in replab.FiniteGroup.isMorphismByImages()
Documentation in replab.FiniteGroup.isNormalSubgroupOf()
Documentation in replab.FiniteGroup.isNormalizedBy()
Documentation in replab.FiniteGroup.isSimple()
Documentation in replab.FiniteGroup.isSubgroupOf()
Documentation in replab.FiniteGroup.isTrivial()
Documentation in replab.FiniteSet.isequal()
Documentation in replab.FiniteGroup.isomorphismByFunction()
Documentation in replab.Group.isomorphismByFunctions()
Documentation in replab.FiniteGroup.isomorphismByImages()
Documentation in replab.FiniteGroup.knownComplexCharacterTable()
Documentation in replab.FiniteGroup.knownOrder()
Documentation in replab.FiniteGroup.knownRealCharacterTable()
Documentation in replab.FiniteGroup.knownRelators()
Documentation in replab.Obj.laws()
Documentation in replab.Group.leftConjugate()
Documentation in replab.FiniteGroup.leftConjugateGroup()
Documentation in replab.FiniteGroup.leftCoset()
Documentation in replab.FiniteGroup.leftCosets()
Documentation in replab.Str.longStr()
Documentation in replab.CompactGroup.maximalTorusDimension()
Documentation in replab.FiniteGroup.mldivide()
Documentation in replab.Group.morphismByFunction()
Documentation in replab.FiniteGroup.morphismByImages()
Documentation in replab.FiniteGroup.mrdivide()
No documentation
Documentation in replab.FiniteSet.nElements()
Documentation in replab.FiniteGroup.nGenerators()
Documentation in replab.Obj.ne()
Documentation in replab.gen.FiniteSet.nice
Documentation in replab.gen.FiniteSet.niceIsomorphism
Documentation in replab.FiniteGroup.normalClosure()
Documentation in replab.FiniteGroup.normalCoset()
Documentation in replab.FiniteGroup.normalCosets()
Documentation in replab.FiniteGroup.order()
Documentation in replab.FiniteGroup.orderPreservingPermutationIsomorphism()
Documentation in replab.FiniteGroup.permutationGroup()
Documentation in replab.FiniteGroup.permutationIsomorphism()
Documentation in replab.FiniteGroup.permutationRep()
Documentation in replab.FiniteGroup.presentation()
Documentation in replab.FiniteGroup.randomProperSubgroup()
Documentation in replab.FiniteGroup.randomSubgroup()
Documentation in replab.FiniteGroup.realCharacterTable()
Documentation in replab.FiniteGroup.recognize()
Documentation in replab.CompactGroup.reconstruction()
Documentation in replab.FiniteGroup.regularIsomorphism()
Documentation in replab.FiniteGroup.regularRep()
Documentation in replab.FiniteGroup.relatorsFlat()
Documentation in replab.FiniteGroup.relatorsWord()
Documentation in replab.FiniteGroup.repByImages()
Documentation in replab.FiniteSet.representative()
Documentation in replab.FiniteGroup.rightCoset()
Documentation in replab.FiniteGroup.rightCosets()
Documentation in replab.Domain.sample()
Documentation in replab.CompactGroup.semidirectProduct()
Documentation in replab.FiniteGroup.setComplexCharacterTable()
Documentation in replab.FiniteGroup.setConjugacyClasses()
Documentation in replab.FiniteSet.setProduct()
Documentation in replab.FiniteGroup.setRealCharacterTable()
Documentation in replab.Str.shortStr()
Documentation in replab.FiniteGroup.signedPermutationRep()
Documentation in replab.FiniteGroup.smallGeneratingSet()
Documentation in replab.FiniteGroup.subgroup()
Documentation in replab.FiniteGroup.subgroupWithGenerators()
Documentation in replab.CompactGroup.tensorRep()
Documentation in replab.CompactGroup.trivialRep()
Documentation in replab.FiniteGroup.trivialSubgroup()
Documentation in replab.FiniteSet.type
Documentation in replab.FiniteGroup.withGeneratorNames()
Documentation in replab.FiniteGroup.wordToFlat()
The integer \(d\) when this group acts on \(\{-d, .., -1, 1, .., d\}\)
integer
Constructs a signed permutation group
Additional keyword arguments (type
, nice
and niceIsomorphism
) are used internally
but are not part of the public API.
domainSize (integer
) – Domain size of this permutation group
generators (cell(1,*) of integer(1,*)
) – Group generators
generatorNames – Names of the generators
order – Order of the group
relators – Relators given either in word or letter format
cell(1,*) of charstring
vpi, optional
cell(1,*) of charstring
Returns the permutation part of a signed permutation, by taking image absolute values
Computes the permutation p that acts on 1…domainSize as p(i) = abs(g(i))
g (signed permutation
) – Signed permutation
The permutation part of g
permutation
Returns the action of elements of this group on d x d matrices
Note that d = self.domainSize, and this acts by simultaneous permutations of their rows and columns and flipping their signs
Returns the action of elements of this group on {-d..-1 1..d}
Here, d is self.domainSize
Natural representation on R^d of signed permutations on integers -d..-1, 1..d
Constructs a nontrivial signed permutation group from the given generators
Example
>>> s = [-1 -2 -3 -4];
>>> i = [2 -1 4 -3];
>>> j = [3 -4 -1 2];
>>> Q = replab.SignedPermutationGroup.of(s, i, j);
>>> Q.order == 8
1
The generators of the group can be named by preceding them all by a charstring:
Example
>>> s = [-1 -2 -3 -4];
>>> i = [2 -1 4 -3];
>>> j = [3 -4 -1 2];
>>> Q = replab.SignedPermutationGroup.of('s', s, 'i', i, 'j', j);
>>> Q.order == 8
1
This method cannot construct trivial groups without any generators. In that case, use the constructor:
Example
>>> generators = {};
>>> domainSize = 4;
>>> G = replab.SignedPermutationGroup(domainSize, generators);
>>> G.order
1
varargin (cell(1,*) of signed permutations
) – Group generators, pos
The signed permutation group given as the closure of the generators
Returns the permutation part of the current group
Corresponds to the group image under the homomorphism elementPermutationPart
.
The corresponding permutation group
replab.PermutationGroup
Creates the signed symmetric group of a given degree
n (integer
) – Degree of the signed symmetric group
The signed symmetric group of degree n
Returns the action of elements of this group on vectors
Vectors are (self.domainSize)-dimensional vectors, and this permutes their coefficients and flips their signs