Systems of differential equations can often be described as polynomials in the unknown function(s) and derivatives thereof. Such polynomial representations are called differential polynomials. In his classic book on differential algebra [1], Ritt introduced the notion of characteristic sets for canonically describing such systems of equations. Characteristic sets are a thoroughly investigated and widely used tool in computational differential algebra.
In 2001, Boulier, Lemaire, and Moreno Maza published a conference paper on PARDI!, their implementation of characteristic sets and the method of transformation of characteristic sets with respect to different underlying orderings [2]; the paper under review is an elaboration of that paper. Although some effort is made to distinguish between programs and their specifications, the distinction is not very clear. For instance, in the proof for the specification of the complete function in Lemma 30 and also in Proposition 31, the reader is referred to the properties of saturate. Saturate does indeed appear in the program insert_and_rebuild, but not in the specification of insert_and_rebuild. Thus, the distinction between programs and their specifications remains blurred.
In some places, the programs are unnecessarily cumbersome. A case in point is the lsr function in Figure 7, where g only appears in two consecutive program lines: “g:= p” and “return (g, newP, newS).” If these two lines were simply replaced by “return (p, newP, newS),” and g were replaced by p in Proposition 28, accordingly, the reader would be spared a tedious and futile search for g in the source code and also for the reason of introducing g.
Despite these minor shortcomings, the paper contains various useful results that will certainly be valuable to the research community.