Abstract groups are defined using a presentation, without direct reference to a concrete realization. They are thus used when user-defined groups are recognized.
AbstractGroup
is a finite group whose elements are written as words composed of products of generators.
Atlas
is the infrastructure that recognizes groups. In particular, it is used to tip the user of the
type of the group they just constructed. It is also used in exact decompositions, to retrieve the character
table of a particular finite group.
AtlasEntry
contains a sketch of the structure of a finite group known by RepLAB. It is used to speed up
the recognition process.
Bases: replab.gen.FiniteGroup
Finite group defined using a presentation: a set of generators and a set of relations among generators
The name of generator always start with a letter (a-z or A-Z), and then contain either letters (a-z or A-Z), digits (0-9) or underscores. Words in the generators are strings (charstring) containing generators separated by spaces, that sequence being understood as a product of generators.
In a word, generators can be taken to an integer power, using the syntax x^n
where x
is the name of a generator
and n
is an integer. In the word syntax, we optionally accept explicit multiplication operators (*
),
division operators (then x/y
is understood as x y^-1
), parenthesis, and commutators [x, y] = x^-1 y^-1 x y
.
The abstract group is defined by a set of relations, that define equivalence relations between words. For example,
a cyclic group is defined by the generator x
and the relation x^n = 1
where n
is the order of the group.
Then we deduce the relations x^(n+m) = x^m
and that x^-m = x^(n-m)
for any integer m
.
Informally, the abstract group is the “largest” group with the sets of generators subject to these relations. Note
that RepLAB rewrites all relations as lhs = 1
, and those left hand sides are named “relators”.
See https://en.wikipedia.org/wiki/Presentation_of_a_group for a detailed discussion.
Internally, RepLAB computes a realization of the abstract group as a permutation group, and delegates the computations to that permutation group.
Example
>>> [G, x] = replab.AbstractGroup.fromPresentation('< x | x^3 = 1 >');
>>> x
'x'
>>> G.compose(x, x)
'x^2'
>>> G.order
3
Example
>>> G = replab.AbstractGroup({'x'}, {'x^3'});
>>> G.order
3
Abstract groups can also be created by isomorphisms from an explicit group.
Example
>>> S3 = replab.S(3);
>>> G = S3.withGeneratorNames({'s', 't'});
>>> f = G.abstractIsomorphism;
>>> f.imageElement([2 3 1])
's'
Class members list
Properties
generators
– Group generators
identity
– Monoid identity element
inAtlas
– Whether this group is already part of the atlas
name
– Group name
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
AbstractGroup
– Creates an abstract group from generator names and relators
compatibleWithNiceIsomorphism
– Returns whether the given finite isomorphism is compatible with this object isomorphism
fromPresentation
– Creates an abstract group from a presentation string
mtimes
–
simplify
– Attempts to simplify the given word
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
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()
Whether this group is already part of the atlas
logical
Group name
charstring
Creates an abstract group from generator names and relators
generatorNames (cell(1,*) of charstring
) – Generator names
relators (cell(1,*) of charstring, optional
) – Relators
name – Group name, optional
order – Group order
permutationGenerators – Realization of the generators using permutations
inAtlas – Whether this group is part of the atlas
charstring, optional
integer, optional
cell(1,*) of permutation
logical, optional
Creates an abstract group from a presentation string
Returns the finite group generators as additional output arguments.
Additional arguments are passed to the AbstractGroup
constructor.
Example
>>> [G, x] = replab.AbstractGroup.fromPresentation('< x | x^3 = 1 >');
>>> [G, x, y] = replab.AbstractGroup.fromPresentation('< x, y | x^3 = y^2 = x y x y^-1 = 1 >');
str (charstring
) – Single-line description string
The parsed abstract group
Attempts to simplify the given word
word (charstring
) – Word to simplify
Simplified word
charstring
An atlas of finite groups
Class members list
General
computeAndAdd
– Computes the irreps of the given group and write the corresponding JSON file to the atlas
read
–
recognize
– Attempts to identify the given group
Inherited elements
No documentation
Computes the irreps of the given group and write the corresponding JSON file to the atlas
If the group is already recognized by RepLAB, an error is thrown.
Note that the FiniteGroup.recognize
result is cached, so to be recognized,
the given group G
must be constructed again in user code for the new atlas
entry to be found.
G (FiniteGroup
) – Finite group not present in the atlas
Attempts to identify the given group
A result in case of positive identification; or []
if unrecognized.
replab.FiniteIsomorphism
or []
Bases: replab.Obj
Describes an Atlas entry available in the replab/atlas directory
Note: the JSON file must contain only ASCII characters; check if our parser replab.util.parseJSON
supports
escape sequences.
Class members list
Properties
derivedSeriesAbelianInvariants
– Abelian invariants of the group derived series
filename
– Filename, excluding path, including .json
extension
md5
– MD5 hash in hexadecimal notation, without spaces and letters uppercase
order
– Group order
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
General
canMatch
– Returns whether this atlas entry can match the given group
data
– Returns the parsed data
fromFile
– Constructs an AtlasEntry
from a JSON file
group
– Returns the group corresponding to this atlas entry
groupFromJSONData
– Computes the group stored in this entry from the known JSON data
json
– Returns the JSON data as text
match
– Attemps to match the given group to this group
Inherited elements
No documentation
Documentation in replab.Str.additionalFields()
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.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.Str.shortStr()
Abelian invariants of the group derived series
cell(1,*) of integer(1,*)
Filename, excluding path, including .json
extension
charstring
MD5 hash in hexadecimal notation, without spaces and letters uppercase
charstring
Group order
vpi
Returns whether this atlas entry can match the given group
Returns the parsed data
Parsed JSON data
struct or cell array
Constructs an AtlasEntry
from a JSON file
This method parses the JSON enough to read the group order and the abelian invariants. The group itself is constructed lazily when requested.
filename (charstring
) – Filename, excluding path but including the .json
extension
The parsed atlas entry
Returns the group corresponding to this atlas entry
Group
Computes the group stored in this entry from the known JSON data
Returns the JSON data as text
Data
charstring
Attemps to match the given group to this group
Returns, if it exists, the isomorphism from the stored atlas group to the given group
The isomorphism if it exists or []
FiniteIsomorphism
or []