Idea list
This is a list of ideas for future improvements to Cadabra. If you are interested in helping with one of these items, send me an email.
- Interfacing with a scalar CAS
- While the Cadabra core contains a wide variety of routines for handling of tensorial expressions, it does not do any computer algebra of the standard "scalar" type. That is, simplification and rewriting of scalar functional expressions is currently not handled. The plan is to write an interface layer to an open source computer algebra system for these scalar manipulations, most likely to Maxima or SymPy. This functionality is required to allow users to combine abstract tensor algebra with explicit component calculations; see below. requirements: C++, some experience with other computer algebra systems preferable.
- Component computation engine
- The current core only deals with abstract tensor analysis, not with writing out of explicit components. Then only other general purpose tool which does this is GRTensorII, but that system does not do abstract index calculations. By extending Cadabra with a facility to substitute values for components and do the summation over index values, problems like computing curvature invariants for explicit metrics become possible. This facility is most likely only useful in combination with the coupling to a scalar CAS (see above). requirements: C++
- Folding facilities in the notebook interface
- The current notebook interface assumes a linear structure, without sections or subsections. A more structured setup would implement features of a folding editor. requirements: knowledge of gtkmm, C++
- Improvement of the Cadabra language
- The current parser is one of the oldest parts of Cadabra, and is not suited for an extension with proper control structures. A rewrite using a parser generator (old-style BISION/YACC or more modern such as ANTLR) would open new options for an extension of the core language and help to make the core more robust. There are various interesting combinations possible when linking to SymPy which should be investigated. requirements: good knowledge of parser generators
- Separation of the notebook interface for use with other systems.
- There exists a wide variety of special-purpose computer algebra systems which could benefit from a proper notebook interface with mathematical typesetting. In turn, some existing projects like the maths typesetting engine in Python's matplotlib could help improve and speed up the notebook interface. requirements: knowledge of gtkmm, some experience with mathematical typesetting programs (TeX or otherwise) preferable.
- Library facilities
- Many computations would benefit from a library of routines, e.g. for common substitutions in general relativity. This requires some changes to the core language to make such libraries independent of the notation chosen by the user. Good knowledge of C++, physics background in the relevant areas.