- Why those funny names?
- I like funny names, because they are easier to remember and
because they are funny. In this case I use what I call
*xwords*: a xword starts with x and obeys two rules: 1) without the x it is a word or acronym related to the project, and 2) with the x it sounds like a totally different thing (the more different the meanings the better). Spanish and English are sometimes mixed in the joke. Pronounciation of a xword is that of its second meaning, but with a clear x. A great example is xAmple. Of course, I search for xwords with Mathematica: xWords.nb. Note that ACT in xAct are the reversed initials of Tensor Computer Algebra. They are actually in the right order in Spanish: Algebra Computacional Tensorial. - Why do you develop
*xAct*? - It was initially a way to learn
*Mathematica*while developing some useful tools for my work in GR. Then it became an interesting scientific project on itself, and this is how I see it right now: as a science project. This motivates what I ask from users of*xAct*: please cite this web page and my papers on*xAct*. - How do I report a bug?
- The best way is through the
google
*xAct*group page, so that all users are informed of the problem and can share their experiences. It can also be directly reported to me at**jose@xact.es**. - I think MakeRule should be more intelligent and do this...
- Examples:
- Deal with contractions in denominators.
- Deal with rules and their Dagger version.
- Deal with powers of scalars.
- Deal faster with highly-symmetric tensors.
- Deal with automatic reordering of partial derivatives.
- Associate rules to any symbol I want.

The general problem of constructing tensor rules can be arbitrarily complicated. I believe the general case can be handled using the full power of Mathematica's patterns language and xTensor's functions IndexRule and IndexRuleDelayed. However, the function MakeRule can solve a small class of frequent problems by using the syntax MakeRule[ { LHS, RHS, conditions }, options ]. The main advantage is that the LHS is given without patterns, and MakeRule will add them following the options given. The result is a proper Mathematica rule that can be used with Replace or ReplaceAll, as usual.

The main point to stresss is that MakeRule only knows how to work on that class of problems. Different users need different extensions of that class. MakeRule is already a highly complicated function (only second to ToCanonical in complexity), and further extensions would make it slower and more difficult to mantain. Hence MakeRule is unlikely to be extended, unless there is a very good reason to do it.

Note that Mathematica does not have a general function to construct rules: users are expected to construct rules by themselves, using directly the combination of pattern structures most appropriate for their particular problem.