Group morphisms are used in RepLAB to relate groups to one another. For example, there is always a (trivial) injection map that embeds a subgroup into the group that contains it.
A morphism is simply a function between groups that preserve the multiplicative structure (\(f(x y) = f(x) f(y)\)). An isomorphism is an invertible (or bijective) morphism.
Isomorphisms are used in RepLAB to compute with finite groups, by translating the operations into an isomorphic permutation group.
Isomorphisms are also used when the user asks RepLAB to recognize a finite group (FiniteGroup.recognize
). RepLAB then returns the isomorphism from the abstract group to the user-defined group. Thus, the generators of the “platonic” abstract group can be identified as elements of the user-defined group.
Morphisms are used to describe how symmetry groups relate to one another in the convex optimization framework (see equiop
).
Morphism
is the most general class and a base for all the classes below.
FiniteMorphism
is a morphism between finite groups; in particular, it allows the computation of preimages.
Isomorphism
is a bijective morphism.
FiniteIsomorphism
is a bijective finite morphism.
Bases: replab.Obj
Describes a morphism between groups
If both groups are compact groups with a replab.CompactGroup.reconstruction
available, the torusMap
linear map
expresses the relationship between elements of the maximal torus of the source and the target.
More specifically, let s
be an element of the torus .source.reconstruction.source
, there is
a corresponding element t
of the torus .target.reconstruction.source
such that t = s * torusMap
.
Class members list
Properties
source
– Source group
target
– Target group
torusMap
– Relation between the tori of source and target if known
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
Morphism composition
andThen
– Composition of morphisms, the right hand side applied last
compose
– Composition of morphisms, the right hand side applied first
Images
imageElement
– Returns the image of the given source element
imageTorusElement
– Returns the image of an element of the source torus (used in optimizations)
Morphism creation
lambda
– Creates a morphism from an image function
Inherited elements
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()
Relation between the tori of source and target if known
integer(*,*) or []
Composition of morphisms, the right hand side applied last
Composition of morphisms, the right hand side applied first
Note: if both morphisms are finite morphisms, the resulting morphism is also a finite morphism. Note: if both morphisms are isomorphisms, the resulting morphism is also an isomorphism.
Returns the image of the given source element
Returns the image of an element of the source torus (used in optimizations)
s (element of source.reconstruction.source
) – Torus element of source
Torus element of target
element of target.reconstruction.source
)
Creates a morphism from an image function
Constructed morphism
Bases: replab.Morphism
Describes an isomorphism between groups
Class members list
Properties
source
– Source group
target
– Target group
torusMap
– Relation between the tori of source and target if known
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
Morphism composition
andThen
– Composition of morphisms, the right hand side applied last
compose
– Composition of morphisms, the right hand side applied first
inverse
–
Images
imageElement
– Returns the image of the given source element
imageTorusElement
– Returns the image of an element of the source torus (used in optimizations)
Morphism creation
lambda
– Creates a morphism from an image function
General
identity
– Returns the identity morphism from a group to itself
Preimages
preimageElement
– Returns an the preimage of an element of the range
Inherited elements
Documentation in replab.Str.additionalFields()
Documentation in replab.Morphism.andThen()
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.Morphism.compose()
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.Morphism.imageElement()
Documentation in replab.Morphism.imageTorusElement()
Documentation in replab.Obj.inCache()
No documentation
Documentation in replab.Obj.isequal()
Documentation in replab.Obj.laws()
Documentation in replab.Str.longStr()
Documentation in replab.Morphism.mtimes()
Documentation in replab.Obj.ne()
Documentation in replab.Str.shortStr()
Documentation in replab.Morphism.source
Documentation in replab.Morphism.target
Documentation in replab.Morphism.torusMap
Returns the identity morphism from a group to itself
group (Group
) – Group
The identity automorphism on the given group
Creates a morphism from an image function
Constructed isomorphism
Returns an the preimage of an element of the range
Returns the s
such that self.imageElement(s) == t
.
If the argument is not in the range of this isomorphism, the behavior is undefined.
Bases: replab.Morphism
Describes a morphism between finite groups
Class members list
Properties
source
– Source group
target
– Target group
torusMap
– Relation between the tori of source and target if known
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
Morphism composition
andThen
– Composition of morphisms, the right hand side applied last
compose
– Composition of morphisms, the right hand side applied first
Images
image
– Returns the image of this morphism
imageElement
– Returns the image of the given source element
imageGroup
– Computes the image of a group
imageTorusElement
– Returns the image of an element of the source torus (used in optimizations)
Preimages
kernel
– Returns the kernel of this morphism
preimageGroup
– Returns the group of source elements that map to a given group of target elements
preimageRepresentative
– Returns an arbitrary preimage of the given element
preimagesElement
– Returns the set of all source elements that map to a given element
Conversions
restrictedSource
– Returns a finite morphism with its source restricted
toIsomorphism
– If this morphism is injective, returns an isomorphism such that the target is restricted to the image
Inherited elements
Documentation in replab.Str.additionalFields()
Documentation in replab.Morphism.andThen()
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.Morphism.compose()
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.Morphism.imageElement()
Documentation in replab.Morphism.imageTorusElement()
Documentation in replab.Obj.inCache()
Documentation in replab.Obj.isequal()
Documentation in replab.Obj.laws()
Documentation in replab.Str.longStr()
Documentation in replab.Morphism.mtimes()
Documentation in replab.Obj.ne()
Documentation in replab.Str.shortStr()
Documentation in replab.Morphism.source
Documentation in replab.Morphism.target
Documentation in replab.Morphism.torusMap
Returns the image of this morphism
Computes the image of a group
S (FiniteGroup
) – Group to compute the image of, subgroup of source
Subgroup of target
Returns the kernel of this morphism
Maximal subgroup of source
with trivial image
Returns the group of source elements that map to a given group of target elements
T (FiniteGroup
) – Subgroup of target
Subgroup of source
Returns an arbitrary preimage of the given element
Returns an s
such that self.imageElement(s) == t
.
If the argument is not in the range of this morphism, the behavior is undefined.
Returns the set of all source elements that map to a given element
If the argument is not in the range of this morphism, the behavior is undefined.
Returns a finite morphism with its source restricted
Note that the return type may be more precise.
newSource (FiniteGroup
) – Subgroup of source
The restricted morphism
If this morphism is injective, returns an isomorphism such that the target is restricted to the image
The isomorphism
Bases: replab.Isomorphism
, replab.FiniteMorphism
Describes an isomorphism between finite groups
Class members list
Properties
source
– Source group
target
– Target group
torusMap
– Relation between the tori of source and target if known
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
Morphism composition
andThen
– Composition of morphisms, the right hand side applied last
compose
– Composition of morphisms, the right hand side applied first
inverse
–
Images
image
– Returns the image of this morphism
imageElement
– Returns the image of the given source element
imageGroup
– Computes the image of a group
imageTorusElement
– Returns the image of an element of the source torus (used in optimizations)
General
identity
– Returns the identity morphism from a finite group to itself
preservesTypeOrder
– Returns whether, for sure, this isomorphism preserves element ordering
Preimages
kernel
– Returns the kernel of this morphism
preimageElement
– Returns an the preimage of an element of the range
preimageGroup
– Returns the group of source elements that map to a given group of target elements
preimageRepresentative
– Returns an arbitrary preimage of the given element
preimagesElement
– Returns the set of all source elements that map to a given element
Conversions
restrictedSource
– Returns a finite morphism with its source restricted
toIsomorphism
– If this morphism is injective, returns an isomorphism such that the target is restricted to the image
Inherited elements
Documentation in replab.Str.additionalFields()
Documentation in replab.Morphism.andThen()
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.Morphism.compose()
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.FiniteMorphism.image()
Documentation in replab.Morphism.imageElement()
Documentation in replab.FiniteMorphism.imageGroup()
Documentation in replab.Morphism.imageTorusElement()
Documentation in replab.Obj.inCache()
No documentation
Documentation in replab.Obj.isequal()
Documentation in replab.FiniteMorphism.kernel()
Documentation in replab.Obj.laws()
Documentation in replab.Str.longStr()
Documentation in replab.Morphism.mtimes()
Documentation in replab.Obj.ne()
Documentation in replab.Isomorphism.preimageElement()
Documentation in replab.FiniteMorphism.preimageGroup()
Documentation in replab.FiniteMorphism.preimageRepresentative()
Documentation in replab.FiniteMorphism.preimagesElement()
Documentation in replab.FiniteMorphism.restrictedSource()
Documentation in replab.Str.shortStr()
Documentation in replab.Morphism.source
Documentation in replab.Morphism.target
Documentation in replab.FiniteMorphism.toIsomorphism()
Documentation in replab.Morphism.torusMap
Returns the identity morphism from a finite group to itself
group (FiniteGroup
) – Group
The identity automorphism on the given group
Returns whether, for sure, this isomorphism preserves element ordering
When this method returns true, we must have, for x
and y
in source
,
self.source.type.compare(x, y) == self.target.type.compare(self.imageElement(x), self.imageElement(y))
When this method returns false, it does not necessarily means that there exists a pair (x, y)
that violates the condition above. It simply means the order preservation is not known.
Whether, for sure, this isomorphism preserves element ordering
logical