Function: rnfequation
Section: number_fields
C-Name: rnfequation0
Prototype: GGD0,L,
Help: rnfequation(nf,pol,{flag=0}): given a pol with coefficients in nf,
 gives an absolute equation z of the number field defined by pol. flag is
 optional, and can be 0: default, or nonzero, gives [z,al,k], where
 z defines the absolute equation L/Q as in the default behavior,
 al expresses as an element of L a root of the polynomial
 defining the base field nf, and k is a small integer such that
 t = b + k al is a root of z, for b a root of pol.
Doc: given a number field $\var{nf}$ as output by \kbd{nfinit}
 (or simply a monic irreducible integral polynomial defining the field)
 and a polynomial \var{pol} with coefficients in $\var{nf}$ defining a
 relative extension $L$ of $\var{nf}$, computes an absolute equation of $L$
 over $\Q$.

 The main variable of $\var{nf}$ \emph{must} be of lower priority than that
 of \var{pol} (see \secref{se:priority}). Note that for efficiency, this does
 not check whether the relative equation is irreducible over $\var{nf}$, but
 only if it is squarefree. If it is reducible but squarefree, the result will
 be the absolute equation of the \'etale algebra defined by \var{pol}. If
 \var{pol} is not squarefree, raise an \kbd{e\_DOMAIN} exception.
 \bprog
 ? rnfequation(y^2+1, x^2 - y)
 %1 = x^4 + 1
 ? T = y^3-2; rnfequation(nfinit(T), (x^3-2)/(x-Mod(y,T)))
 %2 = x^6 + 108  \\ Galois closure of Q(2^(1/3))
 @eprog

 If $\fl$ is nonzero, outputs a 3-component row vector $[z,a,k]$, where

 \item $z$ is the absolute equation of $L$ over $\Q$, as in the default
 behavior,

 \item $a$ expresses as a \typ{POLMOD} modulo $z$ a root $\alpha$ of the
 polynomial defining the base field $\var{nf}$,

 \item $k$ is a small integer such that $\theta = \beta+k\alpha$
 is a root of $z$, where $\beta$ is a root of $\var{pol}$. It is guaranteed
 that $k=0$ whenever $\Q(\beta) = L$.
 \bprog
 ? T = y^3-2; pol = x^2 +x*y + y^2;
 ? [z,a,k] = rnfequation(T, pol, 1);
 ? z
 %3 = x^6 + 108
 ? subst(T, y, a)
 %4 = 0
 ? alpha= Mod(y, T);
 ? beta = Mod(x*Mod(1,T), pol);
 ? subst(z, x, beta + k*alpha)
 %7 = 0
 @eprog

Variant: Also available are
 \fun{GEN}{rnfequation}{GEN nf, GEN pol} ($\fl = 0$) and
 \fun{GEN}{rnfequation2}{GEN nf, GEN pol} ($\fl = 1$).
