# What the program computes

The input is a finite presentation `G=<x1,...,xn | r1,...,rm>` together with
an epimorphism `phi:G -> Z^ell`, or an oriented PD code converted to a
Wirtinger presentation.

The program forms the abelianized Fox matrix `A`, with relators as rows and
generators as columns, and uses

```text
relative Alexander module = Coker(A.T),
E_k = I_{n-k}(A).
```

Rows are multiplied by Laurent monomial units to obtain a polynomial matrix.
This preserves the Laurent determinantal ideal. If `J` is the resulting
polynomial ideal and `T=t1*...*tell`, the contraction is

```text
(J Lambda) intersect P = J:T^infinity = (J,1-z*T) intersect P.
```

The last equality is computed by lexicographic elimination with
`z>t1>...>tell`. The output is the reduced Gröbner basis in lex order
`t1>...>tell`, relative to the fixed coefficient field and ordered target
basis.
