`asq', `af', `af_noalg'
-----------------------

asq(POLY)
     :: Square-free factorization of polynomial POLY over an algebraic
     number field.

af(POLY,ALGLIST)
af_noalg(POLY,DEFPOLYLIST)
     :: Factorization of polynomial POLY over an algebraic number field.

RETURN
     list

POLY
     polynomial

ALGLIST
     `root' list

DEFPOLYLIST
     `root' list of pairs of an indeterminate and a polynomial

   * Both defined in the file `sp'.

   * If the inputs contain no root's, these functions run fast since
     they invoke functions over the integers.  In contrast to this, if
     the inputs contain root's, they sometimes take a long time, since
     `cr_gcda()' is invoked.

   * Function `af()' requires the specification of base field, i.e.,
     list of root's for its second argument.

   * In the second argument `alglist', root defined last must come
     first.

   * In `af(F,AL)', `AL' denotes a list of `roots' and it represents an
     algebraic number field. In `AL=[An,...,A1]' each `Ak' should be
     defined as a root of a defining polynomial whose coefficients are
     in `Q(A(k+1),...,An)'.

          [1] A1 = newalg(x^2+1);
          [2] A2 = newalg(x^2+A1);
          [3] A3 = newalg(x^2+A2*x+A1);
          [4] af(x^2+A2*x+A1,[A2,A1]);
          [[x^2+(#1)*x+(#0),1]]

     To call `sp_noalg', one should replace each algebraic number AI in
     POLY with an indeterminate VI. `defpolylist' is a list
     [[VN,DN(VN,...,V1)],...,[V1,D(V1)]]. In this expression
     DI(VI,...,V1) is a defining polynomial of AI represented as a
     multivariate polynomial.

          [1] af_noalg(x^2+a2*x+a1,[[a2,a2^2+a1],[a1,a1^2+1]]);
          [[x^2+a2*x+a1,1]]

   * The result is a list, as a result of usual factorization, whose
     elements is of the form [factor, multiplicity].  In the result of
     `af_noalg', algebraic numbers in factor< are replaced by the
     indeterminates according to DEFPOLYLIST.

   * The product of all factors with multiplicities counted may differ
     from the input polynomial by a constant.

     [98] A = newalg(t^2-2);
     (#0)
     [99] asq(-x^4+6*x^3+(2*alg(0)-9)*x^2+(-6*alg(0))*x-2);
     [[-x^2+3*x+(#0),2]]
     [100] af(-x^2+3*x+alg(0),[alg(0)]);
     [[x+(#0-1),1],[-x+(#0+2),1]]
     [101] af_noalg(-x^2+3*x+a,[[a,x^2-2]]);
     [[x+a-1,1],[-x+a+2,1]]

Reference
     *Note `cr_gcda': cr_gcda, *Note `fctr sqfr': fctr sqfr

