How to make rules to properly implement constraints on functions defined on a manifold.

127 views
Skip to first unread message

Martín Pico

unread,
Sep 27, 2023, 5:58:54 AM9/27/23
to xAct Tensor Computer Algebra
Hi,

I am a new xAct user who is finding some troubles with the following:

I am working with a manifold in which I have defined some functions that verify some constraints (they are the basis functions of a representation of a given group in the manifold). Denoting these functions by f_a, where a is an index labeling the functions that has nothing to do with indices on the tangent space of the manifold, I have the following constraint:

f_a f^a =1                                                    (1),

with the a index lowered and rised by means of some tensor that plays the role of a metric in the indices labeling the functions, say /k^{ab} ( /k^{ab} is an invariant tensor of the group and hence can be used as an interwining operator, in this particular case to relate the representation in which f_a lives with the trivial representation). I will use k=delta for the sake of simplicity.

(1) also imposes:

f_a /partial_i f^a =0                                    (2),

where /partial_i is a derivative taken with respect to the coordinates of the manifold, which are labelled by the index i. As far as I know, relations like(2) can not be imposed using MakeRule (MakeRule[{Sum[ f[[a]] PD[i][ f[[a]]] , {a,1,n}], 0}]), as it does not interpret the sum in the lhs. I have seen that in some cases one could do something like:

MakeRule[{ f[[n]] PD[i][ f[[n]]],  Sum[ f[[a]] PD[i][ f[[a]]] , {a,1,n-1}]  }].

However, this doesn´t work either and I have to first execute { f[[n]] PD[i][ f[[n]]],  Sum[ f[[a]] PD[i][ f[[a]]] , {a,1,n-1}]  } and then copy and paste the outcome of this command into the input of MakeRule manually, something that feels awkward. If I keep on and try to define an AutomaticRule with this rule, it seems to work at the beginning when I check it with simple examples, but later on it doesn´t work (maybe there is some issues with dummie indices?).

Is it there a way of globally impose (2)? What I am doing wrong?

I also need to define a relation similar to:

( /partial_j f_a) /partial_j f^a =g_{ij},

with g the metric tensor of the manifold. In this case the rule:

 MakeRule[{PD[-i1][f[[n]]] PD[-i2][f[[n]]], gr[-i1, -i2] - Sum[PD[-i1][f[[i]]] PD[-i2][f[[i]]], {i, 1, n-1}]}]

works neither in simple examples, nor later on in the code. Does anyone know how to implement this?

Thank for your help.

Jose

unread,
Nov 20, 2023, 2:57:59 AM11/20/23
to xAct Tensor Computer Algebra
Hi,

Instead of using TeX notation, it is always better in this forum to use xAct notation, which is more specific and shows what you have tried. If separating tangent and inner indices is important for you, I'd recommend to read the documentation of DefVBundle, but I'm going to to show you an example that only uses tangent indices. 

Suppose you have this manifold and metric:

   << xAct`xTensor`
   DefManifold[M, 4, {a, b, c, d, i, j}]
   DefMetric[-1, g[-a, -b], cd]

Define the vector field

   DefTensor[f[a], M]

Then you can define the constraint:

   f /: f[a_] f[-a_] := 1

such that now for example:

   In[6]:= f[b] f[-b]
   Out[6]= 1

or the constraint

   f /: f[-a_] PD[i_][f[a_]] := 0

such that

   In[8]:= f[-c] PD[-b][f[c]]
   Out[8]= 0

The third constraint you mention cannot be defined in this simple way (due to a limitation of WL patterns), but it is still quite simple to define a rule like this:

   PPrule = PD[i_][f[-a_]] PD[j_][f[a_]] :> g[i, j]

and then use it in your computations with

   exp /. PPrule

Cheers,
Jose.
Reply all
Reply to author
Forward
0 new messages