7.1. FoldedRule and ValID

FoldedRule            List of lists of rules to be applied sequentially
ValID                Identifier for each independent set of components stored for a tensor
TensorValIDs        List of all the ValIDs of a given tensor
DateOfValID
Time a given ValID was generated

Identifying sets of component values

Before introducing the general functions, let us consider a simple example. Let us suppose we have a rank two tensor , with no symmetries and only one basis. Then, the straightforward way of storing its components would be with a list of replacement rules:
{ → a, → b, → c, ...}
But now consider, still with just one basis in play and no metric, that our tensor is symmetric. Then it would be a waste to store twice the component = , for example. With higher rank tensors and higher symmetries the redundancy makes the process very inefficient. Instead, we could think of storing components as a pair of lists. The first one would give the relations due to symmetry and the second one the values of the independent components. We could have something like
{ {  ,  ,  }, { → a, → b, → c, → d, → e, → f} }
It may appear we have gained nothing, after all we still have 9 rules. However, all the information of the first list is determined by the symmetry group of the tensor, which xCoba` already knows since its definition. Also, the independent values may be very large expressions while the dependent rules are always very simple. This structure is represented in xCoba` with the concept of FoldedRule (defined in the auxiliary package xCore`):

In:=  Example:

In:= Out= In the next subsection we shall see how xCoba`  generates these lists. The next problem comes when we consider a more general case where we have a metric and several bases. In this situation we may want to store the values for a given tensor in different bases and with different index characters. However, not all those combinations are independent. Recalling our symmetric tensor , we  see that the FoldedRules that would contain its values for and would have the same independent components (likewise for and ). So among all sets of values for a tensor, only some will be independent. xCoba`  identifies these independent sets with the concept of ValID:

In:=  Continuing with our example, we would have for our tensor a single ValID, which would be
ValID[U, { {polar, polar}} ]
(both indices in the base polar). We have several for ValID[T, { {polar, -polar} , {-polar, polar}} ]
ValID[T, { {polar, cartesian}, {cartesian, polar}]

The first would represent the fact that and have the same independent rules and the second would represent the situation for and . Notice how even in the case of , where there is only one possible basis configuration in the ValID, we give a list of lists of bases. The command VTensorValIDs returns all the ValIDs we have stored for a given tensors (and its derivatives, as we shall see below).

All of this will be much clearer once we see how xCoba`  generates the FoldedRules and their corresponding ValIDs for a tensor in the next subsection.

 Created by Mathematica  (May 16, 2008) 