Greetings, MAXIMA folks.
I just finished a major round of updates to the MAXIMA tensor packages.
Executive summary: essentially all the functionality described in the
commercial MACSYMA manual is now fully implemented, and tested (a little.) I
reorganized and partially cleaned up the source code. Demos have been
reorganized and added; these are available in demo(tensor). I also updated
the documentation.
The details:
1. In both CTENSOR and ITENSOR, commands and objects have been renamed to
conform to commercial MACSYMA's naming conventions. (And not coincidentally,
to not conflict with other names in the system.)
2. Support for moving frames, torsion, and nonmetricity has been added, in
the form (more or less) described in the MACSYMA manual. Several new demos
are available that demonstrate these features.
3. I tested all of the above by rerunning the demos of commercial MACSYMA,
printouts of which were kindly supplied to me by Valery Pipin, to confirm
that we get identical results. (That said, since this functionality is new,
expect bugs.)
4. Extending this functionality, using in part code fragments that were
present in share/tensor, and in part my own code, I developed functions in
CTENSOR to find null tetrads and obtain the Petrov-classification of
metrics. Some demos are now available, though I am not yet 100% confident
that this code is indeed correct.
5. A major change was introduced in ITENSOR: a new notation to better manage
tensor indices when they're raised or lowered in a tensor with no symmetry
properties. This new notation is fully backward compatible. Once again,
since this is a new feature, expect bugs.
6. An entirely new package, ATENSOR, has been added. This implements the
generalized tensor algebra functionality of commercial MACSYMA. This is all
newly developed code, so one more time, expect bugs.
7. All tensor demos are now available through a menu that you can invoke by
typing demo(tensor) in a fresh copy of MAXIMA.
8. All documentation is now up-to-date and complete. I updated the texinfo
files, reconciled their content with content found elsewhere (manual files
in share/tensor) and added new content. I also reconciled the mail archive
fragments that were in this directory.
9. I also fixed the CARTAN package that was sitting, broken and collecting
dust, in share/calculus. Try demo(cartan). The advantage of this package
over the exterior calculus now implemented in ITENSOR (thanks in large part
to the work of Valery Pipin!) is that it uses Cartan's index-free notation
for exterior forms, as opposed to fully antisymmetric indexed tensors in
ITENSOR notation.
I tested my code with the latest CVS, using GCL/CLISP/CMUCL on Linux. Most
of the code actually works with 5.9.1, though sometimes it gets confused due
to case conflicts.
Well, enjoy. My hope is that people will find my work useful. If you come
across any bugs, feel free to pester me.
Viktor
PS: Jim suggested that I ask here before I muck up files others might be
working on: I am planning to remove all duplicate descriptions of
ITENSOR/CTENSOR commands that appear in other documentation files where they
do not belong. Any objections?