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

asq(POLY)
     :: 代数体上の 1 変数多項式の無平方分解

af(POLY,ALGLIST)
af_noalg(POLY,DEFPOLYLIST)
     :: 代数体上の 1 変数多項式の因数分解

RETURN
     リスト

POLY
     多項式

ALGLIST
     `root' のリスト

DEFPOLYLIST
     `root' を表す不定元と定義多項式のペアのリスト

   * いずれも `sp' で定義されている.

   * `root' を含まない場合は整数上の函数が呼び出され高速であるが,
     `root' を含む場合には, `cr_gcda()' が起動されるためしばしば
     時間がかかる.

   * `af()' は, 基礎体の指定, すなわち第 2 引数の, `root' のリスト
     の指定が必要である.

   * `alglist' で指定される `root' は, 後で定義されたものほど前の
     方に来なければならない.

   * `af(F,AL)' において, `AL' は代数的数のリストであり, 有理数体の
     代数拡大を表す. `AL=[An,...,A1]' と書くとき, 各 `Ak' は, それより
     右にある代数的数を係数とした,
     モニックな定義多項式で定義されていなければ ならない.

          [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]]

     `af_noalg' では, POLY に含まれる代数的数 AI を不定元 VI
     で置き換える. `defpolylist' は, [[vn,dn(vn,...,v1)],...,[v1,d(v1)]]
     なるリストである. ここで DI(vi,...,v1) は AI の定義多項式において
     代数的数を全て VJ に置き換えたものである.

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

   * 結果は, 通常の無平方分解, 因数分解と同様 [因子, 重複度]
     のリストである. `af_noalg' の場合, 因子 に現れる代数的数は,
     DEFPOLYLIST に従って不定元に置き換えられる.

   * 重複度を込めた因子の全ての積は, POLY と定数倍の違いがあり得る.

     [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]]

参照
     *Note `cr_gcda': cr_gcda, *Note `fctr sqfr': fctr sqfr

