Involutive bases for Maple, C++, and Python
Involutive bases [Gerdt 2005, Gerdt, Blinkov 1998, Apel 1998] are particular generating sets for ideals in polynomial rings, or more generally for submodules of free modules over polynomial rings. Using an involutive basis of the ideal under consideration allows e.g. to decide easily whether a given element of the polynomial ring is an element of the ideal or not. More generally, involutive bases allow to compute in the residue class ring modulo the given ideal. Involutive bases form a special kind of Gröbner basis [Buchberger 1965]. In comparison to Gröbner bases, more combinatorial information about the ideal or the residue class ring are incorporated in the involutive basis; the algorithms computing involutive bases are clearer from a structural point of view because reduction of ideal or module generators modulo an involutive basis is possible in a unique way only. During the last ten years, V. P. Gerdt and Y. A. Blinkov have been developing very efficient algorithms for the construction of involutive bases [Gerdt 2005].
As a special case, Janet bases [Janet 1929, Plesken, Robertz 2005] are involutive bases with respect to Janet division. Maurice Janet developed this kind of basis for the algebraic analysis of (linear) systems of partial differential equations. After his work seemed to be forgotten for several decades, J.-F. Pommaret [Pommaret 1994] pointed out that Janet's algorithm when applied to linear PDEs with constant coefficients is a variant of Buchberger's algorithm.
These web pages try to summarize some work on involutive bases leading to implementations in Maple, C++, and Python. In particular, involutive bases can be computed for
- systems of commutative polynomials (see Involutive and ginv),
- linear systems of partial differential equations (see Janet),
- systems of polynomials in certain Ore algebras, (see JanetOre),
- linear systems of difference equations (see LDA).
In the near future, the open source project ginv will be able to compute involutive bases in all of the above mentioned contexts.
For more information about involutive bases, cf. also http://invo.jinr.ru.