Representation in RepLAB, whether they are exact or inexact, reducible or irreducible, are described by the Rep
base class.
Rep
is a real or complex representation of a compact group.
Some representations encode a division algebra using real or complex coefficients.
DivisionAlgebra
provides information about the division algebra encoding handled by RepLAB.
A particular type of representation is a representation of a finite group given by generator images.
RepByImages
is a real or complex representation described by the (matrix) images of the group generators.
Once a Rep
has been constructed, it can be decomposed into irreducible representations using the rep.decomposition
method.
SubRep
describes a subrepresentation of an existing representation. The instance can remember which
representation it splits (SubRep.parent
) and the change of basis maps (SubRep.injection
, SubRep.projection
).
Isotypic
are isotypic components, which group equivalent irreps present in a representation.
Irreducible
represents the decomposition of a representation into isotypic components.
Bases: replab.Obj
Describes a finite dimensional representation of a compact group
This class has properties that correspond to information that can be computed and cached
after the replab.Rep
instance is constructed, for example isUnitary
or trivialDimension
.
Notes
While we do not expect users to implement their own subclass of Rep
, to do
so only the map from group elements to matrix images need to be implemented.
Either the override the image_double_sparse
method if the user implementation provides floating-point
images, or both the isExact
and image_exact
methods.
The method computeErrorBound
must also be overriden (or the value cached at construction).
This class implements also extra methods about the action of the representation on matrices, methods which can be overloaded for performance.
If this class has representations as “parts”, override the decomposeTerm
and composeTerm
methods.
Class members list
Properties
dimension
– Representation dimension
divisionAlgebraName
– Name of the division algebra encoded by this representation (see replab.DivisionAlgebra
)
field
– Vector space defined on real (R) or complex (C) field
group
– Group being represented
isUnitary
– Whether the representation is unitary
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
Rep
– Constructs a finite dimension representation
Derived representations
alternatingSquare
– Returns the alternating square of this representation
blkdiag
– Direct sum of representations
complexification
– Returns the complexification of a real representation
conj
– Returns the complex conjugate representation of this representation
contramap
– Returns the representation composed with the given morphism applied first
directSumOfCopies
– Returns a direct sum of copies of this representation
dual
– Returns the dual representation of this representation
kron
– Tensor product of representations
permutedDirectSumOfCopies
– Returns a direct sum of copies of this representation
permutedTensorPower
– Returns a tensor power of this representation, whose factors are permuted by the group
restrictedTo
– Returns the restricted representation to the given subgroup
symmetricSquare
– Returns the symmetric square of this representation
tensorPower
– Returns a tensor power of this representation, with the blocks permuted by the group
Equivariant spaces
antilinearInvariant
– Returns the equivariant space of matrices representing equivariant antilinear maps
bilinearInvariant
– Returns the equivariant space of matrices representing equivariant bilinear maps
commutant
– Returns the commutant of this representation
equivariantFrom
– Returns the space of equivariant linear maps from another rep to this rep
equivariantTo
– Returns the space of equivariant linear maps from this rep to another rep
hermitianInvariant
– Returns the equivariant space of matrices representing equivariant Hermitian sesquilinear maps
sesquilinearInvariant
– Returns the space of matrices representing equivariant sesquilinear maps
symmetricInvariant
– Returns the equivariant space of matrices representing equivariant symmetric bilinear maps
trivialColSpace
– Returns an equivariant space to this representation from a trivial representation
trivialRowSpace
– Returns an equivariant space to a trivial representation from this representation
Manipulation of representation space
blockSubRep
– Constructs a subrepresentation from a subset of Euclidean coordinates
identifyIrrep
– Identifies the irrep type and returns an equivalent representation with explicit structure
maschke
– Given a subrepresentation, returns the complementary subrepresentation
similarRep
– Returns a similar representation under a change of basis
split
– Splits this representation into irreducible subrepresentations
subRep
– Constructs a subrepresentation of this representation
unitarize
– Returns a unitary representation equivalent to this representation
Representation properties
character
– Returns the character corresponding to this representation, provided the group represented is finite
conditionNumberEstimate
– Returns an estimation of the condition number of the change of basis that makes this representation unitary
errorBound
– Returns a bound on the approximation error of this representation
frobeniusSchurIndicator
– Returns the Frobenius-Schur indicator of this representation
invariantBlocks
– Returns a partition of the set 1:self.dimension
such that the subsets of coordinates correspond to invariant spaces
isIrreducible
– Returns whether this representation is irreducible over its current field
isIrreducibleAndCanonical
– Returns whether this representation is irreducible, and has its division algebra in the canonical encoding
kernel
– Returns the kernel of the given representation
knownIrreducible
– Returns whether this representation is known to be irreducible; only a true result is significant
knownProperties
– Returns the known properties among the set of given keys as a key-value cell array
knownReducible
– Returns whether this representation is known to be reducible; only a true result is significant
overC
– Returns whether this representation is defined over the complex field
overR
– Returns whether this representation is defined over the real field
trivialComponent
– Returns the trivial isotypic component present in this representation
trivialDimension
– Returns the dimension of the trivial subrepresentation in this representation
trivialProjector
– Returns the projector into the trivial component present in this representation
Morphism composition
compose
– Composition of a representation with a morphism, with the morphism applied first
imap
– Maps the representation under an isomorphism
Simplification
simplify
– Returns a representation identical to this, but possibly with its structure simplified
Irreducible decomposition
decomposition
– Returns the irreducible decomposition of this representation
Image of maximal torus
hasTorusImage
– Returns whether a description of representation of the maximal torus subgroup is available
torusImage
– Returns a simple description of the representation of the group maximal torus
Image computation
image
– Returns the image of a group element
inverseImage
– Returns the image of the inverse of a group element
isExact
– Returns whether this representation can compute exact images
sample
– Samples an element from the group and returns its image under the representation
Derived actions
matrixColAction
– Computes the matrix-representation product
matrixRowAction
– Computes the representation-matrix product
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()
Representation dimension
integer
Name of the division algebra encoded by this representation (see replab.DivisionAlgebra
)
‘R->C’, ‘C->R’, ‘H->C’, ‘H->R:rep’, ‘’
Vector space defined on real (R) or complex (C) field
{‘R’, ‘C’}
Group being represented
Whether the representation is unitary
logical
Constructs a finite dimension representation
group (replab.CompactGroup
) – Group being represented
field ({'R', 'C'}
) – Whether the representation is real (R) or complex (C)
dimension (integer
) – Representation dimension
isUnitary – Whether the representation is unitary, default: false
'H->R (divisionAlgebraName % ('R->C', 'C->R', 'H->C',
) – rep’, ‘’, optional): Name of the division algebra encoding this representation respects, default ''
isIrreducible – Whether this representation is irreducible, default []
trivialDimension – Dimension of the trivial subrepresentation, default []
frobeniusSchurIndicator – Exact value of the Frobenius-Schur indicator, default []
logical, optional
logical or []
, optional
integer or []
, optional
integer or []
, optional
Returns the alternating square of this representation
Let \(V\) be the vector space corresponding to this representation, and \(V \otimes V\) be its second tensor power. Let \(T\) be the linear map such that \(T(v_1 \otimes v_2) = v_2 \otimes v_1\).
Then the alternating square \(A\) is the subspace \(A subset V \otimes V\) such that \(T(a) = -a\) for all \(a \in A\).
A subrepresentation of the second tensor power of this representation
Returns the equivariant space of matrices representing equivariant antilinear maps
Let F
be an antilinear map such that F(alpha * x) = conj(alpha) * F(x)
for any scalar alpha
and vector x
. We describe F
using a matrix J
such that F(x) = J * conj(x)
.
The following conditions are equivalent.
F
is an equivariant map: F(rho.image(g) * x) == rho.image(g) * F(x)
J
is an equivariant matrix: rho.image(g) * J == J * conj(rho.image(g))
The computation is cached.
type ('double', 'double/sparse' or 'exact', optional
) – Type of the returned value, default: ‘double’
The space of matrices describing equivariant antilinear maps
Returns the equivariant space of matrices representing equivariant bilinear maps
Let F
be an equivariant bilinear map, i.e. F(x,y) = F(rho(g) x, rho(g) y)
. We describe
this map by a matrix X
such that F(x,y) = x.' * X * y
. When the map F
is equivariant,
x.' * X * y = x' * rho(g).' * X * rho(g) * y
for all vectors, so that rho(g).' * X = X * rho(g)
.
The computation is cached.
type ('double', 'double/sparse' or 'exact', optional
) – Type of the returned value, default: ‘double’
The space of matrices describing equivariant bilinear maps
Direct sum of representations
Constructs a subrepresentation from a subset of Euclidean coordinates
The block
argument can be obtained from invariantBlocks
, and this method
constructs the sparse injection and projection maps with which to call subRep
.
block (integer(1,*)
) – Euclidean coordinates of the block
Subrepresentation
Returns the character corresponding to this representation, provided the group represented is finite
If this representation is approximate, a trick from Dixon is used to compute the corresponding exact character.
Character corresponding to this representation
Returns the commutant of this representation
This is the algebra of matrices that commute with the representation, i.e. the vector space isomorphism to the equivariant space from this rep to this rep.
For any g in G
, we have rho(g) * X = X * rho(g)
.
The computation is cached.
type ('double', 'double/sparse' or 'exact', optional
) – Type of the returned value, default: ‘double’
The commutant algebra represented as an equivariant space
Returns the complexification of a real representation
The complexification of this representation
An error if this representation is already complex.
–
Composition of a representation with a morphism, with the morphism applied first
Returns an estimation of the condition number of the change of basis that makes this representation unitary
Condition number of the change of basis matrix
double
Returns the complex conjugate representation of this representation
See https://en.wikipedia.org/wiki/Complex_conjugate_representation
It obeys rep.conj.image(g) = conj(rep.image(g))
If this representation is real, it is returned unchanged.
The complex conjugate of this representation
Returns the representation composed with the given morphism applied first
morphism (replab.FiniteMorphism
) – Morphism of finite groups such that morphism.target == self.group
Representation on the finite group morphism.source
Returns the irreducible decomposition of this representation
The type 'double/sparse'
is the same as double
.
Exact decomposition depends on the availability of an algorithm: for example, we decompose finite groups with an available character table using the Serre projection formulas.
The approximate decomposition (type = ‘double’) is not deterministic in all aspects as it uses random
samples from the commutant equivariant space. But there is also a catch with the exact decomposition
algorithm: it retrieves the character table of the group from the atlas, by finding an isomorphism to
this representation’s group
. But this isomorphism is unique only up to automorphism of group
.
type ('double', 'double/sparse', 'exact', optional
) – Decomposition type, default: double
The irreducible decomposition
Returns a direct sum of copies of this representation
n (integer
) – Number of copies
The direct sum representation
Returns the dual representation of this representation
See https://en.wikipedia.org/wiki/Dual_representation
It obeys rep.dual.image(g) = rep.inverseImage(g).'
The dual representation
replab.Rep
Returns the space of equivariant linear maps from another rep to this rep
The equivariant vector space contains the matrices X such that
self.image(g) * X == X * repC.image(g)
repC (replab.Rep
) – Representation on the source/column space
special – Special structure if applicable, see Equivariant
, default: ‘’
type – Whether to obtain an exact equivariant space, default ‘double’ (‘double’ and ‘double/sparse’ are equivalent)
charstring or ‘’, optional
‘exact’, ‘double’ or ‘double/sparse’, optional
The equivariant space
Returns the space of equivariant linear maps from this rep to another rep
The equivariant vector space contains the matrices X such that
repR.image(g) * X == X * self.image(g)
repR (replab.Rep
) – Representation on the target/row space
special – Special structure if applicable, see Equivariant
, default: ‘’
type – Whether to obtain an exact equivariant space, default ‘double’ (‘double’ and ‘double/sparse’ are equivalent)
charstring or ‘’, optional
‘exact’, ‘double’ or ‘double/sparse’, optional
The equivariant space
Returns a bound on the approximation error of this representation
There exists an exact representation repE
such that ||rep(g) - repE(g)||fro <= errorBound
double
Returns the Frobenius-Schur indicator of this representation
It is an integer corresponding to the value \(\iota = \int_{g \in G} tr[\rho_g^2] d \mu\) or \(\iota = \frac{1}{|G|} \sum_{g \in G} tr[\rho_g^2]\).
For real irreducible representations, the Frobenius-Schur indicator can take values:
1
if the representation is of real-type; its complexification is then also irreducible
0
if the representation is of complex-type; it decomposes into two conjugate irreducible
representations over the complex numbers
-2
if the representation is of quaternion-type.
For complex irreducible representations, it can take the values:
1
if the representation is of real-type,
0
if the representation is of complex-type, i.e. is not equivalent to its conjugate,
-1
if the representation is of quaternion-type.
Value of the indicator
integer
Returns whether a description of representation of the maximal torus subgroup is available
This description is used internally in RepLAB to speed up the group averaging process when computing equivariants.
True if the call to torusImage
succeeds
logical
Returns the equivariant space of matrices representing equivariant Hermitian sesquilinear maps
Similar sesquilinearInvariant
with the additional constraint that the matrix X == X'
.
The computation is cached.
type ('double', 'double/sparse' or 'exact', optional
) – Type of the returned value, default: ‘double’
The space of matrices describing equivariant Hermitian sesquilinear maps
Identifies the irrep type and returns an equivalent representation with explicit structure
This representation must be irreducible.
Example
>>> Q = replab.QuaternionGroup();
>>> rep = Q.naturalRep.complexification;
>>> irreps = rep.split;
>>> assert(length(irreps) == 2); % splits in two equivalent irreps
>>> sub = irreps{1};
>>> sub1 = sub.identifyIrrep;
>>> strcmp(sub1.divisionAlgebraName, 'H->C')
1
Similar representation with the canonical division algebra encoding
Returns the image of a group element
An error if type is 'exact' and isExact is false.
–
g (element of group
) – Element being represented
type ('double', 'double/sparse' or 'exact', optional
) – Type of the returned value, default: ‘double’
Image of the given element for this representation
double(*,*) or cyclotomic(*,*)
Maps the representation under an isomorphism
f (FiniteIsomorphism
) – Isomorphism with self.group.isSubgroupOf(f.source)
Representation satisfying newRep.group.isSubgroup(f.target)
.
Returns a partition of the set 1:self.dimension
such that the subsets of coordinates correspond to invariant spaces
This method does not guarantee that the finest partition is returned.
Example
>>> G = replab.SignedPermutationGroup.of([1 4 7 2 5 8 3 6 9], [1 -2 -3 -4 5 6 -7 8 9], [1 3 2 4 6 5 -7 -9 -8]);
>>> rep = G.naturalRep;
>>> p = rep.invariantBlocks;
>>> isequal(p.blocks, {[1] [2 3 4 7] [5 6 8 9]})
1
Partition of coarse invariant blocks
Returns the image of the inverse of a group element
g (element of group
) – Element of which the inverse is represented
type ('double', 'double/sparse' or 'exact', optional
) – Type of the returned value, default: ‘double’
Image of the inverse of the given element for this representation
double(*,*) or cyclotomic(*,*)
Returns whether this representation can compute exact images
True if the call self.image(g, 'exact')
always succeeds
logical
Returns whether this representation is irreducible over its current field
Note that a real representation may become reducible once it is computed over the complex numbers.
True if this representation is irreducible, false if it has a nontrivial subrepresentation
logical
Returns whether this representation is irreducible, and has its division algebra in the canonical encoding
This is always true for complex irreps (though we may decide to canonicalize quaternion-type
complex representations later). For real irreps, it is true if the Frobenius-Schur indicator is known
and matches the encoded divisionAlgebraName
.
True if the representation is irreducible and has its division algebra in the canonical encoding
logical
Returns the kernel of the given representation
Only works if group
is a finite group.
An error if this representation is not precise enough to compute the kernel.
–
Example
>>> S3 = replab.S(3);
>>> K = S3.signRep.kernel;
>>> K == replab.PermutationGroup.alternating(3)
1
The group K
such that rho.image(k) == id
for all k
in K
Returns whether this representation is known to be irreducible; only a true result is significant
True if isIrreducible
is known and is true
logical
Returns the known properties among the set of given keys as a key-value cell array
cell (1,*
) – Property names
Key-value pairs
cell(1,*)
Returns whether this representation is known to be reducible; only a true result is significant
True if isIrreducible
is known and is false
logical
Tensor product of representations
Given a subrepresentation, returns the complementary subrepresentation
Note that we optimize special cases when the representation and/or the injection is unitary
Computes the matrix-representation product
We multiply by the inverse of the image, so this stays a left action.
self.matrixColAction(g, self.matrixColAction(h, M))
is the same as
self.matrixColAction(self.group.compose(g, h), M)
g (group
element) – Group element acting
M (double(*,*)
) – Matrix acted upon
type ('double', 'double/sparse' or 'exact', optional
) – Type of the returned value, default: ‘double’.
The matrix M * self.image(inverse(g))
double(*,*)
Computes the representation-matrix product
This is a left action:
self.matrixRowAction(g, self.matrixRowAction(h, M))
is the same as
self.matrixRowAction(self.group.compose(g, h), M)
g (group
element) – Group element acting
M (double(*,*) or cyclotomic
(*,*)) – Matrix acted upon
type ('double', 'double/sparse' or 'exact', optional
) – Type of the returned value, default: ‘double’.
The matrix self.image(g) * M
double(*,*) or cyclotomic
(*,*)
Returns whether this representation is defined over the complex field
True if this representation is defined over the complex field
logical
Returns whether this representation is defined over the real field
True if this representation is defined over the real field
logical
Returns a direct sum of copies of this representation
Example
>>> U2 = replab.U(2);
>>> S3 = replab.S(3);
>>> G = U2.directProduct(S3);
>>> GtoU2 = G.projection(1); % morphism from G to U2
>>> GtoS3 = G.projection(2); % morphism from G to S3
>>> repU2 = GtoU2.andThen(U2.definingRep);
>>> rep = repU2.permutedDirectSumOfCopies(GtoS3);
>>> rep.dimension
6
mu (Morphism
) – Morphism from group
to a PermutationGroup
The permuted tensor power representation
Returns a tensor power of this representation, whose factors are permuted by the group
Example
>>> U2 = replab.U(2);
>>> S3 = replab.S(3);
>>> G = U2.directProduct(S3);
>>> GtoU2 = G.projection(1); % morphism from G to U2
>>> GtoS3 = G.projection(2); % morphism from G to S3
>>> repU2 = GtoU2.andThen(U2.definingRep);
>>> rep = repU2.permutedTensorPower(GtoS3);
>>> rep.dimension
8
mu (Morphism
) – Morphism from group
to a PermutationGroup
The permuted tensor power representation
Returns the restricted representation to the given subgroup
subgroup (CompactGroup
) – Subgroup to restrict the representation to, must be a subgroup of group
Samples an element from the group and returns its image under the representation
An error if type is 'exact' and isExact is false.
–
type ('double', 'double/sparse' or 'exact', optional
) – Type of the returned value, default: ‘double’
Optionally, the inverse of the image can be returned as well.
rho (double(*,*)) – Image of the random group element
rhoInverse (double(*,*)) – Inverse of image rho
Returns the space of matrices representing equivariant sesquilinear maps
Let F
be an equivariant sesquilinear map, i.e. F(x,y) = F(rho(g) x, rho(g) y)
. We describe
this map by a matrix X
such that F(x,y) = x' * X * y
. When the map F
is equivariant,
x' * X * y = x' * rho(g)' * X * rho(g) * y
for all vectors, so that rho(g)' * X = X * rho(g)
.
The computation is cached.
type ('double', 'double/sparse' or 'exact', optional
) – Type of the returned value, default: ‘double’
The equivariant space
Returns a similar representation under a change of basis
It returns a representation rep1
such that
rep1.image(g) = A * self.image(g) * inv(A)
.
Additional keyword arguments will be passed on to the Rep
constructor. The argument
isUnitary
must be provided, except when the inverse
is provided and both this
representation and the change of basis is unitary.
A (double(*,*) or cyclotomic
(*,*)) – Change of basis matrix
inverse (double(*,*) or cyclotomic
(*,*)): Inverse of the change of basis matrix
The similar representation
Returns a representation identical to this, but possibly with its structure simplified
It pushes SubRep
to the outer level, and replab.rep.DerivedRep
to the inner levels;
expands tensor products.
Additional keyword arguments can be provided as key-value pairs.
dense – Whether to allow multiplication of non-sparse matrices
approximate – Whether to allow multiplication of non-exact matrices, implies dense = true
logical, optional
logical, optional
A possibly simplified representation
Splits this representation into irreducible subrepresentations
forceNonUnitaryAlgorithms – Whether to force the use of algorithms for not necessarily unitary representations, default: false
logical, optional
Constructs a subrepresentation of this representation
A subrepresentation is specified by an invariant subspace of the current representation.
For simplicity, this subspace can be provided as column vectors in a matrix passed as the first
argument to this function. This matrix is called injection
for reasons that are clarified below.
The user should also provide the keyword argument isUnitary
, except when this representation is
unitary, and the injection map corresponds to an isometry; then RepLAB deduces that the subrepresentation
is unitary as well.
More precisely, the subrepresentation is defined by maps between two vector spaces:
the vector space \(V\) corresponding to this representation, of dimension \(D\),
the vector space \(W\) corresponding to the created subrepresentation, of dimension \(d\).
The two maps are:
the injection \(I: W \rightarrow V\) that takes a vector in \(W\) and injects it in the parent representation,
the projection \(P: V \rightarrow W\) that takes a vector in \(V\) and extracts/returns its component in \(W\).
Correspondingly, the map \(I\) is given as a \(D x d\) matrix, while the map \(P\) is given as a \(d x D\) matrix.
If only the injection map \(I\) is given as an argument, a projection \(P\) is computed; it is not necessarily unique. In particular, if the range of \(I\) spans irreducible representations with non-trivial multiplicities, the recovered projection is chosen arbitrarily.
However, all choices of the projection map provide the same results when computing images of the subrepresentation.
If a floating-point approximation \(\tilde{I}\) of the injection map is given instead of the exact map \(I\), an upper bound on the error can be provided; otherwise, it will be automatically estimated. In that case, the projection map \(\tilde{P}\) is also considered as approximate, regardless of whether it is user-provided or computed.
The error bound is mapErrorBound
, and corresponds to an upper bound on both
\(|| I \tilde{P} - id ||_F\) and \(|| \tilde{I} P - id ||_F\); in the expression, we assume
that \(I\) and \(P\) are the exact injections/projections closest to \(\tilde{I}\) and \(\tilde{P}\).
injection (double(D,d) or cyclotomic
(D,d), may be sparse) – Basis / Injection map
projection – Projection map
mapErrorBound – Upper bound as described above
mapConditionNumberEstimate – Upper bound on the condition number of both \(P\) and \(I\)
isUnitary – Whether the resulting representation is unitary, may be omitted
largeScale – Whether to use the large-scale version of the algorithm, default automatic selection
tolerances – Termination criteria
nSamples – Number of samples to use in the large-scale version of the algorithm, default 5
forceReal – Whether to force the computed projection map to be real, default false
double(D,d) or cyclotomic
(D,d), may be sparse, optional
double, optional
double, optional
logical, optional
logical, optional
replab.rep.Tolerances
integer, optional
logical, optional
Subrepresentation
Returns the equivariant space of matrices representing equivariant symmetric bilinear maps
Similar bilinearInvariant
with the additional constraint that the matrix X == X.'
.
The computation is cached.
type ('double', 'double/sparse' or 'exact', optional
) – Type of the returned value, default: ‘double’
The space of matrices describing equivariant symmetric bilinear maps
Returns the symmetric square of this representation
Let \(V\) be the vector space corresponding to this representation, and \(V \otimes V\) be its second tensor power. Let \(T\) be the linear map such that \(T(v_1 \otimes v_2) = v_2 \otimes v_1\).
Then the symmetric square \(S\) is the subspace \(S subset V \otimes V\) such that \(T(s) = s\) for all \(s \in S\).
A subrepresentation of the second tensor power of this representation
Returns a tensor power of this representation, with the blocks permuted by the group
n (integer
) – Exponent of the tensor power
The tensor power representation
Returns a simple description of the representation of the group maximal torus
Let:
* t
be an element of the maximal torus T
of group
,
* mu
be the morphism from T
to group
,
* torusMap
be the integer matrix representing the morphism from T
to T1
(a torus of dimension dimension
).
We have equality between
* self.image(mu.imageElement(t))
and
* torusInjection * T1.definingRep.image(torusMap * t) * torusProjection
torusMap (integer(d, r)) – Exponents, with d
the representation dimension dimension
and r
the torus rank
torusInjection (double(d, d), may be sparse) – Injection from the torus representation to this representation
torusProjection (double(d, d) may be sparse) – Projection from this representation to the torus representation
Returns an equivariant space to this representation from a trivial representation
The trivial representation has the same dimension as this representation
The computation is cached.
type ('double', 'double/sparse' or 'exact', optional
) – Type of the returned value, default: ‘double’
The equivariant space
Returns the trivial isotypic component present in this representation
type ('double', 'double/sparse' or 'exact', optional
) – Type of the returned value, default: ‘double’
The trivial isotypic component
Returns the dimension of the trivial subrepresentation in this representation
Dimension
integer
Returns the projector into the trivial component present in this representation
type ('double', 'double/sparse' or 'exact', optional
) – Type of the returned value, default: ‘double’
proj (double(*,*) or cyclotomic
(*,*)) – Projector
err (double) – Estimated error in Frobenius norm
Returns an equivariant space to a trivial representation from this representation
The trivial representation has the same dimension as this representation
The computation is cached.
type ('double', 'double/sparse' or 'exact', optional
) – Type of the returned value, default: ‘double’
The equivariant space
Returns a unitary representation equivalent to this representation
The returned representation is of type SubRep
, from which the change of basis matrix
can be obtained.
If the representation is already unitary, the returned SubRep
has the identity matrix as
injection/projection maps;
Example
>>> S3 = replab.S(3);
>>> defRep = S3.naturalRep.complexification;
>>> C = randn(3,3) + 1i * rand(3,3);
>>> nonUnitaryRep = defRep.similarRep(C);
>>> unitaryRep = nonUnitaryRep.unitarize;
>>> U = unitaryRep.sample;
>>> norm(U*U' - eye(3)) < 1e-10
1
Unitary similar representation
Bases: replab.domain.VectorSpace
Describes an encoding of a division algebra using real or complex matrices
The three division algebras supported are the real numbers (R), complex numbers (C) and quaternions (H). They can be encoded using real matrix blocks (R) or complex matrix blocks (C).
A complex scalar is written s = a + i b
where a
and b
are reals and i
is the imaginary unit.
A quaternion scalar is written s = a + i b + j c + k d
, where i, j , k
are the fundamental quaternion units,
obeying the relations i^2 = j^2 = k^2 = i j k = -1
.
It supports the following encodings:
'R->C'
: A real scalar is encoded as one complex scalar.
'C->R'
: A complex scalar is encoded as a 2x2 real matrix block.
'H->C'
: A quaternion scalar is encoded as a 2x2 complex matrix block.
'H->R:rep'
: A quaternion scalar is encoded as a 4x4 real matrix block, using the rep
encoding.
'H->R:equivariant'
: A quaternion scalar is encoded as a 4x4 real matrix block, using the equivariant
encoding.
The 'C->R'
encoding represents a complex number \(a + i b\) as:
[ a -b
b a ]
It has dimension 2 and matrixSize 2 as well. Note that another encoding could be [a b; -b a]
;
the encoding we choose seems more widespread but is otherwise arbitrary.
For the quaternions, we need three matrices \(I, J, K\) obeying those relations. If we further require the matrices to be sparse, there are 48 different possible encodings, see R. W. Farebrother, J. Groß, and S.-O. Troschke, “Matrix representation of quaternions”, Linear Algebra and its Applications, vol. 362, pp. 251–255, Mar. 2003 https://doi.org/10.1016/S0024-3795(02)00535-9
Before introducing our choice, let us remark that the quaternion \(q\) can be encoded used the complex matrix:
Quaternion a+i*b+j*c+k*d, encoding using a 2x2 complex matrix (H->C)
[ a+i*b c+i*d
-c+i*d a-i*b ]
Now, expanding each complex coefficient using the complex algebra real encoding described above, we obtain:
Quaternion equivariant encoding (H->R:equivariant)
[ a -b c -d
b a d c
-c -d a b
d -c -b a ]
This is the encoding that will be looked for when sampling from quaternionic-type commutant matrices, thus we named it that way.
Now, quaternionic-type representations will have another encoding of the quaternion algebra that commutes with the equivariant encoding. It is:
Quaternion representation encoding (H->R:rep)
[ a -b -c -d
b a -d c
c d a -b
d -c b a ]
Class members list
Properties
basis
– Division algebra basis
dualBasis
– Dual abasis under the product (D,B) = trace(D'*B)
field
– {‘R’, ‘C’}: Matrices with real (R) or complex (C) coefficients
indexMatrix
– Index matrix
name
– Name of the division algebra
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
General
decode
– Decodes the division algebra elements present in a matrix encoding
encode
– Takes a matrix of division algebra elements and encodes them in a matrix
overC
– Returns whether this vector space is defined over the complex field
overR
– Returns whether this vector space is defined over the real field
project
– Projects the given matrix in this division algebra
Inherited elements
No documentation
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()
No documentation
Documentation in replab.Str.disp()
Documentation in replab.Obj.eq()
Documentation in replab.Domain.eqv()
Documentation in replab.domain.VectorSpace.field
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()
No documentation
Documentation in replab.Obj.ne()
Documentation in replab.domain.VectorSpace.overC()
Documentation in replab.domain.VectorSpace.overR()
Documentation in replab.Domain.sample()
Documentation in replab.Str.shortStr()
Division algebra basis
double(matrixSize,matrixSize,dimension)
Dual abasis under the product (D,B) = trace(D'*B)
double(matrixSize,matrixSize,dimension)
Index matrix
double(matrixSize,matrix)
Name of the division algebra
‘complex’, ‘quaternion.rep’, ‘quaternion.equivariant’
Decodes the division algebra elements present in a matrix encoding
This method accepts a matrix of size (ms*d1) x (ms*d2)
as argument, where
ms
is matrixSize
and d1
, d2
are integers.
X (double(ms*d1,ms*d2)
) – (Block) matrix to decode
Decoded elements where d
is dimension
double(d1,d2,d)
Takes a matrix of division algebra elements and encodes them in a matrix
This method accepts a tensor of size d1 x d2 x d
as argument, where
d
is dimension
and d1
, d2
are integers.
X (double(d1,d2,d)
) – Tensor encoding the matrix
Encoded matrix
double(ms*d1, ms*d2)
Projects the given matrix in this division algebra
This method accepts a matrix of size (ms*d1) x (ms*d2)
as argument, where
ms
is matrixSize
and d1
, d2
are integers. The projection is then done
on each ms x ms
block.
X (double(ms*d1,ms*d2)
) – (Block) matrix to project
Projected matrix
double(ms*d1, ms*d2)
Bases: replab.Rep
A finite dimensional representation of a finite group
Class members list
Properties
dimension
– Representation dimension
divisionAlgebraName
– Name of the division algebra encoded by this representation (see replab.DivisionAlgebra
)
field
– Vector space defined on real (R) or complex (C) field
group
– Group being represented
images
– Images
imagesErrorBound
– Error bound on the given images
isUnitary
– Whether the representation is unitary
preimages
– Preimages
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
fromExactRep
– Constructs a replab.RepByImages
from an existing representation with exact images
Derived representations
alternatingSquare
– Returns the alternating square of this representation
blkdiag
– Direct sum of representations
complexification
– Returns the complexification of a real representation
conj
– Returns the complex conjugate representation of this representation
contramap
– Returns the representation composed with the given morphism applied first
directSumOfCopies
– Returns a direct sum of copies of this representation
dual
– Returns the dual representation of this representation
kron
– Tensor product of representations
permutedDirectSumOfCopies
– Returns a direct sum of copies of this representation
permutedTensorPower
– Returns a tensor power of this representation, whose factors are permuted by the group
restrictedTo
– Returns the restricted representation to the given subgroup
symmetricSquare
– Returns the symmetric square of this representation
tensorPower
– Returns a tensor power of this representation, with the blocks permuted by the group
Equivariant spaces
antilinearInvariant
– Returns the equivariant space of matrices representing equivariant antilinear maps
bilinearInvariant
– Returns the equivariant space of matrices representing equivariant bilinear maps
commutant
– Returns the commutant of this representation
equivariantFrom
– Returns the space of equivariant linear maps from another rep to this rep
equivariantTo
– Returns the space of equivariant linear maps from this rep to another rep
hermitianInvariant
– Returns the equivariant space of matrices representing equivariant Hermitian sesquilinear maps
sesquilinearInvariant
– Returns the space of matrices representing equivariant sesquilinear maps
symmetricInvariant
– Returns the equivariant space of matrices representing equivariant symmetric bilinear maps
trivialColSpace
– Returns an equivariant space to this representation from a trivial representation
trivialRowSpace
– Returns an equivariant space to a trivial representation from this representation
Manipulation of representation space
blockSubRep
– Constructs a subrepresentation from a subset of Euclidean coordinates
identifyIrrep
– Identifies the irrep type and returns an equivalent representation with explicit structure
maschke
– Given a subrepresentation, returns the complementary subrepresentation
similarRep
– Returns a similar representation under a change of basis
split
– Splits this representation into irreducible subrepresentations
subRep
– Constructs a subrepresentation of this representation
unitarize
– Returns a unitary representation equivalent to this representation
Representation properties
character
– Returns the character corresponding to this representation, provided the group represented is finite
conditionNumberEstimate
– Returns an estimation of the condition number of the change of basis that makes this representation unitary
errorBound
– Returns a bound on the approximation error of this representation
frobeniusSchurIndicator
– Returns the Frobenius-Schur indicator of this representation
invariantBlocks
– Returns a partition of the set 1:self.dimension
such that the subsets of coordinates correspond to invariant spaces
isIrreducible
– Returns whether this representation is irreducible over its current field
isIrreducibleAndCanonical
– Returns whether this representation is irreducible, and has its division algebra in the canonical encoding
kernel
– Returns the kernel of the given representation
knownIrreducible
– Returns whether this representation is known to be irreducible; only a true result is significant
knownProperties
– Returns the known properties among the set of given keys as a key-value cell array
knownReducible
– Returns whether this representation is known to be reducible; only a true result is significant
overC
– Returns whether this representation is defined over the complex field
overR
– Returns whether this representation is defined over the real field
trivialComponent
– Returns the trivial isotypic component present in this representation
trivialDimension
– Returns the dimension of the trivial subrepresentation in this representation
trivialProjector
– Returns the projector into the trivial component present in this representation
Morphism composition
compose
– Composition of a representation with a morphism, with the morphism applied first
imap
– Maps the representation under an isomorphism
Simplification
simplify
– Returns a representation identical to this, but possibly with its structure simplified
Irreducible decomposition
decomposition
– Returns the irreducible decomposition of this representation
Image of maximal torus
hasTorusImage
– Returns whether a description of representation of the maximal torus subgroup is available
torusImage
– Returns a simple description of the representation of the group maximal torus
Image computation
image
– Returns the image of a group element
inverseImage
– Returns the image of the inverse of a group element
isExact
– Returns whether this representation can compute exact images
sample
– Samples an element from the group and returns its image under the representation
Derived actions
matrixColAction
– Computes the matrix-representation product
matrixRowAction
– Computes the representation-matrix product
Simplification rules
rewriteTerm_hasBlockStructure
– Rewrite rule: rewrite this representation as a direct sum if it has a block structure
rewriteTerm_isTrivial
– Rewrite rule: replace this representation by a trivial representation if it is a representation of the trivial group
Inherited elements
No documentation
Documentation in replab.Str.additionalFields()
Documentation in replab.Rep.alternatingSquare()
Documentation in replab.Rep.antilinearInvariant()
Documentation in replab.Rep.bilinearInvariant()
Documentation in replab.Rep.blkdiag()
Documentation in replab.Rep.blockSubRep()
Documentation in replab.Obj.cache()
Documentation in replab.Obj.cached()
Documentation in replab.Obj.cachedOrDefault()
Documentation in replab.Obj.cachedOrEmpty()
Documentation in replab.Rep.character()
Documentation in replab.Obj.check()
Documentation in replab.Obj.checkAndContinue()
Documentation in replab.Rep.commutant()
Documentation in replab.Rep.complexification()
Documentation in replab.Rep.compose()
Documentation in replab.Rep.conditionNumberEstimate()
Documentation in replab.Rep.conj()
Documentation in replab.Rep.contramap()
Documentation in replab.Rep.decomposition()
Documentation in replab.Rep.dimension
Documentation in replab.Rep.directSumOfCopies()
Documentation in replab.Str.disp()
Documentation in replab.Rep.divisionAlgebraName
Documentation in replab.Rep.dual()
Documentation in replab.Obj.eq()
Documentation in replab.Rep.equivariantFrom()
Documentation in replab.Rep.equivariantTo()
Documentation in replab.Rep.errorBound()
Documentation in replab.Rep.field
Documentation in replab.Rep.frobeniusSchurIndicator()
Documentation in replab.Rep.group
Documentation in replab.Rep.hasTorusImage()
Documentation in replab.Str.headerStr()
Documentation in replab.Rep.hermitianInvariant()
Documentation in replab.Str.hiddenFields()
Documentation in replab.Obj.id()
Documentation in replab.Rep.identifyIrrep()
Documentation in replab.Rep.image()
Documentation in replab.Rep.imap()
Documentation in replab.Obj.inCache()
Documentation in replab.Rep.invariantBlocks()
Documentation in replab.Rep.inverseImage()
Documentation in replab.Rep.isExact()
Documentation in replab.Rep.isIrreducible()
Documentation in replab.Rep.isIrreducibleAndCanonical()
Documentation in replab.Rep.isUnitary
Documentation in replab.Obj.isequal()
Documentation in replab.Rep.kernel()
Documentation in replab.Rep.knownIrreducible()
Documentation in replab.Rep.knownProperties()
Documentation in replab.Rep.knownReducible()
Documentation in replab.Rep.kron()
Documentation in replab.Obj.laws()
Documentation in replab.Str.longStr()
Documentation in replab.Rep.maschke()
Documentation in replab.Rep.matrixColAction()
Documentation in replab.Rep.matrixRowAction()
Documentation in replab.Obj.ne()
Documentation in replab.Rep.overC()
Documentation in replab.Rep.overR()
Documentation in replab.Rep.permutedDirectSumOfCopies()
Documentation in replab.Rep.permutedTensorPower()
Documentation in replab.Rep.restrictedTo()
Documentation in replab.Rep.sample()
Documentation in replab.Rep.sesquilinearInvariant()
Documentation in replab.Str.shortStr()
Documentation in replab.Rep.similarRep()
Documentation in replab.Rep.simplify()
Documentation in replab.Rep.split()
Documentation in replab.Rep.subRep()
Documentation in replab.Rep.symmetricInvariant()
Documentation in replab.Rep.symmetricSquare()
Documentation in replab.Rep.tensorPower()
Documentation in replab.Rep.torusImage()
Documentation in replab.Rep.trivialColSpace()
Documentation in replab.Rep.trivialComponent()
Documentation in replab.Rep.trivialDimension()
Documentation in replab.Rep.trivialProjector()
Documentation in replab.Rep.trivialRowSpace()
Documentation in replab.Rep.unitarize()
Images
cell(1,n) of double(d,d) or cyclotomic(d,d) or intval(d,d), may be sparse
Error bound on the given images
double(1,n)
Constructs a replab.RepByImages
from an existing representation with exact images
Rewrite rule: rewrite this representation as a direct sum if it has a block structure
Rewrite rule: replace this representation by a trivial representation if it is a representation of the trivial group
Bases: replab.Rep
Describes a subrepresentation of a finite dimensional representation
A subrepresentation corresponds to a subspace \(W\) of a parent representation associated with the vector space \(V\).
For simplicity, we say that the subspace \(W\) is specified using a set of basis vectors, amalgamated
as column vectors in a matrix injection
.
More precisely, the subrepresentation is defined by two maps, an injection and a projection.
The injection map \(I: W \rightarrow V\) expresses a vector in \(V\) from a vector in \(W\).
The projection map \(P: V \rightarrow W\) extracts the \(W\) part from a vector in the parent space \(V\).
Those maps obey \(P I = id\).
If one wants an operator \(\Pi: V \rightarrow V\) acting as a projector (\(\Pi^2 = \Pi\)), then one simply defines \(\Pi = I P\).
Note that often, only approximations \(\tilde{P}\) and \(\tilde{I}\) are known by RepLAB. We thus
store a measure of the error associated with those maps in projectorErrorBound
.
Note
The terminology of “injection” and “projection” linear maps was inspired by https://arxiv.org/pdf/0812.4969.pdf
Class members list
Properties
dimension
– Representation dimension
divisionAlgebraName
– Name of the division algebra encoded by this representation (see replab.DivisionAlgebra
)
field
– Vector space defined on real (R) or complex (C) field
group
– Group being represented
injection_internal
– Injection map
isSimilarRep
– True if this SubRep
encodes a similarity transformation
isUnitary
– Whether the representation is unitary
mapsAreAdjoint
– True if parent
is unitary (so the Hermitian adjoint makes sense) and injection
is the conjugate transpose of projection
parent
– Parent representation of dimension \(D\)
projection_internal
– Projection map
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
SubRep
– Constructs a subrepresentation of a parent representation
basis
– Returns (part of) the basis of the subrepresentation in the parent representation
biorthogonalityErrorBound
– Returns an upper bound on the biorthogonality of the injection/projection maps
collapse
– Simplifies a SubRep of a SubRep
directSumBiorthogonal
– Computes the direct sum of subrepresentations of the same parent representation
identical
– Creates a full subrepresentation of the given representation, with identity projection/injection maps
injection
– Returns the injection from the subrepresentation to the parent representation
injectionConditionNumberEstimate
– Returns an upper bound on the condition number of both the injection and the projection map
injectionIsExact
– Returns whether the injection map is written either with cyclotomics or integer coefficients
mapsAreExact
– Returns whether both the injection map and the projection map are written either with cyclotomics or integer coefficients
mapsAreIntegerValued
– Returns whether both the injection map and the projection map are expressed with Gaussian integer coefficients
nice
– Returns a representation similar to the current subrepresentation, with a nicer basis (EXPERIMENTAL)
projection
– Returns the projection from the parent representation to the subrepresentation
projector
– Returns the projector on this subrepresentation
projectorErrorBound
– Returns an upper bound on the quality of the approximation of the injection/projection maps
refine
– Refines this subrepresentation
withNoise
– Adds Gaussian noise to the injection/projection maps
withUpdatedMaps
– Returns a copy of this subrepresentation with updated injection and projection maps
Derived representations
alternatingSquare
– Returns the alternating square of this representation
blkdiag
– Direct sum of representations
complexification
– Returns the complexification of a real representation
conj
– Returns the complex conjugate representation of this representation
contramap
– Returns the representation composed with the given morphism applied first
directSumOfCopies
– Returns a direct sum of copies of this representation
dual
– Returns the dual representation of this representation
kron
– Tensor product of representations
permutedDirectSumOfCopies
– Returns a direct sum of copies of this representation
permutedTensorPower
– Returns a tensor power of this representation, whose factors are permuted by the group
restrictedTo
– Returns the restricted representation to the given subgroup
symmetricSquare
– Returns the symmetric square of this representation
tensorPower
– Returns a tensor power of this representation, with the blocks permuted by the group
Equivariant spaces
antilinearInvariant
– Returns the equivariant space of matrices representing equivariant antilinear maps
bilinearInvariant
– Returns the equivariant space of matrices representing equivariant bilinear maps
commutant
– Returns the commutant of this representation
equivariantFrom
– Returns the space of equivariant linear maps from another rep to this rep
equivariantTo
– Returns the space of equivariant linear maps from this rep to another rep
hermitianInvariant
– Returns the equivariant space of matrices representing equivariant Hermitian sesquilinear maps
sesquilinearInvariant
– Returns the space of matrices representing equivariant sesquilinear maps
subEquivariantFrom
– Returns the space of equivariant linear maps from another subrepresentation to this subrepresentation
subEquivariantTo
– Returns the space of equivariant linear maps from this subrepresentation to another subrepresentation
symmetricInvariant
– Returns the equivariant space of matrices representing equivariant symmetric bilinear maps
trivialColSpace
– Returns an equivariant space to this representation from a trivial representation
trivialRowSpace
– Returns an equivariant space to a trivial representation from this representation
Manipulation of representation space
blockSubRep
– Constructs a subrepresentation from a subset of Euclidean coordinates
identifyIrrep
– Identifies the irrep type and returns an equivalent representation with explicit structure
maschke
– Given a subrepresentation, returns the complementary subrepresentation
similarRep
– Returns a similar representation under a change of basis
split
– Splits this representation into irreducible subrepresentations
subRep
– Constructs a subrepresentation of this representation
unitarize
– Returns a unitary representation equivalent to this representation
Representation properties
character
– Returns the character corresponding to this representation, provided the group represented is finite
conditionNumberEstimate
– Returns an estimation of the condition number of the change of basis that makes this representation unitary
errorBound
– Returns a bound on the approximation error of this representation
frobeniusSchurIndicator
– Returns the Frobenius-Schur indicator of this representation
invariantBlocks
– Returns a partition of the set 1:self.dimension
such that the subsets of coordinates correspond to invariant spaces
isIrreducible
– Returns whether this representation is irreducible over its current field
isIrreducibleAndCanonical
– Returns whether this representation is irreducible, and has its division algebra in the canonical encoding
kernel
– Returns the kernel of the given representation
knownIrreducible
– Returns whether this representation is known to be irreducible; only a true result is significant
knownProperties
– Returns the known properties among the set of given keys as a key-value cell array
knownReducible
– Returns whether this representation is known to be reducible; only a true result is significant
overC
– Returns whether this representation is defined over the complex field
overR
– Returns whether this representation is defined over the real field
trivialComponent
– Returns the trivial isotypic component present in this representation
trivialDimension
– Returns the dimension of the trivial subrepresentation in this representation
trivialProjector
– Returns the projector into the trivial component present in this representation
Morphism composition
compose
– Composition of a representation with a morphism, with the morphism applied first
imap
– Maps the representation under an isomorphism
Simplification
simplify
– Returns a representation identical to this, but possibly with its structure simplified
Irreducible decomposition
decomposition
– Returns the irreducible decomposition of this representation
Image of maximal torus
hasTorusImage
– Returns whether a description of representation of the maximal torus subgroup is available
torusImage
– Returns a simple description of the representation of the group maximal torus
Image computation
image
– Returns the image of a group element
inverseImage
– Returns the image of the inverse of a group element
isExact
– Returns whether this representation can compute exact images
sample
– Samples an element from the group and returns its image under the representation
Derived actions
matrixColAction
– Computes the matrix-representation product
matrixRowAction
– Computes the representation-matrix product
Simplification rules
Inherited elements
Documentation in replab.Str.additionalFields()
Documentation in replab.Rep.alternatingSquare()
Documentation in replab.Rep.antilinearInvariant()
Documentation in replab.Rep.bilinearInvariant()
Documentation in replab.Rep.blkdiag()
Documentation in replab.Rep.blockSubRep()
Documentation in replab.Obj.cache()
Documentation in replab.Obj.cached()
Documentation in replab.Obj.cachedOrDefault()
Documentation in replab.Obj.cachedOrEmpty()
Documentation in replab.Rep.character()
Documentation in replab.Obj.check()
Documentation in replab.Obj.checkAndContinue()
Documentation in replab.Rep.commutant()
Documentation in replab.Rep.complexification()
Documentation in replab.Rep.compose()
Documentation in replab.Rep.conditionNumberEstimate()
Documentation in replab.Rep.conj()
Documentation in replab.Rep.contramap()
Documentation in replab.Rep.decomposition()
Documentation in replab.Rep.dimension
Documentation in replab.Rep.directSumOfCopies()
Documentation in replab.Str.disp()
Documentation in replab.Rep.divisionAlgebraName
Documentation in replab.Rep.dual()
Documentation in replab.Obj.eq()
Documentation in replab.Rep.equivariantFrom()
Documentation in replab.Rep.equivariantTo()
Documentation in replab.Rep.errorBound()
Documentation in replab.Rep.field
Documentation in replab.Rep.frobeniusSchurIndicator()
Documentation in replab.Rep.group
Documentation in replab.Rep.hasTorusImage()
Documentation in replab.Str.headerStr()
Documentation in replab.Rep.hermitianInvariant()
Documentation in replab.Str.hiddenFields()
Documentation in replab.Obj.id()
Documentation in replab.Rep.identifyIrrep()
Documentation in replab.Rep.image()
Documentation in replab.Rep.imap()
Documentation in replab.Obj.inCache()
Documentation in replab.Rep.invariantBlocks()
Documentation in replab.Rep.inverseImage()
Documentation in replab.Rep.isExact()
Documentation in replab.Rep.isIrreducible()
Documentation in replab.Rep.isIrreducibleAndCanonical()
Documentation in replab.Rep.isUnitary
Documentation in replab.Obj.isequal()
Documentation in replab.Rep.kernel()
Documentation in replab.Rep.knownIrreducible()
Documentation in replab.Rep.knownProperties()
Documentation in replab.Rep.knownReducible()
Documentation in replab.Rep.kron()
Documentation in replab.Obj.laws()
Documentation in replab.Str.longStr()
Documentation in replab.Rep.maschke()
Documentation in replab.Rep.matrixColAction()
Documentation in replab.Rep.matrixRowAction()
Documentation in replab.Obj.ne()
Documentation in replab.Rep.overC()
Documentation in replab.Rep.overR()
Documentation in replab.Rep.permutedDirectSumOfCopies()
Documentation in replab.Rep.permutedTensorPower()
Documentation in replab.Rep.restrictedTo()
No documentation
No documentation
Documentation in replab.Rep.sample()
Documentation in replab.Rep.sesquilinearInvariant()
Documentation in replab.Str.shortStr()
Documentation in replab.Rep.similarRep()
Documentation in replab.Rep.simplify()
Documentation in replab.Rep.split()
Documentation in replab.Rep.subRep()
Documentation in replab.Rep.symmetricInvariant()
Documentation in replab.Rep.symmetricSquare()
Documentation in replab.Rep.tensorPower()
Documentation in replab.Rep.torusImage()
Documentation in replab.Rep.trivialColSpace()
Documentation in replab.Rep.trivialComponent()
Documentation in replab.Rep.trivialDimension()
Documentation in replab.Rep.trivialProjector()
Documentation in replab.Rep.trivialRowSpace()
Documentation in replab.Rep.unitarize()
Injection map
double(D,d) or cyclotomic
(D,d), may be sparse
True if parent
is unitary (so the Hermitian adjoint makes sense) and injection
is the conjugate transpose of projection
logical
Parent representation of dimension \(D\)
Projection map
double(d,D) or cyclotomic
(d,D), may be sparse
Constructs a subrepresentation of a parent representation
Additional keyword arguments are passed to the Rep
constructor.
If both parent
is unitary, and injection_internal
is adjoint to projection_internal
, then
the isUnitary
argument may be omitted as it can be deduced to be true.
parent (replab.Rep
) – Parent representation of dimension \(D\)
injection_internal (double(D,d) or cyclotomic
(D,d), may be sparse) – Injection map \(I\)
projection_internal (double(d,D) or cyclotomic
(d,D), may be sparse) – Projection map \(P\)
isUnitary – Whether the resulting representation is unitary, may be omitted (see above)
projectorErrorBound – Upper bound on || I P - tilde{I} tilde{P} ||_F
injectionConditionNumberEstimate – Upper bound of the condition number of \(\tilde{I}\) (and thus \(\tilde{P}\))
logical, optional
double, optional
double, optional
Returns (part of) the basis of the subrepresentation in the parent representation
It is an alias for I(:, indices)
where I = self.injection(type)
.
indices (integer(1,*) or []
) – Indices of the basis elements to return
type ('double', 'double/sparse' or 'exact', optional
) – Type of the returned value, default: ‘double’
The basis of the subrepresentation given as column vectors
double(*,*) or cyclotomic
(*,*)
Returns an upper bound on the biorthogonality of the injection/projection maps
This returns an upper bound on norm(self.projection*self.injection - eye(d), 'fro')
, where
d == self.dimension
.
Simplifies a SubRep of a SubRep
An error if parent is not of type SubRep
–
A subrepresentation of .parent.parent
Computes the direct sum of subrepresentations of the same parent representation
The subrepresentations must have biorthogonal injection projection maps:
subReps{i}.projection * subReps{i}.injection ~= eye(subReps{i}.dimension)
, but
subReps{i}.projection * subReps{j}.injection ~= 0
for i ~= j
.
parent (replab.Rep
) – Parent representation
subReps (cell(1,*) of replab.SubRep
) – Subrepresentations of the parent representation
A block-diagonal subrepresentation composed of the given subrepresentations
Creates a full subrepresentation of the given representation, with identity projection/injection maps
parent (replab.Rep
) – Representaiton
Subrepresentation identical to parent
Returns the injection from the subrepresentation to the parent representation
type ('double', 'double/sparse' or 'exact', optional
) – Type of the returned value, default: ‘double’
The injection map
double(*,*) or cyclotomic
(*,*)
Returns an upper bound on the condition number of both the injection and the projection map
Upper bound on the condition number
double
Returns whether the injection map is written either with cyclotomics or integer coefficients
True if that is the case
logical
Returns whether both the injection map and the projection map are written either with cyclotomics or integer coefficients
True if both injection
and projection
are cyclotomic matrices or have Gaussian integer entries
logical
Returns whether both the injection map and the projection map are expressed with Gaussian integer coefficients
True if both injection
and projection
have Gaussian integer entries
logical
Returns a representation similar to the current subrepresentation, with a nicer basis (EXPERIMENTAL)
The “niceness” of the basis is implementation dependent. As of the first implementation of this feature, RepLAB tries to make the basis real, and then with small integer coefficients.
The returned subrepresentation is not necessarily unitary.
In the case no improvement could be made, the original subrepresentation is returned.
res (SubRep
) – A subrepresentation of self.parent
better (logical) – Whether a nicer subrepresentation has been found
Returns the projection from the parent representation to the subrepresentation
type ('double', 'double/sparse' or 'exact', optional
) – Type of the returned value, default: ‘double’
The projection map
double(*,*) or cyclotomic
(*,*)
Returns the projector on this subrepresentation
Note that the projector is in general not uniquely defined by the injection map; it is defined by the injection map only when the subrepresentation is a direct sum of isotypic components.
Projector matrix on the subrepresentation
double(*,*)
Returns an upper bound on the quality of the approximation of the injection/projection maps
Let \(I\) and \(P\) be the respective exact injection and projection maps. Let \(\tilde{I}\) and \(\tilde{P}\) be their approximate counterparts.
This returns an upper bound on the Frobenius norm of \(I P - \tilde{I} \tilde{P}\).
Upper bound on the Frobenius distance of the approximate projector to the commutant space
double
Refines this subrepresentation
Assumes that the subrepresentation is already close to an exact subrepresentation, and refines its subspace
by an iterative procedure applied on its injection
and projection
maps.
tolerances – Termination criteria
largeScale – Whether to use the large-scale version of the algorithm, default automatic choice
nSamples – Number of samples to use in the large-scale version of the algorithm, default 5
nInnerIterations – Number of inner iterations in the medium-scale version of the algorithm, default 3
injectionBiortho – Injection map of known multiplicity space to remove from this subrepresentation
projectionBiortho – Projection map of known multiplicity space to remove from this subrepresentation
replab.rep.Tolerances
logical, optional
integer, optional
integer, optional
double(*,*), may be sparse
double(*,*), may be sparse
sub1 – Subrepresentation with refined subspace (injection/projection maps)
Returns the space of equivariant linear maps from another subrepresentation to this subrepresentation
The equivariant vector space contains the matrices X such that
X * repC.image(g) = self.image(g) * X
Example
>>> S3 = replab.S(3);
>>> rep = S3.naturalRep;
>>> Xrep = randn(3, 3);
>>> triv = rep.subRep([1;1;1]);
>>> std = rep.maschke(triv);
>>> E = triv.subEquivariantFrom(std);
>>> Xsub = E.projectFromParent(Xrep);
>>> isequal(size(Xsub), [1 2]) % map to trivial (dim=1) from std (dim=2)
1
>>> norm(Xsub) <= 1e-15
1
repC (replab.SubRep
) – Subrepresentation on the source/column space
special – Special structure if applicable, see Equivariant
, default: ‘’
type – Whether to obtain an exact equivariant space, default ‘double’ (‘double’ and ‘double/sparse’ are equivalent)
parent – Equivariant space of self.parent
and repC.parent
, default: []
charstring, optional
‘exact’, ‘double’ or ‘double/sparse’, optional
Equivariant
, optional
The equivariant vector space
Returns the space of equivariant linear maps from this subrepresentation to another subrepresentation
The equivariant vector space contains the matrices X such that
X * self.image(g) = repR.image(g) * X
Example
>>> S3 = replab.S(3);
>>> rep = S3.naturalRep;
>>> Xrep = randn(3, 3);
>>> triv = rep.subRep([1;1;1]);
>>> std = rep.maschke(triv);
>>> E = triv.subEquivariantTo(std);
>>> Xsub = E.projectFromParent(Xrep);
>>> isequal(size(Xsub), [2 1]) % map to std (dim=1) from triv (dim=1)
1
>>> norm(Xsub) <= 1e-15
1
repR (replab.SubRep
) – Subrepresentation on the target/row space
special – Special structure if applicable, see Equivariant
, default: ‘’
type – Whether to obtain an exact equivariant space, default ‘double’ (‘double’ and ‘double/sparse’ are equivalent)
parent – Equivariant space of repR.parent
and self.parent
, default: []
charstring, optional
‘exact’, ‘double’ or ‘double/sparse’, optional
Equivariant
, optional
The equivariant vector space
Adds Gaussian noise to the injection/projection maps
This method has two call conventions.
If sub.withNoise(sigma)
is called, then the injection map is changed to
injection1 = injection + Delta
, where Delta
is a matrix with normally distributed
entries of standard deviation sigma
. Delta
is real (resp. complex) if the representation
is real (resp. complex). Then the original projection
map is ignored and projection1
is recovered
as in replab.Rep.subRep
.
If sub.withNoise(sigmaI, sigmaP)
is called, then noise of magnitude sigmaI
is added to the injection map
and noise of magnitude sigmaP
is added to the projection map. Then the new noisy maps are corrected
so that injection1 * projection1
is still a projector.
injectionMapNoise (double
) – Magnitude of the noise to add to the injection map
projectionMapNoise (double, optional
) – Magnitude of the noise to add to projection map
A noisy subrepresentation
Returns a copy of this subrepresentation with updated injection and projection maps
The following properties are copied from the original subrepresentation:
Additional keywords arguments are passed to the subRep
method of parent
.
injection (double(D,d) or cyclotomic
(D,d), may be sparse) – Injection map
projection (double(d,D) or cyclotomic
(d,D), may be sparse) – Projection map
The updated subrepresentation
Bases: replab.SubRep
Describes an isotypic component in the decomposition of a representation
An isotypic component regroups equivalent irreducible representations expressed in the same basis. Note that if the multiplicity is not one, there is a degeneracy in the picking of a basis of of the multiplicity space, and the basis is not necessarily chosen in a deterministic way by RepLAB.
However the subspace spanned by an isotypic component as a whole is unique.
The isotypic component is expressed as a subrepresentation of the representation being decomposed. However key methods are implemented more efficiently as more structure is available. In particular the computation of images is done in a way that minimizes numerical error and returns truly block diagonal matrices.
To cater for empty isotypic components, the isotypic component stores a “model” of the irreducible representation.
The isotypic stores its own projection map, as the following equation is not necessarily satisfied for individual irreps:
`` irreps{i}.projection * irrep{j}.injection = (i == j) * eye(d) ``
Class members list
Properties
dimension
– Representation dimension
divisionAlgebraName
– Name of the division algebra encoded by this representation (see replab.DivisionAlgebra
)
field
– Vector space defined on real (R) or complex (C) field
group
– Group being represented
injection_internal
– Injection map
irreps
– Equivalent irreducible subrepresentations in this isotypic component
isSimilarRep
– True if this SubRep
encodes a similarity transformation
isUnitary
– Whether the representation is unitary
mapsAreAdjoint
– True if parent
is unitary (so the Hermitian adjoint makes sense) and injection
is the conjugate transpose of projection
modelIrrep
– Irreducible representation identical to the subrepresentations present in this isotypic component
parent
– Parent representation of dimension \(D\)
projection_internal
– Projection map
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
Isotypic
– Constructs an isotypic component of a parent representation
basis
– Returns (part of) the basis of the subrepresentation in the parent representation
biorthogonalityErrorBound
– Returns an upper bound on the biorthogonality of the injection/projection maps
collapse
– Simplifies a SubRep of a SubRep
fromIrreps
– Creates an isotypic component from linearly independent equivalent irreducible subrepresentations
fromTrivialSubRep
– Builds an isotypic component from the trivial subrepresentation
injection
– Returns the injection from the subrepresentation to the parent representation
injectionConditionNumberEstimate
– Returns an upper bound on the condition number of both the injection and the projection map
injectionIsExact
– Returns whether the injection map is written either with cyclotomics or integer coefficients
irrep
– Returns the i-th copy of the irreducible representation
irrepDimension
– Returns the dimension of a single irreducible representation contained in this component
irrepRange
– Returns the coefficient range where the i-th irrep lies
mapsAreExact
– Returns whether both the injection map and the projection map are written either with cyclotomics or integer coefficients
mapsAreIntegerValued
– Returns whether both the injection map and the projection map are expressed with Gaussian integer coefficients
multiplicity
– Number of equivalent irreducible representations in this isotypic component
nIrreps
– Returns the number of irreps in this isotypic component, which is their multiplicity
nice
– Returns a representation similar to the current subrepresentation, with a nicer basis (EXPERIMENTAL)
projection
– Returns the projection from the parent representation to the subrepresentation
projector
– Returns the projector on this subrepresentation
projectorErrorBound
– Returns an upper bound on the quality of the approximation of the injection/projection maps
refine
– Refines this isotypic component
withNoise
– Adds Gaussian noise to the injection/projection maps
withUpdatedMaps
– Returns a copy of this subrepresentation with updated injection and projection maps
Derived representations
alternatingSquare
– Returns the alternating square of this representation
blkdiag
– Direct sum of representations
complexification
– Returns the complexification of a real representation
conj
– Returns the complex conjugate representation of this representation
contramap
– Returns the representation composed with the given morphism applied first
directSumOfCopies
– Returns a direct sum of copies of this representation
dual
– Returns the dual representation of this representation
kron
– Tensor product of representations
permutedDirectSumOfCopies
– Returns a direct sum of copies of this representation
permutedTensorPower
– Returns a tensor power of this representation, whose factors are permuted by the group
restrictedTo
– Returns the restricted representation to the given subgroup
symmetricSquare
– Returns the symmetric square of this representation
tensorPower
– Returns a tensor power of this representation, with the blocks permuted by the group
Equivariant spaces
antilinearInvariant
– Returns the equivariant space of matrices representing equivariant antilinear maps
bilinearInvariant
– Returns the equivariant space of matrices representing equivariant bilinear maps
commutant
– Returns the commutant of this representation
equivariantFrom
– Returns the space of equivariant linear maps from another rep to this rep
equivariantTo
– Returns the space of equivariant linear maps from this rep to another rep
hermitianInvariant
– Returns the equivariant space of matrices representing equivariant Hermitian sesquilinear maps
isotypicEquivariantFrom
– Returns the space of equivariant linear maps from another isotypic component to this isotypic component
isotypicEquivariantTo
– Returns the space of equivariant linear maps from this isotypic component to another isotypic component
sesquilinearInvariant
– Returns the space of matrices representing equivariant sesquilinear maps
subEquivariantFrom
– Returns the space of equivariant linear maps from another subrepresentation to this subrepresentation
subEquivariantTo
– Returns the space of equivariant linear maps from this subrepresentation to another subrepresentation
symmetricInvariant
– Returns the equivariant space of matrices representing equivariant symmetric bilinear maps
trivialColSpace
– Returns an equivariant space to this representation from a trivial representation
trivialRowSpace
– Returns an equivariant space to a trivial representation from this representation
Manipulation of representation space
blockSubRep
– Constructs a subrepresentation from a subset of Euclidean coordinates
identifyIrrep
– Identifies the irrep type and returns an equivalent representation with explicit structure
maschke
– Given a subrepresentation, returns the complementary subrepresentation
similarRep
– Returns a similar representation under a change of basis
split
– Splits this representation into irreducible subrepresentations
subRep
– Constructs a subrepresentation of this representation
unitarize
– Returns a unitary representation equivalent to this representation
Representation properties
character
– Returns the character corresponding to this representation, provided the group represented is finite
conditionNumberEstimate
– Returns an estimation of the condition number of the change of basis that makes this representation unitary
errorBound
– Returns a bound on the approximation error of this representation
frobeniusSchurIndicator
– Returns the Frobenius-Schur indicator of this representation
invariantBlocks
– Returns a partition of the set 1:self.dimension
such that the subsets of coordinates correspond to invariant spaces
isIrreducible
– Returns whether this representation is irreducible over its current field
isIrreducibleAndCanonical
– Returns whether this representation is irreducible, and has its division algebra in the canonical encoding
kernel
– Returns the kernel of the given representation
knownIrreducible
– Returns whether this representation is known to be irreducible; only a true result is significant
knownProperties
– Returns the known properties among the set of given keys as a key-value cell array
knownReducible
– Returns whether this representation is known to be reducible; only a true result is significant
overC
– Returns whether this representation is defined over the complex field
overR
– Returns whether this representation is defined over the real field
trivialComponent
– Returns the trivial isotypic component present in this representation
trivialDimension
– Returns the dimension of the trivial subrepresentation in this representation
trivialProjector
– Returns the projector into the trivial component present in this representation
Morphism composition
compose
– Composition of a representation with a morphism, with the morphism applied first
imap
– Maps the representation under an isomorphism
Simplification
simplify
– Returns a representation identical to this, but possibly with its structure simplified
Irreducible decomposition
decomposition
– Returns the irreducible decomposition of this representation
Image of maximal torus
hasTorusImage
– Returns whether a description of representation of the maximal torus subgroup is available
torusImage
– Returns a simple description of the representation of the group maximal torus
Image computation
image
– Returns the image of a group element
inverseImage
– Returns the image of the inverse of a group element
isExact
– Returns whether this representation can compute exact images
sample
– Samples an element from the group and returns its image under the representation
Derived actions
matrixColAction
– Computes the matrix-representation product
matrixRowAction
– Computes the representation-matrix product
Simplification rules
Inherited elements
Documentation in replab.Str.additionalFields()
Documentation in replab.Rep.alternatingSquare()
Documentation in replab.Rep.antilinearInvariant()
Documentation in replab.SubRep.basis()
Documentation in replab.Rep.bilinearInvariant()
Documentation in replab.SubRep.biorthogonalityErrorBound()
Documentation in replab.Rep.blkdiag()
Documentation in replab.Rep.blockSubRep()
Documentation in replab.Obj.cache()
Documentation in replab.Obj.cached()
Documentation in replab.Obj.cachedOrDefault()
Documentation in replab.Obj.cachedOrEmpty()
Documentation in replab.Rep.character()
Documentation in replab.Obj.check()
Documentation in replab.Obj.checkAndContinue()
Documentation in replab.SubRep.collapse()
Documentation in replab.Rep.commutant()
Documentation in replab.Rep.complexification()
Documentation in replab.Rep.compose()
Documentation in replab.Rep.conditionNumberEstimate()
Documentation in replab.Rep.conj()
Documentation in replab.Rep.contramap()
Documentation in replab.Rep.decomposition()
Documentation in replab.Rep.dimension
Documentation in replab.Rep.directSumOfCopies()
Documentation in replab.Str.disp()
Documentation in replab.Rep.divisionAlgebraName
Documentation in replab.Rep.dual()
Documentation in replab.Obj.eq()
Documentation in replab.Rep.equivariantFrom()
Documentation in replab.Rep.equivariantTo()
Documentation in replab.Rep.errorBound()
Documentation in replab.Rep.field
Documentation in replab.Rep.frobeniusSchurIndicator()
Documentation in replab.Rep.group
Documentation in replab.Rep.hasTorusImage()
Documentation in replab.Str.headerStr()
Documentation in replab.Rep.hermitianInvariant()
Documentation in replab.Str.hiddenFields()
Documentation in replab.Obj.id()
Documentation in replab.Rep.identifyIrrep()
Documentation in replab.Rep.image()
Documentation in replab.Rep.imap()
Documentation in replab.Obj.inCache()
Documentation in replab.SubRep.injection()
Documentation in replab.SubRep.injectionConditionNumberEstimate()
Documentation in replab.SubRep.injectionIsExact()
Documentation in replab.SubRep.injection_internal
Documentation in replab.Rep.invariantBlocks()
Documentation in replab.Rep.inverseImage()
Documentation in replab.Rep.isExact()
Documentation in replab.Rep.isIrreducible()
Documentation in replab.Rep.isIrreducibleAndCanonical()
Documentation in replab.SubRep.isSimilarRep
Documentation in replab.Rep.isUnitary
Documentation in replab.Obj.isequal()
Documentation in replab.Rep.kernel()
Documentation in replab.Rep.knownIrreducible()
Documentation in replab.Rep.knownProperties()
Documentation in replab.Rep.knownReducible()
Documentation in replab.Rep.kron()
Documentation in replab.Obj.laws()
Documentation in replab.Str.longStr()
Documentation in replab.SubRep.mapsAreAdjoint
Documentation in replab.SubRep.mapsAreExact()
Documentation in replab.SubRep.mapsAreIntegerValued()
Documentation in replab.Rep.maschke()
Documentation in replab.Rep.matrixColAction()
Documentation in replab.Rep.matrixRowAction()
Documentation in replab.Obj.ne()
Documentation in replab.SubRep.nice()
Documentation in replab.Rep.overC()
Documentation in replab.Rep.overR()
Documentation in replab.SubRep.parent
Documentation in replab.Rep.permutedDirectSumOfCopies()
Documentation in replab.Rep.permutedTensorPower()
Documentation in replab.SubRep.projection()
Documentation in replab.SubRep.projection_internal
Documentation in replab.SubRep.projector()
Documentation in replab.SubRep.projectorErrorBound()
Documentation in replab.Rep.restrictedTo()
No documentation
No documentation
Documentation in replab.Rep.sample()
Documentation in replab.Rep.sesquilinearInvariant()
Documentation in replab.Str.shortStr()
Documentation in replab.Rep.similarRep()
Documentation in replab.Rep.simplify()
Documentation in replab.Rep.split()
Documentation in replab.SubRep.subEquivariantFrom()
Documentation in replab.SubRep.subEquivariantTo()
Documentation in replab.Rep.subRep()
Documentation in replab.Rep.symmetricInvariant()
Documentation in replab.Rep.symmetricSquare()
Documentation in replab.Rep.tensorPower()
Documentation in replab.Rep.torusImage()
Documentation in replab.Rep.trivialColSpace()
Documentation in replab.Rep.trivialComponent()
Documentation in replab.Rep.trivialDimension()
Documentation in replab.Rep.trivialProjector()
Documentation in replab.Rep.trivialRowSpace()
Documentation in replab.Rep.unitarize()
Documentation in replab.SubRep.withNoise()
Documentation in replab.SubRep.withUpdatedMaps()
Equivalent irreducible subrepresentations in this isotypic component
cell(1,*) of SubRep
Irreducible representation identical to the subrepresentations present in this isotypic component
Constructs an isotypic component of a parent representation
The injection map of the isotypic component comes from the sum of the injection maps of the irreps, while its projection map is supplied as an argument.
The static method fromIrreps
computes this projection map if necessary.
Additional keyword arguments are passed to the Rep
constructor.
parent (replab.Rep
) – Parent representation of which we construct a subrepresentation
irreps (cell(1,*) of replab.SubRep
) – Irreducible subrepresentations
modelIrrep (replab.Rep
) – Canonical model of the irreducible representation contained in this component
projection (double(*,*), may be sparse
) – Embedding map of the isotypic component
Creates an isotypic component from linearly independent equivalent irreducible subrepresentations
parent (Rep
) – Parent representation
irreps (cell(1,*) of SubRep
) – Irreducible equivalent subrepresentations of parent
modelIrrep (Rep
or []
) – Model of the irreducible representation in this component (can be empty, and is then set to irreps{1}
)
irrepsAreBiorthogonal – True if the irreps injection/projection are biorthogonal, default: false
irrepsAreHarmonized – True if the irreps are in the same basis as modelIrrep
, default: false
logical, optional
logical, optional
Isotypic component
Builds an isotypic component from the trivial subrepresentation
The trivial subrepresentation must be complete, i.e. represent the space of all vectors that are fixed by the action of the representation.
Returns the i-th copy of the irreducible representation
Returns the dimension of a single irreducible representation contained in this component
Irrep dimension
integer
Returns the coefficient range where the i-th irrep lies
i (integer
) – Irreducible representation index
Range of the rows/columns block of the i-th irrep
integer(1,*)
Returns the space of equivariant linear maps from another isotypic component to this isotypic component
The equivariant vector space contains the matrices X such that
X * repC.image(g) = self.image(g) * X
Both isotypic components must be harmonized.
repC (replab.Isotypic
) – Isotypic component, representation on the source/column space
special – Special structure if applicable, see Equivariant
, default: ‘’
type – Whether to obtain an exact equivariant space, default ‘double’ (‘double’ and ‘double/sparse’ are equivalent)
charstring, optional
‘exact’, ‘double’ or ‘double/sparse’, optional
The equivariant vector space, or []
if the space has dimension zero or contains only the zero matrix
Returns the space of equivariant linear maps from this isotypic component to another isotypic component
The equivariant vector space contains the matrices X such that
X * self.image(g) = repR.image(g) * X
Both isotypic components must be harmonized.
repR (replab.Isotypic
) – Isotypic component, representation on the target/row space
special – Special structure if applicable, see Equivariant
, default: ‘’
type – Whether to obtain an exact equivariant space, default ‘double’ (‘double’ and ‘double/sparse’ are equivalent)
charstring, optional
‘exact’, ‘double’ or ‘double/sparse’, optional
The equivariant vector space, or []
if the space has dimension zero or contains only the zero matrix
Number of equivalent irreducible representations in this isotypic component
Multiplicity
integer
Returns the number of irreps in this isotypic component, which is their multiplicity
Number of irreducible representations
integer
Refines this isotypic component
Assumes that the isotypic component is already close to an exact isotypic component, and refines its subspace
by an iterative procedure applied on its injection
and projection
maps.
numNonImproving – Number of non-improving steps before stopping the large-scale algorithm, default 20
nSamples – Number of samples to use in the large-scale version of the algorithm, default 5
maxIterations – Maximum number of (outer) iterations, default 1000
integer, optional
integer, optional
integer, optional
Isotypic component with refined subspace (injection/projection maps)
Bases: replab.SubRep
Describes the irreducible decomposition of a representation
The mathematical background is based on Section 2.6 of Jean-Pierre Serre, “Linear representations of finite groups”.
An irreducible decomposition contains a sequence of isotypic components. When the irreducible decomposition is obtained
through replab.Rep.decomposition
with an exact
argument, the order of isotypic components matches the real or complex
character table of the represented group, and thus the irreducible decomposition can contain empty isotypic components.
Those empty components can be stripped using the squeeze
method.
As the decomposition of a representation is an expensive operation in RepLAB, Irreducible
provides a pair of methods
export
and import
that return a plain struct that can be saved into a .mat
file under both MATLAB and Octave.
Class members list
Properties
components
– Isotypic components
dimension
– Representation dimension
divisionAlgebraName
– Name of the division algebra encoded by this representation (see replab.DivisionAlgebra
)
field
– Vector space defined on real (R) or complex (C) field
group
– Group being represented
injection_internal
– Injection map
isSimilarRep
– True if this SubRep
encodes a similarity transformation
isUnitary
– Whether the representation is unitary
mapsAreAdjoint
– True if parent
is unitary (so the Hermitian adjoint makes sense) and injection
is the conjugate transpose of projection
parent
– Parent representation of dimension \(D\)
projection_internal
– Projection map
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
basis
– Returns (part of) the basis of the subrepresentation in the parent representation
biorthogonalityErrorBound
– Returns an upper bound on the biorthogonality of the injection/projection maps
collapse
– Simplifies a SubRep of a SubRep
component
– Returns a particular isotypic component in the decomposition
export
– Returns a plain data structure with the information about this decomposition
import
– Reconstruct an irreducible decomposition from exported data
injection
– Returns the injection from the subrepresentation to the parent representation
injectionConditionNumberEstimate
– Returns an upper bound on the condition number of both the injection and the projection map
injectionIsExact
– Returns whether the injection map is written either with cyclotomics or integer coefficients
irrep
– Returns a subrepresentation in the irreducible decomposition
mapsAreExact
– Returns whether both the injection map and the projection map are written either with cyclotomics or integer coefficients
mapsAreIntegerValued
– Returns whether both the injection map and the projection map are expressed with Gaussian integer coefficients
nComponents
– Returns the number of isotypic components in the decomposition
nice
– Returns a representation similar to the current subrepresentation, with a nicer basis (EXPERIMENTAL)
projection
– Returns the projection from the parent representation to the subrepresentation
projector
– Returns the projector on this subrepresentation
projectorErrorBound
– Returns an upper bound on the quality of the approximation of the injection/projection maps
refine
– Refines this subrepresentation
squeeze
– Returns an irreducible decomposition where empty isotypic components have been removed
toSubRep
– Returns the block-diagonal similar representation corresponding to this decomposition
withNoise
– Adds Gaussian noise to the injection/projection maps
withUpdatedMaps
– Returns a copy of this subrepresentation with updated injection and projection maps
Derived representations
alternatingSquare
– Returns the alternating square of this representation
blkdiag
– Direct sum of representations
complexification
– Returns the complexification of a real representation
conj
– Returns the complex conjugate representation of this representation
contramap
– Returns the representation composed with the given morphism applied first
directSumOfCopies
– Returns a direct sum of copies of this representation
dual
– Returns the dual representation of this representation
kron
– Tensor product of representations
permutedDirectSumOfCopies
– Returns a direct sum of copies of this representation
permutedTensorPower
– Returns a tensor power of this representation, whose factors are permuted by the group
restrictedTo
– Returns the restricted representation to the given subgroup
symmetricSquare
– Returns the symmetric square of this representation
tensorPower
– Returns a tensor power of this representation, with the blocks permuted by the group
Equivariant spaces
antilinearInvariant
– Returns the equivariant space of matrices representing equivariant antilinear maps
bilinearInvariant
– Returns the equivariant space of matrices representing equivariant bilinear maps
commutant
– Returns the commutant of this representation
equivariantFrom
– Returns the space of equivariant linear maps from another rep to this rep
equivariantTo
– Returns the space of equivariant linear maps from this rep to another rep
hermitianInvariant
– Returns the equivariant space of matrices representing equivariant Hermitian sesquilinear maps
irreducibleEquivariantFrom
– Returns the space of equivariant linear maps from another irreducible decomposition to this irreducible decomposition
irreducibleEquivariantTo
– Returns the space of equivariant linear maps from this irreducible decomposition to another irreducible decomposition
sesquilinearInvariant
– Returns the space of matrices representing equivariant sesquilinear maps
subEquivariantFrom
– Returns the space of equivariant linear maps from another subrepresentation to this subrepresentation
subEquivariantTo
– Returns the space of equivariant linear maps from this subrepresentation to another subrepresentation
symmetricInvariant
– Returns the equivariant space of matrices representing equivariant symmetric bilinear maps
trivialColSpace
– Returns an equivariant space to this representation from a trivial representation
trivialRowSpace
– Returns an equivariant space to a trivial representation from this representation
Manipulation of representation space
blockSubRep
– Constructs a subrepresentation from a subset of Euclidean coordinates
identifyIrrep
– Identifies the irrep type and returns an equivalent representation with explicit structure
maschke
– Given a subrepresentation, returns the complementary subrepresentation
similarRep
– Returns a similar representation under a change of basis
split
– Splits this representation into irreducible subrepresentations
subRep
– Constructs a subrepresentation of this representation
unitarize
– Returns a unitary representation equivalent to this representation
Representation properties
character
– Returns the character corresponding to this representation, provided the group represented is finite
conditionNumberEstimate
– Returns an estimation of the condition number of the change of basis that makes this representation unitary
errorBound
– Returns a bound on the approximation error of this representation
frobeniusSchurIndicator
– Returns the Frobenius-Schur indicator of this representation
invariantBlocks
– Returns a partition of the set 1:self.dimension
such that the subsets of coordinates correspond to invariant spaces
isIrreducible
– Returns whether this representation is irreducible over its current field
isIrreducibleAndCanonical
– Returns whether this representation is irreducible, and has its division algebra in the canonical encoding
kernel
– Returns the kernel of the given representation
knownIrreducible
– Returns whether this representation is known to be irreducible; only a true result is significant
knownProperties
– Returns the known properties among the set of given keys as a key-value cell array
knownReducible
– Returns whether this representation is known to be reducible; only a true result is significant
overC
– Returns whether this representation is defined over the complex field
overR
– Returns whether this representation is defined over the real field
trivialComponent
– Returns the trivial isotypic component present in this representation
trivialDimension
– Returns the dimension of the trivial subrepresentation in this representation
trivialProjector
– Returns the projector into the trivial component present in this representation
Morphism composition
compose
– Composition of a representation with a morphism, with the morphism applied first
imap
– Maps the representation under an isomorphism
Simplification
simplify
– Returns a representation identical to this, but possibly with its structure simplified
Irreducible decomposition
decomposition
– Returns the irreducible decomposition of this representation
Image of maximal torus
hasTorusImage
– Returns whether a description of representation of the maximal torus subgroup is available
torusImage
– Returns a simple description of the representation of the group maximal torus
Image computation
image
– Returns the image of a group element
inverseImage
– Returns the image of the inverse of a group element
isExact
– Returns whether this representation can compute exact images
sample
– Samples an element from the group and returns its image under the representation
Derived actions
matrixColAction
– Computes the matrix-representation product
matrixRowAction
– Computes the representation-matrix product
Simplification rules
Inherited elements
No documentation
Documentation in replab.Str.additionalFields()
Documentation in replab.Rep.alternatingSquare()
Documentation in replab.Rep.antilinearInvariant()
Documentation in replab.SubRep.basis()
Documentation in replab.Rep.bilinearInvariant()
Documentation in replab.SubRep.biorthogonalityErrorBound()
Documentation in replab.Rep.blkdiag()
Documentation in replab.Rep.blockSubRep()
Documentation in replab.Obj.cache()
Documentation in replab.Obj.cached()
Documentation in replab.Obj.cachedOrDefault()
Documentation in replab.Obj.cachedOrEmpty()
Documentation in replab.Rep.character()
Documentation in replab.Obj.check()
Documentation in replab.Obj.checkAndContinue()
Documentation in replab.SubRep.collapse()
Documentation in replab.Rep.commutant()
Documentation in replab.Rep.complexification()
Documentation in replab.Rep.compose()
Documentation in replab.Rep.conditionNumberEstimate()
Documentation in replab.Rep.conj()
Documentation in replab.Rep.contramap()
Documentation in replab.Rep.decomposition()
Documentation in replab.Rep.dimension
Documentation in replab.Rep.directSumOfCopies()
Documentation in replab.Str.disp()
Documentation in replab.Rep.divisionAlgebraName
Documentation in replab.Rep.dual()
Documentation in replab.Obj.eq()
Documentation in replab.Rep.equivariantFrom()
Documentation in replab.Rep.equivariantTo()
Documentation in replab.Rep.errorBound()
Documentation in replab.Rep.field
Documentation in replab.Rep.frobeniusSchurIndicator()
Documentation in replab.Rep.group
Documentation in replab.Rep.hasTorusImage()
Documentation in replab.Str.headerStr()
Documentation in replab.Rep.hermitianInvariant()
Documentation in replab.Str.hiddenFields()
Documentation in replab.Obj.id()
Documentation in replab.Rep.identifyIrrep()
Documentation in replab.Rep.image()
Documentation in replab.Rep.imap()
Documentation in replab.Obj.inCache()
Documentation in replab.SubRep.injection()
Documentation in replab.SubRep.injectionConditionNumberEstimate()
Documentation in replab.SubRep.injectionIsExact()
Documentation in replab.SubRep.injection_internal
Documentation in replab.Rep.invariantBlocks()
Documentation in replab.Rep.inverseImage()
Documentation in replab.Rep.isExact()
Documentation in replab.Rep.isIrreducible()
Documentation in replab.Rep.isIrreducibleAndCanonical()
Documentation in replab.SubRep.isSimilarRep
Documentation in replab.Rep.isUnitary
Documentation in replab.Obj.isequal()
Documentation in replab.Rep.kernel()
Documentation in replab.Rep.knownIrreducible()
Documentation in replab.Rep.knownProperties()
Documentation in replab.Rep.knownReducible()
Documentation in replab.Rep.kron()
Documentation in replab.Obj.laws()
Documentation in replab.Str.longStr()
Documentation in replab.SubRep.mapsAreAdjoint
Documentation in replab.SubRep.mapsAreExact()
Documentation in replab.SubRep.mapsAreIntegerValued()
Documentation in replab.Rep.maschke()
Documentation in replab.Rep.matrixColAction()
Documentation in replab.Rep.matrixRowAction()
Documentation in replab.Obj.ne()
Documentation in replab.SubRep.nice()
Documentation in replab.Rep.overC()
Documentation in replab.Rep.overR()
Documentation in replab.SubRep.parent
Documentation in replab.Rep.permutedDirectSumOfCopies()
Documentation in replab.Rep.permutedTensorPower()
Documentation in replab.SubRep.projection()
Documentation in replab.SubRep.projection_internal
Documentation in replab.SubRep.projector()
Documentation in replab.SubRep.projectorErrorBound()
Documentation in replab.SubRep.refine()
Documentation in replab.Rep.restrictedTo()
No documentation
No documentation
Documentation in replab.Rep.sample()
Documentation in replab.Rep.sesquilinearInvariant()
Documentation in replab.Str.shortStr()
Documentation in replab.Rep.similarRep()
Documentation in replab.Rep.simplify()
Documentation in replab.Rep.split()
Documentation in replab.SubRep.subEquivariantFrom()
Documentation in replab.SubRep.subEquivariantTo()
Documentation in replab.Rep.subRep()
Documentation in replab.Rep.symmetricInvariant()
Documentation in replab.Rep.symmetricSquare()
Documentation in replab.Rep.tensorPower()
Documentation in replab.Rep.torusImage()
Documentation in replab.Rep.trivialColSpace()
Documentation in replab.Rep.trivialComponent()
Documentation in replab.Rep.trivialDimension()
Documentation in replab.Rep.trivialProjector()
Documentation in replab.Rep.trivialRowSpace()
Documentation in replab.Rep.unitarize()
Documentation in replab.SubRep.withNoise()
Documentation in replab.SubRep.withUpdatedMaps()
Isotypic components
cell(1,*) of replab.Isotypic
Returns a particular isotypic component in the decomposition
i (logical
) – Index of the isotypic component
The i
-th isotypic component
Returns a plain data structure with the information about this decomposition
The returned data can be saved in a .mat
file in both MATLAB and Octave and passed to the static
import
static method to reconstruct this irreducible decomposition.
Plain data structure
struct
Reconstruct an irreducible decomposition from exported data
Returns the space of equivariant linear maps from another irreducible decomposition to this irreducible decomposition
The equivariant vector space contains the matrices X such that
X * repC.image(g) = self.image(g) * X
Both irreducible decompositions must be harmonized.
repC (replab.Irreducible
) – Irreducible decomposition, representation on the source/column space
special – Special structure if applicable, see Equivariant
, default: ‘’
type – Whether to obtain an exact equivariant space, default ‘double’ (‘double’ and ‘double/sparse’ are equivalent)
charstring, optional
‘exact’, ‘double’ or ‘double/sparse’, optional
The equivariant vector space, or []
if the space has dimension zero or contains only the zero matrix
Returns the space of equivariant linear maps from this irreducible decomposition to another irreducible decomposition
The equivariant vector space contains the matrices X such that
X * self.image(g) = repR.image(g) * X
Both irreducible decompositions must be harmonized.
repR (replab.Irreducible
) – Irreducible decomposition, representation on the target/row space
special – Special structure if applicable, see Equivariant
, default: ‘’
type – Whether to obtain an exact equivariant space, default ‘double’ (‘double’ and ‘double/sparse’ are equivalent)
‘commutant’, ‘hermitian’, ‘trivialRows’, ‘trivialCols’ or ‘’, optional
‘exact’, ‘double’ or ‘double/sparse’, optional
The equivariant vector space, or []
if the space has dimension zero or contains only the zero matrix
Returns a subrepresentation in the irreducible decomposition
i (integer
) – Index of the isotypic component
j (integer, optional
) – Index of the copy in the i
-th isotypic component
Default value is 1
.
An irreducible subrepresentation
Returns the number of isotypic components in the decomposition
Number of isotypoic components
integer
Returns an irreducible decomposition where empty isotypic components have been removed
Useful to clean up the result of the exact decomposition, as the exact decomposition contains isotypic components for all irreducible representations, even if they are not present in the decomposed representation.
Example
>>> S3 = replab.S(3);
>>> rep = S3.naturalRep;
>>> dec = rep.decomposition('exact'); % doctest: +cyclotomic
>>> dec.nComponents
3
>>> dec.squeeze.nComponents
2
I (Irreducible
) – Irreducible decomposition with empty isotypic components removed
ind (integer(1,*)) – Indices of non-empty components
Returns the block-diagonal similar representation corresponding to this decomposition
Both this Irreducible
object and the returned representation will be instances of SubRep
.
This method helps us test the implementation of Irreducible
as the returned SubRep
loses
its particular structure.
The returned representation is the parent representation with an explicit change of basis, so it does
not look as clean as this Irreducible
.
The block-diagonal representation as a representation similar to parent