non-commutative products in Xact

306 views
Skip to first unread message

Ahmed Youssef

unread,
Apr 9, 2013, 5:38:36 AM4/9/13
to xAct Tensor Computer Algebra
Dear all,

I need to perform some Feynman diagrams calculations including fermions with Xact. I thus need to define for instance gamma matrices algebras. I am not sure if the packages "Spinors" and "AVF" are really suited for my purpose.

Is there a simple way to make functions like ToCanonical and ContractMetric learn how to deal with non-commutative products (**) (I have seen a relatively similar discussion about Grassmanian variables in this forum)? As a starter, I want for instance to define a tensor \gamma[a] and use ToCanonical and ContractMetric on expressions like \gamma[-a]**\gamma[-b] metric[a,b].

Best regards,
Ahmed Youssef
ayous...@gmail.com



Thomas Bäckdahl

unread,
Apr 9, 2013, 2:06:50 PM4/9/13
to xa...@googlegroups.com
Hi!

This might be a bit tricky, but I think it can be done.
To get ToCanonical to work with these non-commutative products, I can
see at least two different methods that could be used.

One would be to add the appropriate definitions for Identify and xSort
in section 15.1 of xTensor. This would require fairly deep knowledge
about the inner workings of the canonicalizer.

The other method would be to define your product as a new tensor. This
would be a bit similar to how SymManipulator handles products of
tensors. This means that S[-a]**T[-b] would be represented as
NCProduct[S,T][-a,-b]

One would need to specify that NCProduct[S,T] is a tensor with the
correct symmetries and slots.

If you are just using the product with a very small number of tensors S
and T, I suppose that you can define these products as tensors manually.


Regards
Thomas

Leo Stein

unread,
Apr 9, 2013, 2:29:39 PM4/9/13
to Thomas Bäckdahl, xa...@googlegroups.com
Hi all,

Including non-commutative algebras in xTensor is a nice goal but
probably a huge undertaking. Not only do you have to allow ToCanonical
to understand NCAs, but you also need to decide how to canonicalize
them. This is not covered by Butler-Portugal, is it?

But look at sections 7.1, 7.2, 7.3 of SpinorsDoc.nb. It is possible to
do everything with a matrix algebra with all of the indices explicit.
If you want to make something that looks like a \gamma matrix acting
from the left, you could make a function gamma[mu][expr] where expr
must have one free spinor index "a". This makes it a bit easier to
work with the matrices so you don't have to think as much about all of
the indices. The function must find the free index, use ReplaceIndex
to introduce a dummy index "b" for the matrix multiply, and spit out
\[Gamma][mu,a,-b] ReplaceIndex[expr, a->b] .

Best,
Leo
> --
> You received this message because you are subscribed to the Google Groups
> "xAct Tensor Computer Algebra" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to xact+uns...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>

Ahmed Youssef

unread,
Apr 10, 2013, 6:05:02 PM4/10/13
to Leo Stein, Thomas Bäckdahl, xa...@googlegroups.com
Dear all,

Thank you very much for both your answers. It is unfortunate that full implementation of this requires a lot of work, it somehow limits a little the usefulness of Xact in perturbative QFT.

Best regards,
Ahmed
Ahmed Youssef
ayous...@gmail.com



Alfonso García-Parrado Gómez-Lobo

unread,
Apr 12, 2013, 7:30:13 PM4/12/13
to Ahmed Youssef, Leo Stein, Thomas Bäckdahl, xa...@googlegroups.com
Dear Ahmed,


> Thank you very much for both your answers.
> It is unfortunate that full implementation of this requires
> a lot of work, it somehow limits a little the usefulness of Xact in perturbative QFT.
>

it is indeed possible to introduce a (non-commutative) "product" in xAct
other than Times which is recognized by MakeRule or IndexRule and some
other commands. The Canonicalization is handled in the way pointed out
by Thomas (one introduces a tensor representing the product but this
tensor is only used during the canonicalization process, the final
expressions being rendered in terms of the product introduced).

I attach a notebook illustrating the procedure for a product called DP.
Simple examples with the Dirac algebra of gamma matrices are supplied.
The idea is that you represent the product of say gamma[-a] and
gamma[-b] by DP[gamma[-a],gamma[-b]]. I didn't use Mathematica
NonCommutativeMultiply because it gave some problems to the code I used.
Similar ideas can be carried over to other products of Mathematica
without built-in meaning like Wedge or CircleTimes. Note that advanced
knowledge of xTensor might be required to use the code of the notebook
in practical problems.

Best regards,

Alfonso.
DiracEquation.nb

Thomas Bäckdahl

unread,
Apr 13, 2013, 4:14:10 AM4/13/13
to xa...@googlegroups.com
Hi!

This looks very good. To keep the symmetries of the individual factors,
one can use the following:

SlotsOfTensor@DPTimes[factors__] ^:=
Join @@ (SlotsOfTensor /@ {factors});
SymmetryGroupOfTensor@DPTimes[] ^:= StrongGenSet[{}, GenSet[]];
SymmetryGroupOfTensor@DPTimes[f1_, f2___] ^:=
JoinSGS[SymmetryGroupOfTensor@f1,
xAct`xTensor`Private`DisplaceSlots[
SymmetryGroupOfTensor@DPTimes[f2], Length@SlotsOfTensor@f1]]

I also think DPToDPTimes and DPTimesToDP should automatically use
Implode and Explode to make it easier to handle derivatives.

Regards
Thomas

Alfonso García-Parrado Gómez-Lobo

unread,
Apr 13, 2013, 8:45:10 AM4/13/13
to Thomas Bäckdahl, xa...@googlegroups.com
Hi Thomas,

thanks for your code. In the general case it is certainly better to be
able to keep the symmetries of the general factors.

In some particular cases things might get a bit more complex. For
example it is possible to use the procedure I showed in the notebook to
implement the exterior algebra in xTensor. In this case one has to take
into account the symmetries of the individual factors and the symmetries
resulting from the ordering of the factor themselves (which in turn will
depend on the degree of each factor in the algebra). One can easily deal
with the case of products of degree 1 elements (e.g. 1-forms). For
example if Theta[-a] is a 1-form and you introduce the tensor WedgeTimes
to represent the wedge product then the code

SymmetryGroupOfTensor@WedgeTimes[exp : Theta ..] ^:=
Antisymmetric[Range[1, Length@WedgeTimes@exp], Cycles];

gives the symmetry of the product Wedge[Theta[-a],Theta[-b],...] for any
number of factors.

Regards,

Alfonso.

Ahmed Youssef

unread,
Apr 13, 2013, 8:20:37 PM4/13/13
to Alfonso García-Parrado Gómez-Lobo, Leo Stein, Thomas Bäckdahl, xa...@googlegroups.com
Dear Alfonso,

thank you very much for your sophisticated notebook. It seems very interesting. I will take some time to learn what is in it, and I feel it will be a good opportunity to learn some advanced xTensor too.

Thank you again,
Ahmed
> <DiracEquation.nb>

Ahmed Youssef
ayous...@gmail.com



Robert Carcasses Quevedo

unread,
Jun 5, 2017, 9:17:22 AM6/5/17
to xAct Tensor Computer Algebra, ayous...@gmail.com, leo....@gmail.com, thomas....@gmail.com
This is a piece of art, thanks for sharing!
Reply all
Reply to author
Forward
0 new messages