Elements of finite groups all have a type described by a FiniteGroupType
.
For example, permutations acting on a certain domain, matrices of a given dimension; direct products of those.
FiniteGroupType
: A group of elements from which finite subgroups can be constructed.
TotalOrder
: RepLAB defines a total ordering on any finite group type.
FiniteGroup
: A group with a finite number of elements, is generated by a finite number of generators.
MatrixGroup
: A finite group of matrices whose coefficients are in the cyclotomic field (characteristic zero, includes the rational numbers)
Bases: replab.Group
, replab.TotalOrder
Describes a type of finite groups
It is a possibly infinite group, and this object is able to construct finite subgroups of itself.
It also defines a (somewhat arbitrarily chosen) total order used, for example, to define minimal canonical representatives of conjugacy classes and cosets.
Examples of group types include:
permutations of a given domain 1..n
(the set of such permutations is finite),
invertible matrices of a given size with coefficients in the cyclotomic field (the set of such matrices is not finite, but we assume that any explicitly constructed group is finite),
direct products of finite group types.
Note
For implementations purposes, there are several families of group types in RepLAB.
The first is replab.perm.PermutationGroupType
where computational group theory algorithms
are implemented and used directly.
The second is replab.gen.FiniteGroupType
, in which the constructed objects delegate all
computations to objects where the algorithms are actually implemented, through a
“nice isomorphism”.
For now, those two families are the only ones implemented. Natural extensions would be:
Implementing algorithms for solvable groups through the polycyclic presentation as in e.g. GAP System.
Implementing black box group algorithms, either through a naive enumeration approach (to validate existing algorithms), or through recent algorithms proposed for black box groups.
Implementing matrix groups through a BSGS approach using the action of matrices on vectors; possibly also through recent algorithms based on composition trees.
Class members list
Properties
identity
– Monoid identity element
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
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
Laws
check
– Checks the consistency of this object
checkAndContinue
– Checks the consistency of this object
laws
– Returns the laws that this object obeys
Unique ID
eq
– Equality test
id
– Returns the unique ID of this object (deprecated)
isequal
– Equality test
ne
– Non-equality test
Test helpers
assertEqv
– Compares two elements for equality
assertNotEqv
– Compares two elements for inequality
Sampling and 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
Comparison
compare
– Compares two elements of a domain
General
groupWithGenerators
– Constructs a group with the given generators
isSameTypeAs
– Tests whether this type is the same as another type
subgroupWithGenerators
– Constructs a subgroup of a given group with the given parameters
Sort algorithm
sort
– Returns a permutation that sorts the given array
Morphisms
automorphismGroup
– Returns the automorphism group of this group
commutingMorphismsMorphism
– Constructs a morphism from morphisms with commuting images
innerAutomorphism
– Returns the inner automorphism given using conjugation by the given element
isomorphismByFunctions
– Constructs a group isomorphism using preimage/image functions
morphismByFunction
– Constructs a group morphism using an image function
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
Inherited elements
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.Obj.check()
Documentation in replab.Obj.checkAndContinue()
Documentation in replab.Group.commutator()
Documentation in replab.Group.commutingMorphismsMorphism()
Documentation in replab.TotalOrder.compare()
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.Str.disp()
Documentation in replab.Obj.eq()
Documentation in replab.Domain.eqv()
Documentation in replab.Str.headerStr()
Documentation in replab.Str.hiddenFields()
Documentation in replab.Obj.id()
Documentation in replab.Monoid.identity
Documentation in replab.Obj.inCache()
Documentation in replab.Group.innerAutomorphism()
Documentation in replab.Group.inverse()
Documentation in replab.Monoid.isIdentity()
Documentation in replab.Obj.isequal()
Documentation in replab.Group.isomorphismByFunctions()
Documentation in replab.Obj.laws()
Documentation in replab.Group.leftConjugate()
Documentation in replab.Str.longStr()
Documentation in replab.Group.morphismByFunction()
Documentation in replab.Obj.ne()
Documentation in replab.Domain.sample()
Documentation in replab.Str.shortStr()
Documentation in replab.TotalOrder.sort()
Constructs a group with the given generators
generators (cell(1,*) of group elements
) – Group generators
generatorNames – Names of the generators
order – Group order
relators – Relators
cell(1,*) of charstring, optional
vpi or integer, optional
cell(1,*) of charstring or integer(1,*), optional
Constructed group
Tests whether this type is the same as another type
otherType (FiniteGroupType
) – Other type to test with
True if the types are the same
logical
Constructs a subgroup of a given group with the given parameters
group (FiniteGroup
) – Finite group whose subgroup we are constructing
generators (cell(1,*) of group elements
) – Subgroup generators
generatorNames – Names of the generators
order – Group order
relators – Relators
cell(1,*) of charstring
vpi or integer
cell(1,*) of charstring or integer(1,*)
Constructed group
Bases: replab.Domain
Describes a domain equipped with a total order
Class members list
Properties
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
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
Laws
check
– Checks the consistency of this object
checkAndContinue
– Checks the consistency of this object
laws
– Returns the laws that this object obeys
Unique ID
eq
– Equality test
id
– Returns the unique ID of this object (deprecated)
isequal
– Equality test
ne
– Non-equality test
Test helpers
assertEqv
– Compares two elements for equality
assertNotEqv
– Compares two elements for inequality
Sampling and equality test
Comparison
compare
– Compares two elements of a domain
Sort algorithm
sort
– Returns a permutation that sorts the given array
Inherited elements
Documentation in replab.Str.additionalFields()
Documentation in replab.Domain.assertEqv()
Documentation in replab.Domain.assertNotEqv()
Documentation in replab.Obj.cache()
Documentation in replab.Obj.cached()
Documentation in replab.Obj.cachedOrDefault()
Documentation in replab.Obj.cachedOrEmpty()
Documentation in replab.Obj.check()
Documentation in replab.Obj.checkAndContinue()
Documentation in replab.Str.disp()
Documentation in replab.Obj.eq()
Documentation in replab.Domain.eqv()
Documentation in replab.Str.headerStr()
Documentation in replab.Str.hiddenFields()
Documentation in replab.Obj.id()
Documentation in replab.Obj.inCache()
Documentation in replab.Obj.isequal()
Documentation in replab.Obj.laws()
Documentation in replab.Str.longStr()
Documentation in replab.Obj.ne()
Documentation in replab.Domain.sample()
Documentation in replab.Str.shortStr()
Compares two elements of a domain
The method returns:
-1
if x < y
0
if x == y
1
if x > y
x (element
) – First element
y (element
) – Second element
Result of comparison
-1,0,1
Returns a permutation that sorts the given array
Returns a permutation I
such that array(I)
is sorted.
array (cell(1,*) of elements of this domain
) – Array to sort
Permutation that sorts the array
integer(1,*)
Bases: replab.CompactGroup
, replab.FiniteSet
Describes a group with a finite number of elements
A finite group is generated by a finite set of generators
.
Groups can be compared for equality using the ==
operator.
RepLAB implements group algorithms optimized for permutation groups using the BSGS (base and strong generating set) construction.
Generators and equality
The generating set of a group is a property of the group, and is used, for example:
to factor a group element as a word in the generators,
as the default preimages set for representation/morphism construction,
to construct an abstract form of the group (see relatorsWord
).
However, groups that differ only by their generators are equal as sets. Thus, two groups that are equal under ==
can nevertheless return different values for the methods that work with the group generators.
For display purposes, and to describe group elements as words in the generators, the group generators have
names generatorNames
. Again, groups that differ by the names of their generators are considered mathematically equal.
The exception is AbstractGroup
because the generator names are used in the group elements themselves.
Finite group types
Each finite group has a type (FiniteGroupType
), that describes the most general group embedding its elements.
The following are finite group types:
Permutations acting on 1 .. n
(see PermutationGroup
)
Signed permutations acting on +/- 1 .. n
(see SignedPermutationGroup
)
Cyclotomic matrices of a given size (note: we restrict the corresponding matrix groups to the finite ones)
Product groups of the above (direct, semidirect, wreath)
Finite group methods such as contains
can be called with arguments from the group type.
Types can be compared with the ==
operator.
Implementations of finite groups
FiniteGroup
has two main subclasses:
PermutationGroup
, where all the methods are implemented directly using algorithms based on the BSGS construction,
replab.gen.FiniteGroup
, which delegate the computations to another group type using an isomorphism.
As of July 2021, generic group implementations delegate computations to permutation groups, but this could evolve in the future.
Currently, some delegations of computations assume that the destination group is a permutation group, which is why
we have permutationGroup
and permutationIsomorphism
methods on finite groups.
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
mtimes
–
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
Inherited elements
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.Obj.check()
Documentation in replab.Obj.checkAndContinue()
Documentation in replab.Group.commutator()
Documentation in replab.Group.commutingMorphismsMorphism()
Documentation in replab.CompactGroup.commutingRepsRep()
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.FiniteSet.contains()
Documentation in replab.CompactGroup.directPower()
Documentation in replab.CompactGroup.directProduct()
Documentation in replab.CompactGroup.directSumRep()
Documentation in replab.Str.disp()
Documentation in replab.FiniteSet.elements()
Documentation in replab.FiniteSet.elementsSequence()
Documentation in replab.Obj.eq()
Documentation in replab.Domain.eqv()
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.FiniteSet.imap()
Documentation in replab.Obj.inCache()
Documentation in replab.Group.innerAutomorphism()
Documentation in replab.Group.inverse()
Documentation in replab.Monoid.isIdentity()
Documentation in replab.FiniteSet.isequal()
Documentation in replab.Group.isomorphismByFunctions()
Documentation in replab.Obj.laws()
Documentation in replab.Group.leftConjugate()
Documentation in replab.Str.longStr()
Documentation in replab.CompactGroup.maximalTorusDimension()
Documentation in replab.Group.morphismByFunction()
No documentation
Documentation in replab.FiniteSet.nElements()
Documentation in replab.Obj.ne()
Documentation in replab.CompactGroup.reconstruction()
Documentation in replab.FiniteSet.representative()
Documentation in replab.Domain.sample()
Documentation in replab.CompactGroup.semidirectProduct()
Documentation in replab.FiniteSet.setProduct()
Documentation in replab.Str.shortStr()
Documentation in replab.CompactGroup.tensorRep()
Documentation in replab.CompactGroup.trivialRep()
Documentation in replab.FiniteSet.type
Returns the group abelian invariants
It computes the decomposition of the factor group of this group by its derived subgroup (which is abelian), and returns the primary decomposition of that abelian group.
The abelian invariants are sorted in weakly increasing order.
Example
>>> G = replab.PermutationGroup.cyclic(100);
>>> isequal(G.abelianInvariants, [4 25])
1
Group abelian invariants
integer(1,*)
Returns an abstract group isomorphic to this finite gorup
The generators of the abstract group must be in one-to-one correspondance with the generators of this group, and
their names are taken from generatorNames
An abstract group isomorphic to this group
Returns an isomorphism to an abstract group
Example
>>> G = replab.S(3);
>>> f = G.abstractIsomorphism;
>>> f.imageElement([2 3 1])
'x1'
Isomorphism to an abstract group
Returns the center of this group
The center
Returns the centralizer of the given object in this group
Example
>>> G = replab.S(4);
>>> C = G.centralizer([2 3 1 4]);
>>> C == replab.PermutationGroup.of([2 3 1 4])
1
Example
>>> G = replab.S(4);
>>> C = G.centralizer(G.subgroup({[2 3 1 4]}));
>>> C == replab.PermutationGroup.of([2 3 1 4])
1
rhs (FiniteGroup
or group element) – Element to compute the centralizer of
The centralizer
Alias for complexCharacterTable
Complex character table
Computes the group generated by the elements of this group and other elements/groups
Arguments can be either elements of type
or FiniteGroup
of the same type.
Example
>>> G = replab.PermutationGroup.cyclic(3);
>>> S3 = replab.S(3);
>>> H = S3.subgroup({[2 1 3]});
>>> C = G.closure(H);
>>> C == S3
1
The closure
Returns the complex character table of this group
The complex character table is the standard, textbook character table of the group.
Note that randomized techniques are used to find group isomorphisms, and thus the output of this method may not be deterministic.
An error if the character table cannot be computed.
–
Complex character table
Returns the conjugacy class corresponding to the given element
g (element
) – Arbitrary group element
isCanonical (logical, optional): Whether the given g
is the class canonical representative, default: false
centralizer (FiniteGroup
, optional): Centralizer of the given element
The conjugacy class containing the given element
Returns the conjugacy classes of this group
Conjugacy classes
Returns the morphism that corresponds to left conjugation by an element
by (element of type
) – Element to conjugate the group with
Conjugating automorphism
Returns the derived series of this group
cell(1,*) of FiniteGroup
Computes the derived subgroup of this group
Example
>>> S4 = replab.S(4);
>>> S4.order
24
>>> D = S4.derivedSubgroup;
>>> D == replab.PermutationGroup.alternating(4)
1
The derived subgroup
Returns a double coset
Returns the set self * element * rightSubgroup
.
element (group element
) – Group element
rightSubgroup (FiniteGroup
) – Finite group
group – Group containing both self
and element
, computed if omitted
isCanonical – Whether the given element
is canonical w.r.t. to the group ordering
FiniteGroup
, optional
logical, optional
The constructed double coset
Returns the set of double cosets in this group by the given groups
Example
>>> n = 5;
>>> G = replab.S(n);
>>> H = G.pointwiseStabilizer(n);
>>> cosets = G.doubleCosets(H, H);
>>> cosets.nElements
2
Example
>>> G = replab.S(3);
>>> H = replab.PermutationGroup.of([2 1 3]);
>>> K = replab.PermutationGroup.of([3 2 1]);
>>> cosets = G.doubleCosets;
>>> cosets.nElements
2
leftSubgroup (replab.FiniteGroup
) – First subgroup
rightSubgroup (replab.FiniteGroup
) – Second subgroup
The set of double cosets
Returns the order of a group element
g (element of this group
) – Group element
The order of g
, i.e. the smallest o
such that g^o == identity
vpi
Returns the group exponent
The group exponent is the smallest integer e
such that g^e == identity
for all g
in G
.
The group exponent
vpi
Factorizes an element or a coset as a flat sequence in the generators
See imageFlat
for the convention.
If a coset is given, this method tries to pick a coset element with a short factorization.
elementOrCoset (element or coset of this group
) – Element or coset to factorize
Flat sequence of the word in the generators
integer(1,*)
Factorizes an element or a coset as a word in the generators
If a coset is given, this method tries to pick a coset element with a short factorization.
Example
>>> G = replab.S(3);
>>> G.factorizeWord([2 3 1])
'x1'
>>> H = G.withGeneratorNames({'s', 't'});
>>> H.factorizeWord([2 3 1])
's'
elementOrCoset (element or coset of this group
) – Element to factorize
Word representing the element
charstring
Attempts to recognize this group in the standard atlas
A result in case the group is identified; or []
if unrecognized.
FiniteIsomorphism
or []
Finds an isomorphism from this finite group to another finite group, if it exists
to (replab.FiniteGroup
) – Target of the isomorphism
The isomorphism if it exists, or an empty array
FiniteIsomorphism
or []
Finds all the isomorphisms from this finite group to another finite group
Example
>>> G = replab.S(6);
>>> m = G.findIsomorphisms(G, 'upToConjugation', true);
>>> length(m)
2
to (replab.FiniteGroup
) – Target of the isomorphism
upToConjugation – Whether to list morphisms up to conjugation of the image group, default: false
single – Whether to return maximum a single result, default: false
logical, optional
logical, optional
The isomorphisms
cell(1,*) of FiniteIsomorphism
Returns the set of all elements that left conjugates an element to another element
Let s
and t
be two elements of this group. This returns the set of all elements
b
such that t = b s b^-1
or t = leftConjugate(b, s)
.
When no such b
exists, this returns []
.
s (group element
) – Source element
t (group element
) – Target element
sCentralizer – Centralizer of s
in this group
tCentralizer – Centralizer of t
in this group
FiniteGroup
, optional
FiniteGroup
, optional
Set of all elements of this group that left conjugates s
to t
if it exists
replab.LeftCoset
or []
Finds all the morphisms from this finite group to another finite group
Example
>>> S3 = replab.S(3);
>>> S4 = replab.S(4);
>>> m = S4.findMorphisms(S3, 'upToConjugation', true, 'surjective', false);
>>> length(m)
3
to (replab.FiniteGroup
) – Target of the morphism
upToConjugation – Whether to list morphisms up to conjugation of the image group, default: false
surjective – Whether to consider only surjective morphisms (or epimorphisms), whose image span to
, default: false
single – Whether to return maximum a single result, default: false
logical, optional
logical, optional
logical, optional
The morphisms
cell(1,*) of FiniteMorphism
Prints a word described by letters into a string
letters (integer(1,*)
) – Letters composing the word
Word in the generators
charstring
Returns the i-th group generator
i (integer, charstring
) – Generator index or name
i-th group generator
element
Returns the inverse of the i-th group generator
i (integer, charstring
) – Generator index or name
Inverse of the i-th group generator
element
Returns the names of the group generators
Generator names
cell(1,*) of charstring
Returns the image of a flat word in the group generators
The letters take the values 1...nG
which represent the group generators, and also the values
-nG...-1
which represent the inverses of those generators.
letters (integer(1,*)
) – Letters composing the word.
element: Element of the group corresponding to the given word
Computes the image of a word in the group generators
Example
>>> G = replab.S(3);
>>> G.imageWord('x1')
2 3 1
word (charstring
) – Word written using mathematical notation
Element of the group corresponding to the given word
element
Computes the intersection of two groups
Example
>>> D12 = replab.PermutationGroup.of([1 6 5 4 3 2], [2 1 6 5 4 3]);
>>> G = replab.PermutationGroup.of([2 1 3 4 5 6], [2 3 4 5 1 6]);
>>> I = D12.intersection(G);
>>> I == replab.PermutationGroup.of([5 4 3 2 1 6])
1
G (replab.FiniteGroup
) – Group with the same type as this group
Subgroup representing the intersection
Returns whether this group is commutative
Returns whether this group is a cyclic group
Example
>>> C3 = replab.PermutationGroup.cyclic(3);
>>> C3.isCyclic
1
>>> C3_C3 = C3.directProduct(C3);
>>> C3_C3.isCommutative
1
>>> C3_C3.isCyclic
0
True if the group is cyclic
logical
Returns whether this group is isomorphic to another group
Example
>>> h1 = [2 1 3 4];
>>> h2 = [3 4 1 2];
>>> H = replab.PermutationGroup.of(h1, h2);
>>> D = replab.D(4);
>>> H.isIsomorphicTo(D)
1
target (replab.FiniteGroup
) – Finite group to test for isomorphism
Whether this group is isomorphic to the given group
logical
Checks whether the given images describe a group morphism
The calling convention of this method is the same as morphismByImages
, except that nChecks
is missing.
target (replab.Group
) – Target group
preimages – Preimages of the morphism which generate self
, defaults to self.generators
images – Images of the given preimages, defaults to target.generators
if target
is a FiniteGroup
cell(1, *) of self
elements
cell(1, *) of target
elements
True if the given images define a morphism
logical
Returns whether this group is a normal subgroup of another group
Example
>>> S3 = replab.S(3);
>>> A3 = replab.PermutationGroup.alternating(3);
>>> A3.isNormalSubgroupOf(S3)
1
Example
>>> S3 = replab.S(3);
>>> G = S3.subgroup({[2 1 3]});
>>> G.isNormalSubgroupOf(S3)
0
rhs (replab.FiniteGroup
) – Other group with the same type as this one
True if this group is a normal subgroup of rhs
logical
Returns whether a given element/group normalizes this group
This is true when element * group * == group * element
.
The same definition when element
is a group; then we ask that all this group elements satisfy that property.
element (group element or FiniteGroup
) – Group element or group
True if the given element/group normalizes this group
logical
Returns whether this group is simple
Example
>>> S5 = replab.S(5);
>>> S5.isSimple
0
>>> A5 = S5.derivedSubgroup;
>>> A5.isSimple
1
True if the group is simple
logical
Returns whether this group is a subgroup of another group
Example
>>> S3 = replab.S(3);
>>> G = S3.subgroup({[2 1 3]});
>>> G.isSubgroupOf(S3)
1
rhs (replab.FiniteGroup
) – Other group with the same type as this one
True if this group is a subgroup of rhs
logical
Tests whether this group is trivial
True if this group is trivial (i.e. has only one element)
logical
Constructs an isomorphism to a finite group using an image function
Due to the additional structure on target
, this method returns a FiniteIsomorphism
,
and does not need an explicit preimage function.
target (FiniteGroup
or FiniteGroupType
) – Finite group isomorphic to the present group
imageElementFun (function_handle
) – Function that computes the image of a source element
preimageElementFun – Function the computes the preimage of a target element
function_handle, optional
The constructed isomorphism
Constructs an isomorphism to a group using images of generators
target (FiniteGroup
or FiniteGroupType
) – Target of the isomorphism
preimages – Preimages of the isomorphism which generate self
, defaults to self.generators
images – Images of the given preimages, defaults to target.generators
imageElementFun – Image function, default: []
nChecks – Number of randomized image checks to perform, if inf
computes and verifies a presentation of self
cell(1, *) of self
elements
cell(1, *) of target
elements
function_handle or []
, optional
integer or inf
Returns whether the complex character table of this group is already known or computed
Whether the table is already computed
logical
Returns whether the order of this group has already been computed
True if the order is known
logical
Returns whether the real character table of this group is already known or computed
Whether the table is already computed
logical
Returns whether the relators of this group are known
True if the relators are known already
logical
Returns the left conjugate of the current group by the given element
res = self.leftConjugateGroup(by)
In particular, it ensures that
res.generator(i) = self.type.leftConjugate(by, self.generator(i))
by (element of type
) – Element to conjugate the group with
The conjugated group
Returns a left coset
Returns the set element * self
.
element (group element
) – Group element
group – Group containing both self
and element
, computed if omitted
isCanonical – Whether the given element
is canonical w.r.t. to the group ordering
FiniteGroup
, optional
logical, optional
The constructed right coset
Returns the set of left cosets of the given subgroup in this group
subgroup (replab.FiniteGroup
) – Subgroup of this group
Left cosets
Shorthand for rightCosets
Constructs a morphism to a group using images of generators
The type of the morphism depends on the type of target
:
if target
is a FiniteGroup
or a FiniteGroupType
, this method returns a FiniteMorphism
,
Example
>>> S4 = replab.S(4);
>>> m = S4.morphismByImages(replab.S(3), 'images', {[1 3 2] [3 2 1]});
>>> m.laws.checkSilent
1
target (Group
or FiniteGroup
) – Target of the morphism, the morphism image is a subgroup of this
preimages – Preimages of the morphism which generate self
, defaults to self.generators
images – Images of the given preimages, defaults to target.generators
if target
is a FiniteGroup
imageElementFun – Image function, default: []
nChecks – Number of randomized image checks to perform, if inf
computes and verifies a presentation of self
cell(1, *) of self
elements
cell(1, *) of target
elements
function_handle or []
, optional
integer or inf
The constructed morphism
Shorthand for leftCosets
Returns the number of group generators
Number of group generators
integer
Computes the normal closure of an object in the closure of this group and this object
Example
>>> S5 = replab.S(5);
>>> S4 = S5.subgroup({[2 3 4 1 5] [2 1 3 4 5]});
>>> nc = S4.normalClosure([1 2 4 5 3]); % demonstrates both syntaxes
>>> nc = S4.normalClosure(S5.subgroup({[1 2 4 5 3]}));
>>> nc == S5.subgroup({[1 2 4 5 3] [5 2 3 1 4] [2 5 3 4 1]})
1
Example
>>> S4 = replab.S(4);
>>> nc = S4.normalClosure(S4.subgroup({[2 3 1 4]}));
>>> nc == S4.subgroup({[2 3 1 4] [1 3 4 2]})
1
obj (FiniteGroup
or element of type
) – Group or element to compute the normal closure of
The normal closure of obj
in this group
Returns a normal coset
Returns the set element * self == self * element
.
element (group element
) – Group element
group – Group containing both self
and element
, computed if omitted
isCanonical – Whether the given element
is canonical w.r.t. to the group ordering
FiniteGroup
, optional
logical, optional
The constructed normal coset
Returns the set of normal cosets of the given subgroup in this group
subgroup (replab.FiniteGroup
) – Normal subgroup of this group
The set of normal cosets
Returns the group order
The group order
vpi
Returns an isomorphism from this group to a permutation group, which preserves element order
Isomorphism with replab.FiniteIsomorphism.preservesTypeOrder
set
Returns the permutation group isomorphic to this finite group
The generators of the permutation group are in one-to-one correspondance with the generators of this group.
This is the image of permutationIsomorphism
.
A permutation group isomorphic to this group
Returns an isomorphism from this group to a permutation group
Compared to orderPreservingPermutationIsomorphism
, this isomorphism may be more efficient to compute or use.
Isomorphism
Constructs a permutation representation of this group
The returned representation is real. Use replab.Rep.complexification
to obtain a complex representation.
Example
>>> C3 = replab.PermutationGroup.cyclic(3);
>>> rep = C3.permutationRep(3, 'preimages', {[2 3 1]}, 'images', {[3 1 2]});
>>> rep.dimension
3
dimension (integer
) – Dimension of the representation
preimages – Preimages of the representation map which generate self
, defaults to self.generators
images – Images of the generators as permutations of size dimension
cell(1,n) of self
elements, optional
cell(1,*) of permutations
The constructed group representation
Returns a presentation of this group as a string
Presentation
charstring
Constructs a random proper subgroup of this group
The call fails if no proper subgroup exists.
nSteps (integer, optional
) – How many steps of reduction to perform, default 1
A proper subgroup
Constructs a random subgroup of this group
Compared to randomProperSubgroup
, this method can return the trivial group or self
.
This method never fails.
A subgroup
Returns the real character table of this group
Note that randomized techniques are used to find group isomorphisms, and thus the output of this method may not be deterministic.
An error if the character table cannot be computed.
–
Real character table
Attempts to recognize this group in the standard atlas
A result in case the group is identified; or []
if unrecognized.
FiniteIsomorphism
or []
Returns an isomorphism from this group to a permutation group whose degree matches the order of this group
Isomorphism
Returns the left regular representation of this group
The left regular representation as a real permutation representation
Returns the relators of a presentation of this finite group in the flat format
See AbstractGroup
for a description of the presentation of a finite group
Relators in flat form
cell(1,*) of integer(1,*)
Returns the relators of a presentation of this finite group
Relators in word form
cell(1,*) of charstring
Constructs a finite dimensional representation of this group from preimages/images pairs
The preimages need to generate this group. If the preimages are omitted, they default to the generators of this group.
The images can either be exact, in which case they should be provided as cyclotomic
matrices,
or as double
matrices – the latter only if they have integer entries.
In the case of exact images, the keyword argument imagesErrorBound
can be omitted.
When images are exact, RepLAB has the freedom of performing matrix products containing an
arbitrary number of factors without loss of precision, and thus a wider range of algorithm
can be used. Also, the constructed representation can return exact images using rep.image(g, 'exact')
Otherwise, the provided images will be considered inexact. In that case, RepLAB uses a factorization
algorithm to decompose group elements as short words in the preimages. The keyword argument
imagesErrorBound
should be given as well; it corresponds to an upper bound on the error of the
matrix images in the Frobenius norm.
Either a single number can be provided, as an upper bound on all images in the provided set; or an individual
bound for each image. However, this error bound will be ignored for each image provided as an interval matrix.
If inexact floating-point images are provided but imagesErrorBound
is omitted, an ad-hoc error is
estimated and a warning is emitted.
If the images are exact, the isUnitary
keyword parameter can be omitted.
Example
>>> S4 = replab.S(4);
>>> m = S4.repByImages('R', 1, 'images', {-1 -1});
>>> m.laws.checkSilent
1
field ({'R', 'C'}
) – Whether the representation is real (R) or complex (C)
dimension (integer
) – Representation dimension
preimages – Preimages of the representation map which generate self
, defaults to self.generators
images – Images of the given preimages
imagesErrorBound – Error
isUnitary – Value of the constructed Rep.isUnitary
; a “true” value accelerates computations
isIrreducible – Value of the constructed Rep.isIrreducible
trivialDimension – Value of the constructed Rep.trivialDimension
frobeniusSchurIndicator – Value of the constructed Rep.frobeniusSchurIndicator
'H->R (divisionAlgebraName % ('R->C', 'C->R', 'H->C',
) – rep’, ‘’, optional): Name of the division algebra encoding this representation respects, default ''
cell(1,n) of self
elements, optional
cell(1,n) of double(d,d) or cyclotomic(d,d), may be sparse
double or double(1,d) or []
logical or []
, optional
logical or []
, optional
integer or []
, optional
integer or []
, optional
The constructed group representation
Returns a right coset
Returns the set self * element
.
element (group element
) – Group element
group – Group containing both self
and element
, computed if omitted
isCanonical – Whether the given element
is canonical w.r.t. to the group ordering
FiniteGroup
, optional
logical, optional
The constructed right coset
Returns the set of right cosets of the given subgroup in this group
subgroup (replab.FiniteGroup
) – Subgroup of this group
Right cosets
Sets the complex character table of this group
Throws an error if this method or complexCharacterTable
has already been called before.
table (ComplexCharacterTable
) – Complex character table
Sets the conjugacy classes of this group
Throws an error if this method or conjugacyClasses
has already been called before.
classes (ConjugacyClasses
) – Conjugacy classes
Sets the real character table of this group
Throws an error if this method or realCharacterTable
has already been called before.
table (RealCharacterTable
) – Complex character table
Returns a real signed permutation representation of this group
The returned representation is real. Use rep.complexification
to obtain a complex representation.
>>> S2 = replab.S(2);
>>> rep = S2.signedPermutationRep(1, 'preimages', {[2 1]}, 'images', {[-1]});
>>> rep.image([2 1])
-1
dimension – Dimension of the representation
preimages – Preimages of the representation map which generate self
, defaults to self.generators
images – Images of the generators as signed permutations of size dimension
cell(1,n) of self
elements, optional
cell(1,*) of signed permutations
The constructed group representation
Returns a small set of elements generating the group
Generating set
cell(1,*) of group elements
Constructs a subgroup of the current group from elements
The generators of the result are the given elements with the identity filtered out.
Example
>>> S5 = replab.S(5);
>>> G = S5.subgroup({[1 2 3 4 5]});
>>> isempty(G.generators)
1
elements (cell(1,*) of elements of this group
) – List of elements
generatorNames – Names of the generators
order – Group order
relators – Relators
cell(1,*) of charstring, optional
vpi or integer, optional
cell(1,*) of charstring or integer(1,*), optional
The subgroup generated by generators
Constructs a subgroup of the current group from generators
Guarantees that the constructed subgroup preserves the order of the generators. However, the given generators cannot contain the identity element.
Example
>>> S5 = replab.S(5);
>>> G = S5.subgroupWithGenerators({[2 3 4 5 1]});
>>> isequal(G.generators{1}, [2 3 4 5 1])
1
generators (cell(1,*) of elements of this group
) – List of generators, does not contain the identity
generatorNames – Names of the generators
order – Group order
relators – Relators
cell(1,*) of charstring, optional
vpi or integer, optional
cell(1,*) of charstring or integer(1,*), optional
The subgroup generated by generators
Returns the trivial subgroup of this group
The trivial subgroup
Returns a modified copy of this finite group with renamed generators
newNames (cell(1,*) of charstring
) – New generator names
Updated copy
Parses a word into generator letters
word (charstring
) – Word written using mathematical notation
Letters of the word
integer(1,*)
Bases: replab.gen.FiniteGroup
Finite group of matrices with coefficients in the cyclotomic field
The cyclotomic field includes the rational numbers, square roots of rational numbers, cosines and sines of fractions of pi and complex roots of unity.
The use of MatrixGroup
requires the availability of the Java Virtual Machine, as computations are done
in exact precision using a Scala/Java library.
RepLAB implements matrix groups by enumerating all their elements explicitly, which is adequate for groups with a few hundred elements.
Matrix groups are constructed by calling the constructor of MatrixGroup
as below, specifying the dimension and
the matrix generators.
Note that generators are specified in any way that could be passed to the cyclotomic
constructor,
which includes a string representation. However, one should not pass a floating-point inexact matrix
such as [1/sqrt(2), 1/sqrt(2); -1/sqrt(2), 1/sqrt(2)]
, because RepLAB is not able to guess the
exact representation of 0.7071...
then.
Example
>>> m1 = [0 1; 1 0]; % doctest: +cyclotomic
>>> m2 = '[1/sqrt(2), 1/sqrt(2); -1/sqrt(2), 1/sqrt(2)]';
>>> M = replab.MatrixGroup(2, {m1, m2});
>>> M.order
16
The natural representation of a matrix group is given by the matrix itself, see naturalRep
.
Class members list
Properties
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
MatrixGroup
– Constructs a finite matrix group
compatibleWithNiceIsomorphism
– Returns whether the given finite isomorphism is compatible with this object isomorphism
mtimes
–
Representations
commutingRepsRep
– Constructs a representation from commuting representations
directSumRep
– Computes the direct sum of representations on this group
naturalRep
– Returns the natural representation of this matrix 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
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()
Constructs a finite matrix group
Additional keyword arguments (type
, nice
and niceIsomorphism
) are used internally
but are not part of the public API.
matrixSize (integer
) – Siye of the matrices
generators (cell(1,*) of replab.cyclotomic(matrixSize,matrixSize)
) – 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 natural representation of this matrix group
The natural representation rho
has images rho(g) = g
.
Example
>>> M = replab.MatrixGroup(2, {[0 1; 1 0], '[1/sqrt(2), 1/sqrt(2); -1/sqrt(2), 1/sqrt(2)]'}); % doctest: +cyclotomic
>>> M.naturalRep.isIrreducible
1
field – Field over which to define the representation, default: ‘C’
{‘R’ or ‘C’}
The natural representation of this group