- 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 the Wolfram Language: 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 Wolfram Language 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. It helps a lot if the report includes executable code, and version information about both xAct and Wolfram Language.
- Can you help me with my computation?
- I regularly receive this type of request, and in most cases the answer is no,
specially with requests like "my <big expression> should give <X> but gives
<Y> because <math arguments or papers>" or like "I need the
<XXX theory/framework/formalism>; can you implement it in xAct?". The two main exceptions are:
- "This <simple formula> is obviously wrong because it gives <X> and should give <Y>", and by "obviously" I mean it should take me seconds to be convinced there is a problem. It helps enormously when the email provides actual code for two equivalent computations that should arrive at the same result by they don't. Bugs are very important, and should be fixed as soon as possible.
- "I don't understand how this <basic computation> is performed in xAct". This type of request is also important because it means something is not obvious or is not well documented in xAct, so I'll try to help with simple examples. I'd be grateful if you mention where in the documentation you think the missing information should be.
- 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 Wolfram Language'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 Wolfram Language 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 the Wolfram Language 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.