This module provides symbolic series development. The
substitution and the differential op-erator are the building
blocks for the development of series. The operator taylor/3 can be
used to develop a Taylor series. It takes an original reduced
expression, a varying variable and the number of desired summands.

?- X is 1/(1+A), Y is taylor(X,A,5).

X is 1/(1+A),

Y is 1-A+A^2-A^3+A^4-A^5

?- X is 1/(1+A), Y is laurent(X,A,5).

X is 1/(1+A),

Y is (1-A+A^2-A^3+A^4)/A^5

By default the Taylor series is developed at the point zero (0), known as Maclaurin series. There is a variant operator taylor/4 with a further argument for the point where the series should be developed. The operator laurent/[3,4] produce a Laurent series. Error handling is rudimentary. Cancellation does not yet generate non-zero side conditions.

We do not yet support some special functions. The series operators are realized without any limes operator. Limes calculation is implicit in our polynomial division since common roots are cancelled. We do not yet provide some computation for the remainder term, the convergence radius of the infinite series or a symbolic form for the infinite series.

The following series predicates are defined:

- taylor(P, X, N, Q):
- taylor(P, X, N, R, Q):
- The predicate succeeds in Q with the Taylor series of P along the variable X for N summands. The quinary predicate allows specifying the point R.
- laurent(P, X, N, Q):
- laurent(P, X, N, R, Q):
- The predicate succeeds in Q with the Laurent series of P along the variable X for N summands. The quinary predicate allows specifying the point R.