# Accessors and Expansion

The following functions provide an interface to conveniently extract information from a power series defined as above.

## `Domain(s): RngPowAlgElt -> RngMPol`

Return the multivariate polynomial ring that is used for approximating the series $s$ by its truncations.

## `ExponentLattice(s): RngPowAlgElt -> Tup`

Return the exponent lattice $(1/e)\Gamma$ of the series as tuple $(\Gamma, e)$ where $\Gamma$ is an integral lattice and $e$ is an integer.

## `DefiningPolynomial(s): RngPowAlgElt -> RngUPolElt`

Return a defining polynomial of the series which is a squarefree univariate polynomial over the multivariate polynomial domain `Domain(s)`. In the case of series defined with substitutions, the computation may be expensive and can involve recursive resultant computations.

## `Order(s): RngPowAlgElt -> RngIntElt`

```magma
TestZero: BoolElt                    Default: false
```

Given a series $s$, return the integral order (total degree of smallest non-zero term occurring) of its expansion as returned by `Expand`, *i.e.*, its fractionary order times the exponent denominator. If $s$ is zero, this function will **not terminate**. Set `TestZero` to `true` to get a return value $-1$ in this case, but note that this involves the computationally complex call [`IsZero`](preds.md#function-rpa-zer).

## `Expand(s, ord): RngPowAlgElt, RngIntElt -> BoolElt, RngMPolElt`

Given the power series $\beta$ which is represented by $s$, let $\alpha$ be the result of substituting variables $x_i \mapsto x_i^e$ where $e$ is taken from the output of `ExponentLattice(s)` (*i.e.*, $\alpha$ is $\beta$ without exponent denominators). Returns `true` and the truncation of $\alpha$ modulo terms of order greater or equal `ord`. A return of `false` indicates that the representation is inconsistent (which should only happen when [`RationalPuiseux`](cons.md#function-rpa-pui) is called with non quasi-ordinary input or [`AlgebraicPowerSeries`](cons.md#function-rpa-aps) is used inconsistently).

## `Example: accessors (ex-4231eb)`

We can study the series `s3`.

```magma
> Domain(s3);
Polynomial ring of rank 1 over Univariate rational function
field over Rational Field
Graded Lexicographical Order
Variables: t
> ExponentLattice(s3);
<
    Standard Lattice of rank 1 and degree 1,

    3
>
> DefiningPolynomial(s3);
(s^45*t^45 - ... - 15*s^30*t^2 - s^30)*u^15 + ... +
(5*s^37*t^41 - ... + 120*s^31*t^19 - 30*s^30*t^18)*u^3 -
s^35*t^40 + ... - 5*s^31*t^21 + s^30*t^20
> Order(s3);
4

```

These commands reveal the following about `s3`: It is a power series in ${\mathbb{Q}}(s)[[t^{1/3} ]]$, because it is approximated in ${\mathbb{Q}}(s)[t]$ and has exponent lattice ${{1}\over{3}}{\mathbb{Z}}$. A defining polynomial in ${\mathbb{Q}}(s)[t][u]$ was also computed. (Recall that `s3` has been defined recursively.) The order is ${{4}\over{3}}$ which we know already from a previous expansion.
