In Magma, algebraic power series are represented in a hybrid lazy-exact way. Eventually every power series is given by a defining polynomial and a sufficiently large initial segment. Intermediate operations are represented in a lazy way. This makes it possible to compute both quickly and to high precision if necessary.
Note, however, that decision procedures may be very time intensive. In the sequel we have indicated in each function whether it is fast or whether it has to be used with care.
Algebraic power series are of type RngPowAlgElt.
There are two types of algebraic series: Atomic and Substitution which we sometimes refer to briefly as type A or type B. There is no difference in the functionality available but they are structurally different. The user can determine the type of a series, if (s)he desires, from the attribute type which is 0 for type A and 1 for type B.
Atomic series are the basic type that are given directly as the root of a univariate polynomial p(z) with given initial expansion. p(z) comes from a polynomial f(z) with coefficients in a multivariate polynomial ring. Either p = f or p is determined from f by evaluating the coefficients of f at a given array, subs, of algebraic power series. This allows the construction of algebraic power series as roots of polynomials over finitely-generated fields of already-constructed series. Most of the constructors return a series of this type.
Substitution series allow the composition of algebraic power series. The principal defining data is an algebraic power series s in n variables and an array of n algebraic series that are substituted into this. In fact, the substitution is not necessarily direct, but through n given elements in the dual lattice of the exponent lattice of s as explained in the constructor EvaluationPowerSeries.
Both types of series have an associated exponent lattice specified by two components: Γ, a sublattice of a standard integral lattice, and e, a positive integer. The expansion of the series will in general have fractional exponents and e is the LCM of the denominators of these (e may be 1). The finite expansions that are returned are always integral-exponent multivariate polynomials. The actual mathematical expansion is derived from this return value by dividing all exponents by e. With this scaling up of fractional exponents by e to get integral exponents, all exponent vectors for monomials occurring in the expansion (up to any degree) will lie in the lattice Γ. So the actual exponent lattice for the series is (1/e)Γ.
The user doesn't have to worry too much about the lattice Γ. It is automatically computed by most of the constructors for algebraic power series and the default of the standard integral lattice can always be used (assuming e is correct!). It's utility is that, in computing the exponent lattice for composite constructions on series, factors of e may be cancelled out from the resulting lattice. So an algebraic construction involving series with non-integral exponents may produce a result with only integral exponents. Such lattice computations are carried out automatically.
Important note: To speed up some of the basic internal polynomial operations, it is assumed that the domain of an algebraic power series is a multivariate polynomial ring with a degree ordering (glex or grevlex). Attempts to create series using polynomial rings with a non-degree ordering will result in a user error.
A verbose flag AlgSeries exists which can take values true, false, 0 or 1. Setting to true (or 1) will output information on the progress of some of the potentially more time-consuming intrinsics.