3.4. Symmetries

There are two kinds of symmetries for a tensor. We can have monoterm (or permutation) symmetries, such that a tensor remains equal or changes sign under a permutation of its indices. Or we can have multiterm (for example cyclic) symmetries, such that a linear combination of several of those permuted tensors is equal to zero. In the former case the symmetry of a tensor of n indices can be described as a subgroup of the group {1,-1}x S_n. In the latter, the symmetry can be described as an algebra. Currently xTensor` can deal with an arbitrary case (n not too large: say 200 indices at most) of monoterm symmetries. However, it does not implement any general algorithm for multiterm symmetries, because no efficient algorithm is known for that case.
The twin package xPerm` is used to work with permutations. See xPermDoc.nb for further information.

GenSet                    Generating set of a permutations group
StrongGenSet            
Strong generating set of a permutations group
Symmetric                
Completely symmetric permutation group
Antisymmetric            
Completely antisymmetric permutation group
RiemannSymmetric        Group of symmetry of the Riemann tensor    
SymmetryOf                Symmetry properties of an expression.
ForceSymmetries            Option of DefTensor to allow for symmetries among up/down indices

Functions related to symmetries

Any permutation group on a set of n points can be given using a set of generators (head GenSet) or, better, a strong set of generators (head StrongGenSet). The functions Symmetric and Antisymmetric are examples:

In[142]:=

Symmetric[{a, b}]

Out[142]=

StrongGenSet[{a}, GenSet[Cycles[{a, b}]]]

In[143]:=

Antisymmetric[{a, b}]

Out[143]=

StrongGenSet[{a}, GenSet[-Cycles[{a, b}]]]

Define a symmetric tensor S on M3

In[144]:=

DefTensor[S[a, b], M3, Symmetric[{a, b}]]

** DefTensor: Defining tensor S[a, b] .

In[145]:=

? S

Global`S

Dagger[S]^=S
DependenciesOfTensor[S]^={M3}
Info[S]^={tensor,}
PrintAs[S]^=S
SlotsOfTensor[S]^={TangentM3,TangentM3}
SymmetryGroupOfTensor[S]^=StrongGenSet[{1},GenSet[Cycles[{1,2}]]]
TensorID[S]^={}
xTensorQ[S]^=True

Define a totally antisymmetric tensor U on M3. We can use the names of the indices or their positions in the tensor

In[146]:=

DefTensor[U[-a, -b, -c], M3, Antisymmetric[{1, 2, 3}]]

** DefTensor: Defining tensor U[-a, -b, -c] .

In[147]:=

? U

Global`U

Dagger[U]^=U
DependenciesOfTensor[U]^={M3}
Info[U]^={tensor,}
PrintAs[U]^=U
SlotsOfTensor[U]^={-TangentM3,-TangentM3,-TangentM3}
SymmetryGroupOfTensor[U]^=StrongGenSet[{1,2},GenSet[-Cycles[{1,2}],-Cycles[{2,3}]]]
TensorID[U]^={}
xTensorQ[U]^=True

For example, for the tensor U the group is generated by the two signed permutations -Cycles[{1,2}] (representing a change of sign under the exchange of slots 1 and 2) and -Cycles[{2,3}] (representing a change of sign under the exchange of slots 2 and 3).

Note however that not every generating set is valid:

For example, in a group of three indices, antisymmetry in the first two indices is not consistent with symmetry in the second and third indices, unless the whole tensor is zero:

In[148]:=

Catch @ DefTensor[W[a, b, c], M3, GenSet[-Cycles[{1, 2}], Cycles[{2, 3}]]]

SchreierOrbit :: infty : Found Infinity as a point, with generating set GenSet[] .

DefTensor :: invalid : GenSet[-Cycles[{1, 2}], Cycles[{2, 3}]] is not a valid symmetry identification .

The symmetries must be consistent with the character of the indices (irrespectively of whether there is a metric or not). This is checked.

We cannot define a symmetric tensor with two indices of different character:

In[149]:=

Catch @ DefTensor[Q[a, -b], M3, Symmetric[{1, 2}]]

DefTensor :: wrongsym : Symmetry properties are inconsistent with indices of tensor.

unless we force it (so that the check is not performed):

In[150]:=

DefTensor[Q[a, -b], M3, Symmetric[{1, 2}], ForceSymmetries→True]

** DefTensor: Defining tensor Q[a, -b] .

For symmetry groups of order larger than 10000 the check would take too long and is not performed:

In[151]:=

DefTensor[supereta[a, b, c, d, e, -f, -g, -h, -h1], M3, Antisymmetric[Range[8]]]

  Order of group of symmetry: 40320 > 10000. ForceSymmetry check not performed.

** DefTensor: Defining tensor supereta[a, b, c, d, e, -f, -g, -h, -h1] .

In[152]:=

UndefTensor/@{Q, supereta} ;

** UndefTensor: Undefined tensor Q

** UndefTensor: Undefined tensor supereta


Created by Mathematica  (May 16, 2008) Valid XHTML 1.1!