[BACK]Return to groebner.texi CVS log [TXT][DIR] Up to [local] / OpenXM / src / asir-doc / parts

Diff for /OpenXM/src/asir-doc/parts/groebner.texi between version 1.11 and 1.26

version 1.11, 2003/04/28 06:43:10 version 1.26, 2020/09/08 09:16:57
Line 1 
Line 1 
 @comment $OpenXM: OpenXM/src/asir-doc/parts/groebner.texi,v 1.10 2003/04/28 03:09:23 noro Exp $  @comment $OpenXM: OpenXM/src/asir-doc/parts/groebner.texi,v 1.25 2020/09/07 05:16:41 noro Exp $
 \BJP  \BJP
 @node $B%0%l%V%J4pDl$N7W;;(B,,, Top  @node グレブナ基底の計算,,, Top
 @chapter $B%0%l%V%J4pDl$N7W;;(B  @chapter グレブナ基底の計算
 \E  \E
 \BEG  \BEG
 @node Groebner basis computation,,, Top  @node Groebner basis computation,,, Top
Line 10 
Line 10 
   
 @menu  @menu
 \BJP  \BJP
 * $BJ,;6I=8=B?9`<0(B::  * 分散表現多項式::
 * $B%U%!%$%k$NFI$_9~$_(B::  * 基本的な函数::
 * $B4pK\E*$JH!?t(B::  * 計算および表示の制御::
 * $B7W;;$*$h$SI=<($N@)8f(B::  * 項順序の設定::
 * $B9`=g=x$N@_Dj(B::  * Weight::
 * $BM-M}<0$r78?t$H$9$k%0%l%V%J4pDl7W;;(B::  * 有理式を係数とするグレブナ基底計算::
 * $B4pDlJQ49(B::  * 基底変換::
 * Weyl $BBe?t(B::  * Weyl 代数::
 * $B%0%l%V%J4pDl$K4X$9$kH!?t(B::  * 多項式環上の加群::
   * グレブナ基底に関する函数::
 \E  \E
 \BEG  \BEG
 * Distributed polynomial::  * Distributed polynomial::
Line 26 
Line 27 
 * Fundamental functions::  * Fundamental functions::
 * Controlling Groebner basis computations::  * Controlling Groebner basis computations::
 * Setting term orderings::  * Setting term orderings::
   * Weight::
 * Groebner basis computation with rational function coefficients::  * Groebner basis computation with rational function coefficients::
 * Change of ordering::  * Change of ordering::
 * Weyl algebra::  * Weyl algebra::
   * Module over a polynomial ring::
 * Functions for Groebner basis computation::  * Functions for Groebner basis computation::
 \E  \E
 @end menu  @end menu
   
 \BJP  \BJP
 @node $BJ,;6I=8=B?9`<0(B,,, $B%0%l%V%J4pDl$N7W;;(B  @node 分散表現多項式,,, グレブナ基底の計算
 @section $BJ,;6I=8=B?9`<0(B  @section 分散表現多項式
 \E  \E
 \BEG  \BEG
 @node Distributed polynomial,,, Groebner basis computation  @node Distributed polynomial,,, Groebner basis computation
Line 44 
Line 47 
   
 @noindent  @noindent
 \BJP  \BJP
 $BJ,;6I=8=B?9`<0$H$O(B, $BB?9`<0$NFbIt7A<0$N0l$D$G$"$k(B. $BDL>o$NB?9`<0(B  分散表現多項式とは, 多項式の内部形式の一つである. 通常の多項式
 (@code{type} $B$,(B 2) $B$O(B, $B:F5"I=8=$H8F$P$l$k7A<0$GI=8=$5$l$F$$$k(B. $B$9$J$o(B  (@code{type} が 2) は, 再帰表現と呼ばれる形式で表現されている. すなわ
 $B$A(B, $BFCDj$NJQ?t$r<gJQ?t$H$9$k(B 1 $BJQ?tB?9`<0$G(B, $B$=$NB>$NJQ?t$O(B, $B$=$N(B 1 $BJQ(B  ち, 特定の変数を主変数とする 1 変数多項式で, その他の変数は, その 1 変
 $B?tB?9`<0$N78?t$K(B, $B<gJQ?t$r4^$^$J$$B?9`<0$H$7$F8=$l$k(B. $B$3$N78?t$,(B, $B$^$?(B,  数多項式の係数に, 主変数を含まない多項式として現れる. この係数が, また,
 $B$"$kJQ?t$r<gJQ?t$H$9$kB?9`<0$H$J$C$F$$$k$3$H$+$i:F5"I=8=$H8F$P$l$k(B.  ある変数を主変数とする多項式となっていることから再帰表現と呼ばれる.
 \E  \E
 \BEG  \BEG
 A distributed polynomial is a polynomial with a special internal  A distributed polynomial is a polynomial with a special internal
Line 72  representation, it is called the `recursive representa
Line 75  representation, it is called the `recursive representa
 \EG $(x+y+z)^2 = 1 \cdot x^2 + (2 \cdot y + (2 \cdot z)) \cdot x + ((2 \cdot z) \cdot y + (1 \cdot z^2 ))$  \EG $(x+y+z)^2 = 1 \cdot x^2 + (2 \cdot y + (2 \cdot z)) \cdot x + ((2 \cdot z) \cdot y + (1 \cdot z^2 ))$
 @end tex  @end tex
 @end iftex  @end iftex
 @ifinfo  @ifnottex
 @example  @example
 (x+y+z)^2 = 1 x^2 + (2 y + (2 z)) x + ((2 z) y + (1 z^2 ))  (x+y+z)^2 = 1 x^2 + (2 y + (2 z)) x + ((2 z) y + (1 z^2 ))
 @end example  @end example
 @end ifinfo  @end ifnottex
   
 @noindent  @noindent
 \BJP  \BJP
 $B$3$l$KBP$7(B, $BB?9`<0$r(B, $BJQ?t$NQQ@Q$H78?t$N@Q$NOB$H$7$FI=8=$7$?$b$N$rJ,;6(B  これに対し, 多項式を, 変数の冪積と係数の積の和として表現したものを分散
 $BI=8=$H8F$V(B.  表現と呼ぶ.
 \E  \E
 \BEG  \BEG
 On the other hand,  On the other hand,
Line 100  something strange.)
Line 103  something strange.)
 \EG $(x+y+z)^2 = 1 \cdot x^2 + 2 \cdot xy + 2 \cdot xz + 1 \cdot y^2 + 2 \cdot yz +1 \cdot z^2$  \EG $(x+y+z)^2 = 1 \cdot x^2 + 2 \cdot xy + 2 \cdot xz + 1 \cdot y^2 + 2 \cdot yz +1 \cdot z^2$
 @end tex  @end tex
 @end iftex  @end iftex
 @ifinfo  @ifnottex
 @example  @example
 (x+y+z)^2 = 1 x^2 + 2 xy + 2 xz + 1 y^2 + 2 yz +1 z^2$  (x+y+z)^2 = 1 x^2 + 2 xy + 2 xz + 1 y^2 + 2 yz +1 z^2$
 @end example  @end example
 @end ifinfo  @end ifnottex
   
 @noindent  @noindent
 \BJP  \BJP
 $B%0%l%V%J4pDl7W;;$K$*$$$F$O(B, $BC19`<0$KCmL\$7$FA`:n$r9T$&$?$aB?9`<0$,J,;6I=8=(B  グレブナ基底計算においては, 単項式に注目して操作を行うため多項式が分散表現
 $B$5$l$F$$$kJ}$,$h$j8zN($N$h$$1i;;$,2DG=$K$J$k(B. $B$3$N$?$a(B, $BJ,;6I=8=B?9`<0$,(B,  されている方がより効率のよい演算が可能になる. このため, 分散表現多項式が,
 $B<1JL;R(B 9 $B$N7?$H$7$F(B @b{Asir} $B$N%H%C%W%l%Y%k$+$iMxMQ2DG=$H$J$C$F$$$k(B.  識別子 9 の型として @b{Asir} のトップレベルから利用可能となっている.
 $B$3$3$G(B, $B8e$N@bL@$N$?$a$K(B, $B$$$/$D$+$N8@MU$rDj5A$7$F$*$/(B.  ここで, 後の説明のために, いくつかの言葉を定義しておく.
 \E  \E
 \BEG  \BEG
 For computation of Groebner basis, efficient operation is expected if  For computation of Groebner basis, efficient operation is expected if
Line 127  Here, we provide several definitions for the later des
Line 130  Here, we provide several definitions for the later des
   
 @table @b  @table @b
 \BJP  \BJP
 @item $B9`(B (term)  @item 項 (term)
 $BJQ?t$NQQ@Q(B. $B$9$J$o$A(B, $B78?t(B 1 $B$NC19`<0$N$3$H(B. @b{Asir} $B$K$*$$$F$O(B,  変数の冪積. すなわち, 係数 1 の単項式のこと. @b{Asir} においては,
 \E  \E
 \BEG  \BEG
 @item term  @item term
Line 141  In an @b{Asir} session, it is displayed in the form li
Line 144  In an @b{Asir} session, it is displayed in the form li
 @end example  @end example
   
 \BJP  \BJP
 $B$H$$$&7A$GI=<($5$l(B, $B$^$?(B, $B$3$N7A$GF~NO2DG=$G$"$k(B. $B$3$NNc$O(B, 5 $BJQ?t$N9`(B  という形で表示され, また, この形で入力可能である. この例は, 5 変数の項
 $B$r<($9(B. $B3FJQ?t$r(B @code{a}, @code{b}, @code{c}, @code{d}, @code{e} $B$H$9$k$H(B  を示す. 各変数を @code{a}, @code{b}, @code{c}, @code{d}, @code{e} とすると
 $B$3$N9`$O(B @code{b*c^2*d^3*e^4} $B$rI=$9(B.  この項は @code{b*c^2*d^3*e^4} を表す.
 \E  \E
 \BEG  \BEG
 and also can be input in such a form.  and also can be input in such a form.
Line 153  the term represents @code{b*c^2*d^3*e^4} in the ordina
Line 156  the term represents @code{b*c^2*d^3*e^4} in the ordina
 \E  \E
   
 \BJP  \BJP
 @item $B9`=g=x(B (term order)  @item 項順序 (term order)
 $BJ,;6I=8=B?9`<0$K$*$1$k9`$O(B, $B<!$N@-<A$rK~$?$9A4=g=x$K$h$j@0Ns$5$l$k(B.  分散表現多項式における項は, 次の性質を満たす全順序により整列される.
 \E  \E
 \BEG  \BEG
 @item term order  @item term order
Line 163  Terms are ordered according to a total order with the 
Line 166  Terms are ordered according to a total order with the 
   
 @enumerate  @enumerate
 @item  @item
 \JP $BG$0U$N9`(B @code{t} $B$KBP$7(B @code{t} > 1  \JP 任意の項 @code{t} に対し @code{t} > 1
 \EG For all @code{t} @code{t} > 1.  \EG For all @code{t} @code{t} > 1.
   
 @item  @item
 \JP @code{t}, @code{s}, @code{u} $B$r9`$H$9$k;~(B, @code{t} > @code{s} $B$J$i$P(B @code{tu} > @code{su}  \JP @code{t}, @code{s}, @code{u} を項とする時, @code{t} > @code{s} ならば @code{tu} > @code{su}
 \EG For all @code{t}, @code{s}, @code{u} @code{t} > @code{s} implies @code{tu} > @code{su}.  \EG For all @code{t}, @code{s}, @code{u} @code{t} > @code{s} implies @code{tu} > @code{su}.
 @end enumerate  @end enumerate
   
 \BJP  \BJP
 $B$3$N@-<A$rK~$?$9A4=g=x$r9`=g=x$H8F$V(B. $B$3$N=g=x$OJQ?t=g=x(B ($BJQ?t$N%j%9%H(B)  この性質を満たす全順序を項順序と呼ぶ. この順序は変数順序 (変数のリスト)
 $B$H9`=g=x7?(B ($B?t(B, $B%j%9%H$^$?$O9TNs(B) $B$K$h$j;XDj$5$l$k(B.  と項順序型 (数, リストまたは行列) により指定される.
 \E  \E
 \BEG  \BEG
 Such a total order is called a term ordering. A term ordering is specified  Such a total order is called a term ordering. A term ordering is specified
Line 182  by a variable ordering (a list of variables) and a typ
Line 185  by a variable ordering (a list of variables) and a typ
 \E  \E
   
 \BJP  \BJP
 @item $BC19`<0(B (monomial)  @item 単項式 (monomial)
 $B9`$H78?t$N@Q(B.  項と係数の積.
 \E  \E
 \BEG  \BEG
 @item monomial  @item monomial
Line 195  In an @b{Asir} session, it is displayed in the form li
Line 198  In an @b{Asir} session, it is displayed in the form li
 2*<<0,1,2,3,4>>  2*<<0,1,2,3,4>>
 @end example  @end example
   
 \JP $B$H$$$&7A$GI=<($5$l(B, $B$^$?(B, $B$3$N7A$GF~NO2DG=$G$"$k(B.  \JP という形で表示され, また, この形で入力可能である.
 \EG and also can be input in such a form.  \EG and also can be input in such a form.
   
 \BJP  \BJP
 @itemx $BF,C19`<0(B (head monomial)  @item 頭項 (head term)
 @item $BF,9`(B (head term)  @itemx 頭単項式 (head monomial)
 @itemx $BF,78?t(B (head coefficient)  @itemx 頭係数 (head coefficient)
 $BJ,;6I=8=B?9`<0$K$*$1$k3FC19`<0$O(B, $B9`=g=x$K$h$j@0Ns$5$l$k(B. $B$3$N;~=g(B  分散表現多項式における各単項式は, 項順序により整列される. この時順
 $B=x:GBg$NC19`<0$rF,C19`<0(B, $B$=$l$K8=$l$k9`(B, $B78?t$r$=$l$>$lF,9`(B, $BF,78?t(B  序最大の単項式を頭単項式, それに現れる項, 係数をそれぞれ頭項, 頭係数
 $B$H8F$V(B.  と呼ぶ.
 \E  \E
 \BEG  \BEG
 @itemx head monomial  
 @item head term  @item head term
   @itemx head monomial
 @itemx head coefficient  @itemx head coefficient
   
 Monomials in a distributed polynomial is sorted by a total order.  Monomials in a distributed polynomial is sorted by a total order.
Line 218  the head term and the head coefficient respectively.
Line 221  the head term and the head coefficient respectively.
 \E  \E
 @end table  @end table
   
   @noindent
   ChangeLog
   @itemize @bullet
 \BJP  \BJP
 @node $B%U%!%$%k$NFI$_9~$_(B,,, $B%0%l%V%J4pDl$N7W;;(B  @item 分散表現多項式は任意のオブジェクトを係数にもてるようになった.
 @section $B%U%!%$%k$NFI$_9~$_(B  また加群のk成分の要素を次の形式 <<d0,d1,...:k>> で表現するようになった (2017-08-31).
 \E  \E
 \BEG  \BEG
 @node Reading files,,, Groebner basis computation  @item Distributed polynomials accept objects as coefficients.
 @section Reading files  The k-th element of a free module is expressed as <<d0,d1,...:k>> (2017-08-31).
 \E  \E
   @item
   1.15 algnum.c,
   1.53 ctrl.c,
   1.66 dp-supp.c,
   1.105 dp.c,
   1.73 gr.c,
   1.4 reduct.c,
   1.16 _distm.c,
   1.17 dalg.c,
   1.52 dist.c,
   1.20 distm.c,
   1.8  gmpq.c,
   1.238 engine/nd.c,
   1.102  ca.h,
   1.411  version.h,
   1.28 cpexpr.c,
   1.42 pexpr.c,
   1.20 pexpr_body.c,
   1.40 spexpr.c,
   1.27 arith.c,
   1.77 eval.c,
   1.56 parse.h,
   1.37 parse.y,
   1.8 stdio.c,
   1.31 plotf.c
   @end itemize
   
   \BJP
   @node 基本的な函数,,, グレブナ基底の計算
   @section 基本的な函数
   \E
   \BEG
   @node Fundamental functions,,, Groebner basis computation
   @section Fundamental functions
   \E
   
 @noindent  @noindent
 \BJP  \BJP
 $B%0%l%V%J4pDl$r7W;;$9$k$?$a$N4pK\E*$JH!?t$O(B @code{dp_gr_main()} $B$*$h$S(B  2003 年以前の版においては, グレブナ基底を計算するための基本的な函数は @code{dp_gr_main()} および
 @code{dp_gr_mod_main()}, @code{dp_gr_f_main()}  @code{dp_gr_mod_main()}, @code{dp_gr_f_main()}
  $B$J$k(B 3 $B$D$NAH$_9~$_H!?t$G$"$k$,(B, $BDL>o$O(B, $B%Q%i%a%?(B   なる 3 つの組み込み函数であった. 通常は, パラメタ
 $B@_Dj$J$I$r9T$C$?$N$A$3$l$i$r8F$S=P$9%f!<%6H!?t$rMQ$$$k$N$,JXMx$G$"$k(B.  設定などを行ったのちこれらを呼び出すユーザ函数を用いるのが便利である.
 $B$3$l$i$N%f!<%6H!?t$O(B, $B%U%!%$%k(B @samp{gr} $B$r(B @code{load()} $B$K$h$jFI(B  これらのユーザ函数は, ファイル @samp{gr} を @code{load()} により読
 $B$_9~$`$3$H$K$h$j;HMQ2DG=$H$J$k(B. @samp{gr} $B$O(B, @b{Asir} $B$NI8=`(B  み込むことにより使用可能となる. @samp{gr} は, @b{Asir} の標準
 $B%i%$%V%i%j%G%#%l%/%H%j$KCV$+$l$F$$$k(B.  ライブラリディレクトリに置かれている.
   @example
   [0] load("gr")$
   @end example
   
   
   現在の版においては, @code{nd_gr}, @code{nd_f4} などの新しい関数が実装されており,
   一般にこちらの方が効率よくグレブナー基底が計算できる
   (@fref{nd_gr nd_gr_trace nd_f4 nd_f4_trace nd_weyl_gr nd_weyl_gr_trace}).
 \E  \E
 \BEG  \BEG
 Facilities for computing Groebner bases are  In the vesion before 2003,
   facilities for computing Groebner bases are
 @code{dp_gr_main()}, @code{dp_gr_mod_main()}and @code{dp_gr_f_main()}.  @code{dp_gr_main()}, @code{dp_gr_mod_main()}and @code{dp_gr_f_main()}.
 To call these functions,  To call these functions,
 it is necessary to set several parameters correctly and it is convenient  it is necessary to set several parameters correctly and it is convenient
Line 247  to use a set of interface functions provided in the li
Line 297  to use a set of interface functions provided in the li
 The facilities will be ready to use after you load the package by  The facilities will be ready to use after you load the package by
 @code{load()}.  The package @samp{gr} is placed in the standard library  @code{load()}.  The package @samp{gr} is placed in the standard library
 directory of @b{Asir}.  directory of @b{Asir}.
 \E  
   
 @example  In the current vesion, new functions such as @code{nd_gr}, @code{nd_f4} are available
 [0] load("gr")$  and these function can compute Groebner bases more efficiently than old functions
 @end example  (@fref{nd_gr nd_gr_trace nd_f4 nd_f4_trace nd_weyl_gr nd_weyl_gr_trace}).
   
 \BJP  
 @node $B4pK\E*$JH!?t(B,,, $B%0%l%V%J4pDl$N7W;;(B  
 @section $B4pK\E*$JH!?t(B  
 \E  \E
 \BEG  
 @node Fundamental functions,,, Groebner basis computation  
 @section Fundamental functions  
 \E  
   
 @noindent  @noindent
 \BJP  \BJP
 @samp{gr} $B$G$O?tB?$/$NH!?t$,Dj5A$5$l$F$$$k$,(B, $BD>@\(B  2003 年以前の版において
 $B%0%l%V%J4pDl$r7W;;$9$k$?$a$N%H%C%W%l%Y%k$O<!$N(B 3 $B$D$G$"$k(B.  グレブナ基底を計算するためのトップレベルは次の 3 つである.
 $B0J2<$G(B, @var{plist} $B$OB?9`<0$N%j%9%H(B, @var{vlist} $B$OJQ?t(B ($BITDj85(B) $B$N%j%9%H(B,  以下で, @var{plist} は多項式のリスト, @var{vlist} は変数 (不定元) のリスト,
 @var{order} $B$OJQ?t=g=x7?(B, @var{p} $B$O(B @code{2^27} $BL$K~$NAG?t$G$"$k(B.  @var{order} は変数順序型, @var{p} は @code{2^27} 未満の素数である.
 \E  \E
 \BEG  \BEG
 There are many functions and options defined in the package @samp{gr}.  There are many functions and options defined in the package @samp{gr}.
Line 284  and @var{p} stand for  a list of polynomials,  a list 
Line 325  and @var{p} stand for  a list of polynomials,  a list 
 @item gr(@var{plist},@var{vlist},@var{order})  @item gr(@var{plist},@var{vlist},@var{order})
   
 \BJP  \BJP
 Gebauer-Moeller $B$K$h$k(B useless pair elimination criteria, sugar  Gebauer-Moeller による useless pair elimination criteria, sugar
 strategy $B$*$h$S(B Traverso $B$K$h$k(B trace-lifting $B$rMQ$$$?(B Buchberger $B%"%k(B  strategy および Traverso による trace-lifting を用いた Buchberger アル
 $B%4%j%:%`$K$h$kM-M}?t78?t%0%l%V%J4pDl7W;;H!?t(B. $B0lHL$K$O$3$NH!?t$rMQ$$$k(B.  ゴリズムによる有理数係数グレブナ基底計算函数. 一般にはこの函数を用いる.
 \E  \E
 \BEG  \BEG
 Function that computes Groebner bases over the rationals. The  Function that computes Groebner bases over the rationals. The
Line 298  Traverso. For ordinary computation, this function is u
Line 339  Traverso. For ordinary computation, this function is u
 @item hgr(@var{plist},@var{vlist},@var{order})  @item hgr(@var{plist},@var{vlist},@var{order})
   
 \BJP  \BJP
 $BF~NOB?9`<0$r@F<!2=$7$?8e(B @code{gr()} $B$N%0%l%V%J4pDl8uJd@8@.It$K$h$j8u(B  入力多項式を斉次化した後 @code{gr()} のグレブナ基底候補生成部により候
 $BJd@8@.$7(B, $BHs@F<!2=(B, interreduce $B$7$?$b$N$r(B @code{gr()} $B$N%0%l%V%J4pDl(B  補生成し, 非斉次化, interreduce したものを @code{gr()} のグレブナ基底
 $B%A%'%C%/It$G%A%'%C%/$9$k(B. 0 $B<!85%7%9%F%`(B ($B2r$N8D?t$,M-8B8D$NJ}Dx<07O(B)  チェック部でチェックする. 0 次元システム (解の個数が有限個の方程式系)
 $B$N>l9g(B, sugar strategy $B$,78?tKDD%$r0z$-5/$3$9>l9g$,$"$k(B. $B$3$N$h$&$J>l(B  の場合, sugar strategy が係数膨張を引き起こす場合がある. このような場
 $B9g(B, strategy $B$r@F<!2=$K$h$k(B strategy $B$KCV$-49$($k$3$H$K$h$j78?tKDD%$r(B  合, strategy を斉次化による strategy に置き換えることにより係数膨張を
 $BM^@)$9$k$3$H$,$G$-$k>l9g$,B?$$(B.  抑制することができる場合が多い.
 \E  \E
 \BEG  \BEG
 After homogenizing the input polynomials a candidate of the \gr basis  After homogenizing the input polynomials a candidate of the \gr basis
Line 317  the swells for such cases.
Line 358  the swells for such cases.
 @item gr_mod(@var{plist},@var{vlist},@var{order},@var{p})  @item gr_mod(@var{plist},@var{vlist},@var{order},@var{p})
   
 \BJP  \BJP
 Gebauer-Moeller $B$K$h$k(B useless pair elimination criteria, sugar  Gebauer-Moeller による useless pair elimination criteria, sugar
 strategy $B$*$h$S(B Buchberger $B%"%k%4%j%:%`$K$h$k(B GF(p) $B78?t%0%l%V%J4pDl7W(B  strategy および Buchberger アルゴリズムによる GF(p) 係数グレブナ基底計
 $B;;H!?t(B.  算函数.
 \E  \E
 \BEG  \BEG
 Function that computes Groebner bases over GF(@var{p}). The same  Function that computes Groebner bases over GF(@var{p}). The same
 algorithm as @code{gr()} is used.  algorithm as @code{gr()} is used.
 \E  \E
   
 @end table  @end table
   
 \BJP  \BJP
 @node $B7W;;$*$h$SI=<($N@)8f(B,,, $B%0%l%V%J4pDl$N7W;;(B  現在の版においては, これらに相当する機能は @code{nd_gr}, @code{nd_gr_trace} にまとめられている.
 @section $B7W;;$*$h$SI=<($N@)8f(B  詳しくは @fref{nd_gr nd_gr_trace nd_f4 nd_f4_trace nd_weyl_gr nd_weyl_gr_trace} 参照.
 \E  \E
 \BEG  \BEG
   In the current version, the functions corresponding to these three interfaces are provided
   by @code{nd_gr}, @code{nd_gr_trace}.
   See @fref{nd_gr nd_gr_trace nd_f4 nd_f4_trace nd_weyl_gr nd_weyl_gr_trace}.
   \E
   
   \BJP
   @node 計算および表示の制御,,, グレブナ基底の計算
   @section 計算および表示の制御
   \E
   \BEG
 @node Controlling Groebner basis computations,,, Groebner basis computation  @node Controlling Groebner basis computations,,, Groebner basis computation
 @section Controlling Groebner basis computations  @section Controlling Groebner basis computations
 \E  \E
   
 @noindent  @noindent
 \BJP  \BJP
 $B%0%l%V%J4pDl$N7W;;$K$*$$$F(B, $B$5$^$6$^$J%Q%i%a%?@_Dj$r9T$&$3$H$K$h$j7W;;(B,  グレブナ基底の計算において, さまざまなパラメタ設定を行うことにより計算,
 $BI=<($r@)8f$9$k$3$H$,$G$-$k(B. $B$3$l$i$O(B, $BAH$_9~$_H!?t(B @code{dp_gr_flags()}  表示を制御することができる. これらは, 組み込み函数 @code{dp_gr_flags()}
 $B$K$h$j@_Dj;2>H$9$k$3$H$,$G$-$k(B. $BL50z?t$G(B @code{dp_gr_flags()} $B$r<B9T$9$k(B  により設定参照することができる. 無引数で @code{dp_gr_flags()} を実行する
 $B$H(B, $B8=:_@_Dj$5$l$F$$$k%Q%i%a%?$,(B, $BL>A0$HCM$N%j%9%H$GJV$5$l$k(B.  と, 現在設定されているパラメタが, 名前と値のリストで返される.
 \E  \E
 \BEG  \BEG
 One can cotrol a Groebner basis computation by setting various parameters.  One can cotrol a Groebner basis computation by setting various parameters.
Line 358  ShowMag,1,Print,1,Stat,0,Reverse,0,InterReduce,0,Multi
Line 408  ShowMag,1,Print,1,Stat,0,Reverse,0,InterReduce,0,Multi
 @end example  @end example
   
 \BJP  \BJP
 $B0J2<$G(B, $B3F%Q%i%a%?$N0UL#$r@bL@$9$k(B. on $B$N>l9g$H$O(B, $B%Q%i%a%?$,(B 0 $B$G$J$$>l9g$r(B  以下で, 各パラメタの意味を説明する. on の場合とは, パラメタが 0 でない場合を
 $B$$$&(B. $B$3$l$i$N%Q%i%a%?$N=i4|CM$OA4$F(B 0 (off) $B$G$"$k(B.  いう. これらのパラメタの初期値は全て 0 (off) である.
 \E  \E
 \BEG  \BEG
 The return value is a list which contains the names of parameters and their  The return value is a list which contains the names of parameters and their
Line 370  parameter is not zero.
Line 420  parameter is not zero.
 @table @code  @table @code
 @item NoSugar  @item NoSugar
 \BJP  \BJP
 on $B$N>l9g(B, sugar strategy $B$NBe$o$j$K(B Buchberger$B$N(B normal strategy $B$,MQ(B  on の場合, sugar strategy の代わりに Buchbergerの normal strategy が用
 $B$$$i$l$k(B.  いられる.
 \E  \E
 \BEG  \BEG
 If `on', Buchberger's normal strategy is used instead of sugar strategy.  If `on', Buchberger's normal strategy is used instead of sugar strategy.
 \E  \E
   
 @item NoCriB  @item NoCriB
 \JP on $B$N>l9g(B, $BITI,MWBP8!=P5,=`$N$&$A(B, $B5,=`(B B $B$rE,MQ$7$J$$(B.  \JP on の場合, 不必要対検出規準のうち, 規準 B を適用しない.
 \EG If `on', criterion B among the Gebauer-Moeller's criteria is not applied.  \EG If `on', criterion B among the Gebauer-Moeller's criteria is not applied.
   
 @item NoGC  @item NoGC
 \JP on $B$N>l9g(B, $B7k2L$,%0%l%V%J4pDl$K$J$C$F$$$k$+$I$&$+$N%A%'%C%/$r9T$o$J$$(B.  \JP on の場合, 結果がグレブナ基底になっているかどうかのチェックを行わない.
 \BEG  \BEG
 If `on', the check that a Groebner basis candidate is indeed a Groebner basis,  If `on', the check that a Groebner basis candidate is indeed a Groebner basis,
 is not executed.  is not executed.
Line 390  is not executed.
Line 440  is not executed.
   
 @item NoMC  @item NoMC
 \BJP  \BJP
 on $B$N>l9g(B, $B7k2L$,F~NO%$%G%"%k$HF1Ey$N%$%G%"%k$G$"$k$+$I$&$+$N%A%'%C%/(B  on の場合, 結果が入力イデアルと同等のイデアルであるかどうかのチェック
 $B$r9T$o$J$$(B.  を行わない.
 \E  \E
 \BEG  \BEG
 If `on', the check that the resulting polynomials generates the same ideal as  If `on', the check that the resulting polynomials generates the same ideal as
Line 400  the ideal generated by the input, is not executed.
Line 450  the ideal generated by the input, is not executed.
   
 @item NoRA  @item NoRA
 \BJP  \BJP
 on $B$N>l9g(B, $B7k2L$r(B reduced $B%0%l%V%J4pDl$K$9$k$?$a$N(B  on の場合, 結果を reduced グレブナ基底にするための
 interreduce $B$r9T$o$J$$(B.  interreduce を行わない.
 \E  \E
 \BEG  \BEG
 If `on', the interreduction, which makes the Groebner basis reduced, is not  If `on', the interreduction, which makes the Groebner basis reduced, is not
Line 410  executed.
Line 460  executed.
   
 @item NoGCD  @item NoGCD
 \BJP  \BJP
 on $B$N>l9g(B, $BM-M}<078?t$N%0%l%V%J4pDl7W;;$K$*$$$F(B, $B@8@.$5$l$?B?9`<0$N(B,  on の場合, 有理式係数のグレブナ基底計算において, 生成された多項式の,
 $B78?t$N(B content $B$r$H$i$J$$(B.  係数の content をとらない.
 \E  \E
 \BEG  \BEG
 If `on', content removals are not executed during a Groebner basis computation  If `on', content removals are not executed during a Groebner basis computation
Line 419  over a rational function field.
Line 469  over a rational function field.
 \E  \E
   
 @item Top  @item Top
 \JP on $B$N>l9g(B, normal form $B7W;;$K$*$$$FF,9`>C5n$N$_$r9T$&(B.  \JP on の場合, normal form 計算において頭項消去のみを行う.
 \EG If `on', Only the head term of the polynomial being reduced is reduced.  \EG If `on', Only the head term of the polynomial being reduced is reduced.
   
 @comment @item Interreduce  @comment @item Interreduce
 @comment \BJP  @comment \BJP
 @comment on $B$N>l9g(B, $BB?9`<0$r@8@.$9$kKh$K(B, $B$=$l$^$G@8@.$5$l$?4pDl$r$=$NB?9`<0$K(B  @comment on の場合, 多項式を生成する毎に, それまで生成された基底をその多項式に
 @comment $B$h$k(B normal form $B$GCV$-49$($k(B.  @comment よる normal form で置き換える.
 @comment \E  @comment \E
 @comment \BEG  @comment \BEG
 @comment If `on', intermediate basis elements are reduced by using a newly generated  @comment If `on', intermediate basis elements are reduced by using a newly generated
Line 434  over a rational function field.
Line 484  over a rational function field.
   
 @item Reverse  @item Reverse
 \BJP  \BJP
 on $B$N>l9g(B, normal form $B7W;;$N:]$N(B reducer $B$r(B, $B?7$7$/@8@.$5$l$?$b$N$rM%(B  on の場合, normal form 計算の際の reducer を, 新しく生成されたものを優
 $B@h$7$FA*$V(B.  先して選ぶ.
 \E  \E
 \BEG  \BEG
 If `on', the selection strategy of reducer in a normal form computation  If `on', the selection strategy of reducer in a normal form computation
Line 443  is such that a newer reducer is used first.
Line 493  is such that a newer reducer is used first.
 \E  \E
   
 @item Print  @item Print
 \JP on $B$N>l9g(B, $B%0%l%V%J4pDl7W;;$NESCf$K$*$1$k$5$^$6$^$J>pJs$rI=<($9$k(B.  \JP on の場合, グレブナ基底計算の途中におけるさまざまな情報を表示する.
 \BEG  \BEG
 If `on', various informations during a Groebner basis computation is  If `on', various informations during a Groebner basis computation is
 displayed.  displayed.
 \E  \E
   
 @item PrintShort  @item PrintShort
 \JP on $B$G!"(BPrint $B$,(B off $B$N>l9g(B, $B%0%l%V%J4pDl7W;;$NESCf$N>pJs$rC;=L7A$GI=<($9$k(B.  \JP on で、Print が off の場合, グレブナ基底計算の途中の情報を短縮形で表示する.
 \BEG  \BEG
 If `on' and Print is `off', short information during a Groebner basis computation is  If `on' and Print is `off', short information during a Groebner basis computation is
 displayed.  displayed.
Line 458  displayed.
Line 508  displayed.
   
 @item Stat  @item Stat
 \BJP  \BJP
 on $B$G(B @code{Print} $B$,(B off $B$J$i$P(B, @code{Print} $B$,(B on $B$N$H$-I=<($5(B  on で @code{Print} が off ならば, @code{Print} が on のとき表示さ
 $B$l$k%G!<%?$NFb(B, $B=87W%G!<%?$N$_$,I=<($5$l$k(B.  れるデータの内, 集計データのみが表示される.
 \E  \E
 \BEG  \BEG
 If `on', a summary of informations is shown after a Groebner basis  If `on', a summary of informations is shown after a Groebner basis
Line 468  computation. Note that the summary is always shown if 
Line 518  computation. Note that the summary is always shown if 
   
 @item ShowMag  @item ShowMag
 \BJP  \BJP
 on $B$G(B @code{Print} $B$,(B on $B$J$i$P(B, $B@8@.$,@8@.$5$l$kKh$K(B, $B$=$NB?9`<0$N(B  on で @code{Print} が on ならば, 生成が生成される毎に, その多項式の
 $B78?t$N%S%C%HD9$NOB$rI=<($7(B, $B:G8e$K(B, $B$=$l$i$NOB$N:GBgCM$rI=<($9$k(B.  係数のビット長の和を表示し, 最後に, それらの和の最大値を表示する.
 \E  \E
 \BEG  \BEG
 If `on' and @code{Print} is `on', the sum of bit length of  If `on' and @code{Print} is `on', the sum of bit length of
Line 481  computation the maximal value among the sums is shown.
Line 531  computation the maximal value among the sums is shown.
 @item Content  @item Content
 @itemx Multiple  @itemx Multiple
 \BJP  \BJP
 0 $B$G$J$$M-M}?t$N;~(B, $BM-M}?t>e$N@55,7A7W;;$K$*$$$F(B, $B78?t$N%S%C%HD9$NOB$,(B  0 でない有理数の時, 有理数上の正規形計算において, 係数のビット長の和が
 @code{Content} $BG\$K$J$k$4$H$K78?tA4BN$N(B GCD $B$,7W;;$5$l(B, $B$=$N(B GCD $B$G(B  @code{Content} 倍になるごとに係数全体の GCD が計算され, その GCD で
 $B3d$C$?B?9`<0$r4JLs$9$k(B. @code{Content} $B$,(B 1 $B$J$i$P(B, $B4JLs$9$k$4$H$K(B  割った多項式を簡約する. @code{Content} が 1 ならば, 簡約するごとに
 GCD $B7W;;$,9T$o$l0lHL$K$O8zN($,0-$/$J$k$,(B, @code{Content} $B$r(B 2 $BDxEY(B  GCD 計算が行われ一般には効率が悪くなるが, @code{Content} を 2 程度
 $B$H$9$k$H(B, $B5pBg$J@0?t$,78?t$K8=$l$k>l9g(B, $B8zN($,NI$/$J$k>l9g$,$"$k(B.  とすると, 巨大な整数が係数に現れる場合, 効率が良くなる場合がある.
 backward compatibility $B$N$?$a!"(B@code{Multiple} $B$G@0?tCM$r;XDj$G$-$k(B.  backward compatibility のため、@code{Multiple} で整数値を指定できる.
 \E  \E
 \BEG  \BEG
 If a non-zero rational number, in a normal form computation  If a non-zero rational number, in a normal form computation
Line 505  backward compatibility.
Line 555  backward compatibility.
 @item Demand  @item Demand
   
 \BJP  \BJP
 $B@5Ev$J%G%#%l%/%H%jL>(B ($BJ8;zNs(B) $B$rCM$K;}$D$H$-(B, $B@8@.$5$l$?B?9`<0$O%a%b%j(B  正当なディレクトリ名 (文字列) を値に持つとき, 生成された多項式はメモリ
 $BCf$K$*$+$l$:(B, $B$=$N%G%#%l%/%H%jCf$K%P%$%J%j%G!<%?$H$7$FCV$+$l(B, $B$=$NB?9`(B  中におかれず, そのディレクトリ中にバイナリデータとして置かれ, その多項
 $B<0$rMQ$$$k(B normal form $B7W;;$N:](B, $B<+F0E*$K%a%b%jCf$K%m!<%I$5$l$k(B. $B3FB?(B  式を用いる normal form 計算の際, 自動的にメモリ中にロードされる. 各多
 $B9`<0$O(B, $BFbIt$G$N%$%s%G%C%/%9$r%U%!%$%kL>$K;}$D%U%!%$%k$K3JG<$5$l$k(B.  項式は, 内部でのインデックスをファイル名に持つファイルに格納される.
 $B$3$3$G;XDj$5$l$?%G%#%l%/%H%j$K=q$+$l$?%U%!%$%k$O<+F0E*$K$O>C5n$5$l$J$$(B  ここで指定されたディレクトリに書かれたファイルは自動的には消去されない
 $B$?$a(B, $B%f!<%6$,@UG$$r;}$C$F>C5n$9$kI,MW$,$"$k(B.  ため, ユーザが責任を持って消去する必要がある.
 \E  \E
 \BEG  \BEG
 If the value (a character string) is a valid directory name, then  If the value (a character string) is a valid directory name, then
Line 523  and one should remove them by hand.
Line 573  and one should remove them by hand.
 @end table  @end table
   
 @noindent  @noindent
 \JP @code{Print} $B$,(B 0 $B$G$J$$>l9g<!$N$h$&$J%G!<%?$,I=<($5$l$k(B.  \JP @code{Print} が 0 でない場合次のようなデータが表示される.
 \EG If @code{Print} is `on', the following informations are shown.  \EG If @code{Print} is `on', the following informations are shown.
   
 @example  @example
Line 551  D=12 ZR=5 NZR=6 Max_mag=6
Line 601  D=12 ZR=5 NZR=6 Max_mag=6
   
 @noindent  @noindent
 \BJP  \BJP
 $B:G=i$KI=<($5$l$k(B @code{mod}, @code{eval} $B$O(B, trace-lifting $B$GMQ$$$i$l$kK!(B  最初に表示される @code{mod}, @code{eval} は, trace-lifting で用いられる法
 $B$G$"$k(B. @code{mod} $B$OAG?t(B, @code{eval} $B$OM-M}<078?t$N>l9g$KMQ$$$i$l$k(B  である. @code{mod} は素数, @code{eval} は有理式係数の場合に用いられる
 $B?t$N%j%9%H$G$"$k(B.  数のリストである.
 \E  \E
 \BEG  \BEG
 In this example @code{mod} and @code{eval} indicate moduli used in  In this example @code{mod} and @code{eval} indicate moduli used in
Line 562  used for evaluation when the ground field is a field o
Line 612  used for evaluation when the ground field is a field o
 \E  \E
   
 @noindent  @noindent
 \JP $B7W;;ESCf$GB?9`<0$,@8@.$5$l$kKh$K<!$N7A$N%G!<%?$,I=<($5$l$k(B.  \JP 計算途中で多項式が生成される毎に次の形のデータが表示される.
 \EG The following information is shown after every normal form computation.  \EG The following information is shown after every normal form computation.
   
 @example  @example
Line 570  used for evaluation when the ground field is a field o
Line 620  used for evaluation when the ground field is a field o
 @end example  @end example
   
 @noindent  @noindent
 \JP $B$=$l$i$N0UL#$O<!$NDL$j(B.  \JP それらの意味は次の通り.
 \EG Meaning of each component is as follows.  \EG Meaning of each component is as follows.
   
 @table @code  @table @code
 \BJP  \BJP
 @item TNF  @item TNF
   
 normal form $B7W;;;~4V(B ($BIC(B)  normal form 計算時間 (秒)
   
 @item TCONT  @item TCONT
   
 content $B7W;;;~4V(B ($BIC(B)  content 計算時間 (秒)
   
 @item HT  @item HT
   
 $B@8@.$5$l$?B?9`<0$NF,9`(B  生成された多項式の頭項
   
 @item INDEX  @item INDEX
   
 S-$BB?9`<0$r9=@.$9$kB?9`<0$N%$%s%G%C%/%9$N%Z%"(B  S-多項式を構成する多項式のインデックスのペア
   
 @item NB  @item NB
   
 $B8=:_$N(B, $B>iD9@-$r=|$$$?4pDl$N?t(B  現在の, 冗長性を除いた基底の数
   
 @item NAB  @item NAB
   
 $B8=:_$^$G$K@8@.$5$l$?4pDl$N?t(B  現在までに生成された基底の数
   
 @item RP  @item RP
   
 $B;D$j$N%Z%"$N?t(B  残りのペアの数
   
 @item S  @item S
   
 $B@8@.$5$l$?B?9`<0$N(B sugar $B$NCM(B  生成された多項式の sugar の値
   
 @item M  @item M
   
 $B@8@.$5$l$?B?9`<0$N78?t$N%S%C%HD9$NOB(B (@code{ShowMag} $B$,(B on $B$N;~$KI=<($5$l$k(B. )  生成された多項式の係数のビット長の和 (@code{ShowMag} が on の時に表示される. )
 \E  \E
 \BEG  \BEG
 @item TNF  @item TNF
Line 652  Magnitude of the genrated basis element (shown if @cod
Line 702  Magnitude of the genrated basis element (shown if @cod
   
 @noindent  @noindent
 \BJP  \BJP
 $B:G8e$K(B, $B=87W%G!<%?$,I=<($5$l$k(B. $B0UL#$O<!$NDL$j(B.  最後に, 集計データが表示される. 意味は次の通り.
 ($B;~4V$NI=<($K$*$$$F(B, $B?t;z$,(B 2 $B$D$"$k$b$N$O(B, $B7W;;;~4V$H(B GC $B;~4V$N%Z%"$G$"$k(B.)  (時間の表示において, 数字が 2 つあるものは, 計算時間と GC 時間のペアである.)
 \E  \E
 \BEG  \BEG
 The summary of the informations shown after a Groebner basis  The summary of the informations shown after a Groebner basis
Line 666  for garbage colection.
Line 716  for garbage colection.
 \BJP  \BJP
 @item UP  @item UP
   
 $B%Z%"$N%j%9%H$NA`:n$K$+$+$C$?;~4V(B  ペアのリストの操作にかかった時間
   
 @item SP  @item SP
   
 $BM-M}?t>e$N(B S-$BB?9`<07W;;;~4V(B  有理数上の S-多項式計算時間
   
 @item SPM  @item SPM
   
 $BM-8BBN>e$N(B S-$BB?9`<07W;;;~4V(B  有限体上の S-多項式計算時間
   
 @item NF  @item NF
   
 $BM-M}?t>e$N(B normal form $B7W;;;~4V(B  有理数上の normal form 計算時間
   
 @item NFM  @item NFM
   
 $BM-8BBN>e$N(B normal form $B7W;;;~4V(B  有限体上の normal form 計算時間
   
 @item ZNFM  @item ZNFM
   
 @code{NFM} $B$NFb(B, 0 $B$X$N(B reduction $B$K$+$+$C$?;~4V(B  @code{NFM} の内, 0 への reduction にかかった時間
   
 @item PZ  @item PZ
   
 content $B7W;;;~4V(B  content 計算時間
   
 @item NP  @item NP
   
 $BM-M}?t78?tB?9`<0$N78?t$KBP$9$k>jM>1i;;$N7W;;;~4V(B  有理数係数多項式の係数に対する剰余演算の計算時間
   
 @item MP  @item MP
   
 S-$BB?9`<0$r@8@.$9$k%Z%"$NA*Br$K$+$+$C$?;~4V(B  S-多項式を生成するペアの選択にかかった時間
   
 @item RA  @item RA
   
 interreduce $B7W;;;~4V(B  interreduce 計算時間
   
 @item MC  @item MC
   
 trace-lifting $B$K$*$1$k(B, $BF~NOB?9`<0$N%a%s%P%7%C%W7W;;;~4V(B  trace-lifting における, 入力多項式のメンバシップ計算時間
   
 @item GC  @item GC
   
 $B7k2L$N%0%l%V%J4pDl8uJd$N%0%l%V%J4pDl%A%'%C%/;~4V(B  結果のグレブナ基底候補のグレブナ基底チェック時間
   
 @item T  @item T
   
 $B@8@.$5$l$?%Z%"$N?t(B  生成されたペアの数
   
 @item B, M, F, D  @item B, M, F, D
   
 $B3F(B criterion $B$K$h$j=|$+$l$?%Z%"$N?t(B  各 criterion により除かれたペアの数
   
 @item ZR  @item ZR
   
 0 $B$K(B reduce $B$5$l$?%Z%"$N?t(B  0 に reduce されたペアの数
   
 @item NZR  @item NZR
   
 0 $B$G$J$$B?9`<0$K(B reduce $B$5$l$?%Z%"$N?t(B  0 でない多項式に reduce されたペアの数
   
 @item Max_mag  @item Max_mag
   
 $B@8@.$5$l$?B?9`<0$N(B, $B78?t$N%S%C%HD9$NOB$N:GBgCM(B  生成された多項式の, 係数のビット長の和の最大値
 \E  \E
 \BEG  \BEG
 @item UP  @item UP
Line 806  Maximal magnitude among all the generated polynomials
Line 856  Maximal magnitude among all the generated polynomials
 @end table  @end table
   
 \BJP  \BJP
 @node $B9`=g=x$N@_Dj(B,,, $B%0%l%V%J4pDl$N7W;;(B  @node 項順序の設定,,, グレブナ基底の計算
 @section $B9`=g=x$N@_Dj(B  @section 項順序の設定
 \E  \E
 \BEG  \BEG
 @node Setting term orderings,,, Groebner basis computation  @node Setting term orderings,,, Groebner basis computation
Line 816  Maximal magnitude among all the generated polynomials
Line 866  Maximal magnitude among all the generated polynomials
   
 @noindent  @noindent
 \BJP  \BJP
 $B9`$OFbIt$G$O(B, $B3FJQ?t$K4X$9$k;X?t$r@.J,$H$9$k@0?t%Y%/%H%k$H$7$FI=8=$5$l(B  項は内部では, 各変数に関する指数を成分とする整数ベクトルとして表現され
 $B$k(B. $BB?9`<0$rJ,;6I=8=B?9`<0$KJQ49$9$k:](B, $B3FJQ?t$,$I$N@.J,$KBP1~$9$k$+$r(B  る. 多項式を分散表現多項式に変換する際, 各変数がどの成分に対応するかを
 $B;XDj$9$k$N$,(B, $BJQ?t%j%9%H$G$"$k(B. $B$5$i$K(B, $B$=$l$i@0?t%Y%/%H%k$NA4=g=x$r(B  指定するのが, 変数リストである. さらに, それら整数ベクトルの全順序を
 $B;XDj$9$k$N$,9`=g=x$N7?$G$"$k(B. $B9`=g=x7?$O(B, $B?t(B, $B?t$N%j%9%H$"$k$$$O(B  指定するのが項順序の型である. 項順序型は, 数, 数のリストあるいは
 $B9TNs$GI=8=$5$l$k(B.  行列で表現される.
 \E  \E
 \BEG  \BEG
 A term is internally represented as an integer vector whose components  A term is internally represented as an integer vector whose components
Line 831  represented by an integer, a list of integer or matric
Line 881  represented by an integer, a list of integer or matric
 \E  \E
   
 @noindent  @noindent
 \JP $B4pK\E*$J9`=g=x7?$H$7$F<!$N(B 3 $B$D$,$"$k(B.  \JP 基本的な項順序型として次の 3 つがある.
 \EG There are following three fundamental types.  \EG There are following three fundamental types.
   
 @table @code  @table @code
 \JP @item 0 (DegRevLex; @b{$BA4<!?t5U<-=q<0=g=x(B})  \JP @item 0 (DegRevLex; @b{全次数逆辞書式順序})
 \EG @item 0 (DegRevLex; @b{total degree reverse lexicographic ordering})  \EG @item 0 (DegRevLex; @b{total degree reverse lexicographic ordering})
   
 \BJP  \BJP
 $B0lHL$K(B, $B$3$N=g=x$K$h$k%0%l%V%J4pDl7W;;$,:G$b9bB.$G$"$k(B. $B$?$@$7(B,  一般に, この順序によるグレブナ基底計算が最も高速である. ただし,
 $BJ}Dx<0$r2r$/$H$$$&L\E*$KMQ$$$k$3$H$O(B, $B0lHL$K$O$G$-$J$$(B. $B$3$N(B  方程式を解くという目的に用いることは, 一般にはできない. この
 $B=g=x$K$h$k%0%l%V%J4pDl$O(B, $B2r$N8D?t$N7W;;(B, $B%$%G%"%k$N%a%s%P%7%C%W$d(B,  順序によるグレブナ基底は, 解の個数の計算, イデアルのメンバシップや,
 $BB>$NJQ?t=g=x$X$N4pDlJQ49$N$?$a$N%=!<%9$H$7$FMQ$$$i$l$k(B.  他の変数順序への基底変換のためのソースとして用いられる.
 \E  \E
 \BEG  \BEG
 In general, computation by this ordering shows the fastest speed  In general, computation by this ordering shows the fastest speed
Line 854  the number of solutions, solving ideal membership prob
Line 904  the number of solutions, solving ideal membership prob
 for conversion to other Groebner bases under different ordering.  for conversion to other Groebner bases under different ordering.
 \E  \E
   
 \JP @item 1 (DegLex; @b{$BA4<!?t<-=q<0=g=x(B})  \JP @item 1 (DegLex; @b{全次数辞書式順序})
 \EG @item 1 (DegLex; @b{total degree lexicographic ordering})  \EG @item 1 (DegLex; @b{total degree lexicographic ordering})
   
 \BJP  \BJP
 $B$3$N=g=x$b(B, $B<-=q<0=g=x$KHf$Y$F9bB.$K%0%l%V%J4pDl$r5a$a$k$3$H$,$G$-$k$,(B,  この順序も, 辞書式順序に比べて高速にグレブナ基底を求めることができるが,
 @code{DegRevLex} $B$HF1MMD>@\$=$N7k2L$rMQ$$$k$3$H$O:$Fq$G$"$k(B. $B$7$+$7(B,  @code{DegRevLex} と同様直接その結果を用いることは困難である. しかし,
 $B<-=q<0=g=x$N%0%l%V%J4pDl$r5a$a$k:]$K(B, $B@F<!2=8e$K$3$N=g=x$G%0%l%V%J4pDl(B  辞書式順序のグレブナ基底を求める際に, 斉次化後にこの順序でグレブナ基底
 $B$r5a$a$F$$$k(B.  を求めている.
 \E  \E
 \BEG  \BEG
 By this type term ordering, Groebner bases are obtained fairly faster  By this type term ordering, Groebner bases are obtained fairly faster
Line 873  that a Groebner basis is computed in this ordering aft
Line 923  that a Groebner basis is computed in this ordering aft
 to obtain the final lexicographic Groebner basis.  to obtain the final lexicographic Groebner basis.
 \E  \E
   
 \JP @item 2 (Lex; @b{$B<-=q<0=g=x(B})  \JP @item 2 (Lex; @b{辞書式順序})
 \EG @item 2 (Lex; @b{lexicographic ordering})  \EG @item 2 (Lex; @b{lexicographic ordering})
   
 \BJP  \BJP
 $B$3$N=g=x$K$h$k%0%l%V%J4pDl$O(B, $BJ}Dx<0$r2r$/>l9g$K:GE,$N7A$N4pDl$rM?$($k$,(B  この順序によるグレブナ基底は, 方程式を解く場合に最適の形の基底を与えるが
 $B7W;;;~4V$,$+$+$j2a$.$k$N$,FqE@$G$"$k(B. $BFC$K(B, $B2r$,M-8B8D$N>l9g(B, $B7k2L$N(B  計算時間がかかり過ぎるのが難点である. 特に, 解が有限個の場合, 結果の
 $B78?t$,6K$a$FD9Bg$JB?G\D9?t$K$J$k>l9g$,B?$$(B. $B$3$N>l9g(B, @code{gr()},  係数が極めて長大な多倍長数になる場合が多い. この場合, @code{gr()},
 @code{hgr()} $B$K$h$k7W;;$,6K$a$FM-8z$K$J$k>l9g$,B?$$(B.  @code{hgr()} による計算が極めて有効になる場合が多い.
 \E  \E
 \BEG  \BEG
 Groebner bases computed by this ordering give the most convenient  Groebner bases computed by this ordering give the most convenient
Line 897  that i.e., computation by
Line 947  that i.e., computation by
   
 @noindent  @noindent
 \BJP  \BJP
 $B$3$l$i$rAH$_9g$o$;$F%j%9%H$G;XDj$9$k$3$H$K$h$j(B, $BMM!9$J>C5n=g=x$,;XDj$G$-$k(B.  これらを組み合わせてリストで指定することにより, 様々な消去順序が指定できる.
 $B$3$l$O(B,  これは,
 \E  \E
 \BEG  \BEG
 By combining these fundamental orderingl into a list, one can make  By combining these fundamental orderingl into a list, one can make
Line 909  various term ordering called elimination orderings.
Line 959  various term ordering called elimination orderings.
   
 @noindent  @noindent
 \BJP  \BJP
 $B$G;XDj$5$l$k(B. @code{Oi} $B$O(B 0, 1, 2 $B$N$$$:$l$+$G(B, @code{Li} $B$OJQ?t$N8D(B  で指定される. @code{Oi} は 0, 1, 2 のいずれかで, @code{Li} は変数の個
 $B?t$rI=$9(B. $B$3$N;XDj$O(B, $BJQ?t$r@hF,$+$i(B @code{L1}, @code{L2} , ...$B8D(B  数を表す. この指定は, 変数を先頭から @code{L1}, @code{L2} , ...個
 $B$:$D$NAH$KJ,$1(B, $B$=$l$>$l$NJQ?t$K4X$7(B, $B=g$K(B @code{O1}, @code{O2},  ずつの組に分け, それぞれの変数に関し, 順に @code{O1}, @code{O2},
 ...$B$N9`=g=x7?$GBg>.$,7hDj$9$k$^$GHf3S$9$k$3$H$r0UL#$9$k(B. $B$3$N7?$N(B  ...の項順序型で大小が決定するまで比較することを意味する. この型の
 $B=g=x$O0lHL$K>C5n=g=x$H8F$P$l$k(B.  順序は一般に消去順序と呼ばれる.
 \E  \E
 \BEG  \BEG
 In this example @code{Oi} indicates 0, 1 or 2 and @code{Li} indicates  In this example @code{Oi} indicates 0, 1 or 2 and @code{Li} indicates
Line 929  is called an elimination ordering.
Line 979  is called an elimination ordering.
   
 @noindent  @noindent
 \BJP  \BJP
 $B$5$i$K(B, $B9TNs$K$h$j9`=g=x$r;XDj$9$k$3$H$,$G$-$k(B. $B0lHL$K(B, @code{n} $B9T(B  さらに, 行列により項順序を指定することができる. 一般に, @code{n} 行
 @code{m} $BNs$N<B?t9TNs(B @code{M} $B$,<!$N@-<A$r;}$D$H$9$k(B.  @code{m} 列の実数行列 @code{M} が次の性質を持つとする.
 \E  \E
 \BEG  \BEG
 Furthermore one can specify a term ordering by a matix.  Furthermore one can specify a term ordering by a matix.
Line 940  following properties.
Line 990  following properties.
   
 @enumerate  @enumerate
 @item  @item
 \JP $BD9$5(B @code{m} $B$N@0?t%Y%/%H%k(B @code{v} $B$KBP$7(B @code{Mv=0} $B$H(B @code{v=0} $B$OF1CM(B.  \JP 長さ @code{m} の整数ベクトル @code{v} に対し @code{Mv=0} と @code{v=0} は同値.
 \BEG  \BEG
 For all integer verctors @code{v} of length @code{m} @code{Mv=0} is equivalent  For all integer verctors @code{v} of length @code{m} @code{Mv=0} is equivalent
 to @code{v=0}.  to @code{v=0}.
Line 948  to @code{v=0}.
Line 998  to @code{v=0}.
   
 @item  @item
 \BJP  \BJP
 $BHsIi@.J,$r;}$DD9$5(B @code{m} $B$N(B 0 $B$G$J$$@0?t%Y%/%H%k(B @code{v} $B$KBP$7(B,  非負成分を持つ長さ @code{m} の 0 でない整数ベクトル @code{v} に対し,
 @code{Mv} $B$N(B 0 $B$G$J$$:G=i$N@.J,$OHsIi(B.  @code{Mv} の 0 でない最初の成分は非負.
 \E  \E
 \BEG  \BEG
 For all non-negative integer vectors @code{v} the first non-zero component  For all non-negative integer vectors @code{v} the first non-zero component
Line 959  of @code{Mv} is non-negative.
Line 1009  of @code{Mv} is non-negative.
   
 @noindent  @noindent
 \BJP  \BJP
 $B$3$N;~(B, 2 $B$D$N%Y%/%H%k(B @code{t}, @code{s} $B$KBP$7(B,  この時, 2 つのベクトル @code{t}, @code{s} に対し,
 @code{t>s} $B$r(B, @code{M(t-s)} $B$N(B 0 $B$G$J$$:G=i$N@.J,$,HsIi(B,  @code{t>s} を, @code{M(t-s)} の 0 でない最初の成分が非負,
 $B$GDj5A$9$k$3$H$K$h$j9`=g=x$,Dj5A$G$-$k(B.  で定義することにより項順序が定義できる.
 \E  \E
 \BEG  \BEG
 Then we can define a term ordering such that, for two vectors  Then we can define a term ordering such that, for two vectors
Line 971  of @code{M(t-s)} is non-negative.
Line 1021  of @code{M(t-s)} is non-negative.
   
 @noindent  @noindent
 \BJP  \BJP
 $B9`=g=x7?$O(B, @code{gr()} $B$J$I$N0z?t$H$7$F;XDj$5$l$kB>(B, $BAH$_9~$_H!?t(B  項順序型は, @code{gr()} などの引数として指定される他, 組み込み函数
 @code{dp_ord()} $B$G;XDj$5$l(B, $B$5$^$6$^$JH!?t$N<B9T$N:]$K;2>H$5$l$k(B.  @code{dp_ord()} で指定され, さまざまな函数の実行の際に参照される.
 \E  \E
 \BEG  \BEG
 Types of term orderings are used as arguments of functions such as  Types of term orderings are used as arguments of functions such as
Line 982  during executions of various functions.
Line 1032  during executions of various functions.
   
 @noindent  @noindent
 \BJP  \BJP
 $B$3$l$i$N=g=x$N6qBNE*$JDj5A$*$h$S%0%l%V%J4pDl$K4X$9$k99$K>\$7$$2r@b$O(B  これらの順序の具体的な定義およびグレブナ基底に関する更に詳しい解説は
 @code{[Becker,Weispfenning]} $B$J$I$r;2>H$N$3$H(B.  @code{[Becker,Weispfenning]} などを参照のこと.
 \E  \E
 \BEG  \BEG
 For concrete definitions of term ordering and more information  For concrete definitions of term ordering and more information
Line 992  about Groebner basis, refer to, for example, the book
Line 1042  about Groebner basis, refer to, for example, the book
 \E  \E
   
 @noindent  @noindent
 \JP $B9`=g=x7?$N@_Dj$NB>$K(B, $BJQ?t$N=g=x<+BN$b7W;;;~4V$KBg$-$J1F6A$rM?$($k(B.  \JP 項順序型の設定の他に, 変数の順序自体も計算時間に大きな影響を与える.
 \BEG  \BEG
 Note that the variable ordering have strong effects on the computation  Note that the variable ordering have strong effects on the computation
 time as well as the choice of types of term orderings.  time as well as the choice of types of term orderings.
Line 1030  z^3*y^2+2*t^3*y+(-t^7+2*t^4+t^2-t)*z^2,
Line 1080  z^3*y^2+2*t^3*y+(-t^7+2*t^4+t^2-t)*z^2,
   
 @noindent  @noindent
 \BJP  \BJP
 $BJQ?t=g=x(B @code{[x,y,z,t]} $B$K$*$1$k%0%l%V%J4pDl$O(B, $B4pDl$N?t$bB?$/(B, $B$=$l$>$l$N(B  変数順序 @code{[x,y,z,t]} におけるグレブナ基底は, 基底の数も多く, それぞれの
 $B<0$bBg$-$$(B. $B$7$+$7(B, $B=g=x(B @code{[t,z,y,x]} $B$K$b$H$G$O(B, @code{B} $B$,$9$G$K(B  式も大きい. しかし, 順序 @code{[t,z,y,x]} にもとでは, @code{B} がすでに
 $B%0%l%V%J4pDl$H$J$C$F$$$k(B. $BBg;(GD$K$$$($P(B, $B<-=q<0=g=x$G%0%l%V%J4pDl$r5a$a$k(B  グレブナ基底となっている. 大雑把にいえば, 辞書式順序でグレブナ基底を求める
 $B$3$H$O(B, $B:8B&$N(B ($B=g=x$N9b$$(B) $BJQ?t$r(B, $B1&B&$N(B ($B=g=x$NDc$$(B) $BJQ?t$G=q$-I=$9(B  ことは, 左側の (順序の高い) 変数を, 右側の (順序の低い) 変数で書き表す
 $B$3$H$G$"$j(B, $B$3$NNc$N>l9g$O(B, @code{t},  @code{z}, @code{y} $B$,4{$K(B  ことであり, この例の場合は, @code{t},  @code{z}, @code{y} が既に
 @code{x} $B$GI=$5$l$F$$$k$3$H$+$i$3$N$h$&$J6KC<$J7k2L$H$J$C$?$o$1$G$"$k(B.  @code{x} で表されていることからこのような極端な結果となったわけである.
 $B<B:]$K8=$l$k7W;;$K$*$$$F$O(B, $B$3$N$h$&$KA*$V$Y$-JQ?t=g=x$,L@$i$+$G$"$k(B  実際に現れる計算においては, このように選ぶべき変数順序が明らかである
 $B$3$H$O>/$J$/(B, $B;n9T:x8m$,I,MW$J>l9g$b$"$k(B.  ことは少なく, 試行錯誤が必要な場合もある.
 \E  \E
 \BEG  \BEG
 As you see in the above example, the Groebner base under variable  As you see in the above example, the Groebner base under variable
Line 1055  beforehand, and some heuristic trial may be inevitable
Line 1105  beforehand, and some heuristic trial may be inevitable
 \E  \E
   
 \BJP  \BJP
 @node $BM-M}<0$r78?t$H$9$k%0%l%V%J4pDl7W;;(B,,, $B%0%l%V%J4pDl$N7W;;(B  @node Weight ,,, グレブナ基底の計算
 @section $BM-M}<0$r78?t$H$9$k%0%l%V%J4pDl7W;;(B  @section Weight
 \E  \E
 \BEG  \BEG
   @node Weight,,, Groebner basis computation
   @section Weight
   \E
   \BJP
   前節で紹介した項順序は, 各変数に weight (重み) を設定することで
   より一般的なものとなる.
   \E
   \BEG
   Term orderings introduced in the previous section can be generalized
   by setting a weight for each variable.
   \E
   @example
   [0] dp_td(<<1,1,1>>);
   3
   [1] dp_set_weight([1,2,3])$
   [2] dp_td(<<1,1,1>>);
   6
   @end example
   \BJP
   単項式の全次数を計算する際, デフォルトでは
   各変数の指数の和を全次数とする. これは各変数の weight を 1 と
   考えていることに相当する. この例では, 第一, 第二, 第三変数の
   weight をそれぞれ 1,2,3 と指定している. このため, @code{<<1,1,1>>}
   の全次数 (以下ではこれを単項式の weight と呼ぶ) が @code{1*1+1*2+1*3=6} となる.
   weight を設定することで, 同じ項順序型のもとで異なる項順序が定義できる.
   例えば, weight をうまく設定することで, 多項式を weighted homogeneous
   にすることができる場合がある.
   \E
   \BEG
   By default, the total degree of a monomial is equal to
   the sum of all exponents. This means that the weight for each variable
   is set to 1.
   In this example, the weights for the first, the second and the third
   variable are set to 1, 2 and 3 respectively.
   Therefore the total degree of @code{<<1,1,1>>} under this weight,
   which is called the weight of the monomial, is @code{1*1+1*2+1*3=6}.
   By setting weights, different term orderings can be set under a type of
   term ordeing. In some case a polynomial can
   be made weighted homogeneous by setting an appropriate weight.
   \E
   
   \BJP
   各変数に対する weight をまとめたものを weight vector と呼ぶ.
   すべての成分が正であり, グレブナ基底計算において, 全次数の
   代わりに用いられるものを特に sugar weight と呼ぶことにする.
   sugar strategy において, 全次数の代わりに使われるからである.
   一方で, 各成分が必ずしも正とは限らない weight vector は,
   sugar weight として設定することはできないが, 項順序の一般化には
   有用である. これらは, 行列による項順序の設定にすでに現れて
   いる. すなわち, 項順序を定義する行列の各行が, 一つの weight vector
   と見なされる. また, ブロック順序は, 各ブロックの
   変数に対応する成分のみ 1 で他は 0 の weight vector による比較を
   最初に行ってから, 各ブロック毎の tie breaking を行うことに相当する.
   \E
   
   \BEG
   A list of weights for all variables is called a weight vector.
   A weight vector is called a sugar weight vector if
   its elements are all positive and it is used for computing
   a weighted total degree of a monomial, because such a weight
   is used instead of total degree in sugar strategy.
   On the other hand, a weight vector whose elements are not necessarily
   positive cannot be set as a sugar weight, but it is useful for
   generalizing term order. In fact, such a weight vector already
   appeared in a matrix order. That is, each row of a matrix defining
   a term order is regarded as a weight vector. A block order
   is also considered as a refinement of comparison by weight vectors.
   It compares two terms by using a weight vector whose elements
   corresponding to variables in a block is 1 and 0 otherwise,
   then it applies a tie breaker.
   \E
   
   \BJP
   weight vector の設定は @code{dp_set_weight()} で行うことができる
   が, 項順序を指定する際の他のパラメタ (項順序型, 変数順序) と
   まとめて設定できることが望ましい. このため, 次のような形でも
   項順序が指定できる.
   \E
   \BEG
   A weight vector can be set by using @code{dp_set_weight()}.
   However it is more preferable if a weight vector can be set
   together with other parapmeters such as a type of term ordering
   and a variable order. This is realized as follows.
   \E
   
   @example
   [64] B=[x+y+z-6,x*y+y*z+z*x-11,x*y*z-6]$
   [65] dp_gr_main(B|v=[x,y,z],sugarweight=[3,2,1],order=0);
   [z^3-6*z^2+11*z-6,x+y+z-6,-y^2+(-z+6)*y-z^2+6*z-11]
   [66] dp_gr_main(B|v=[y,z,x],order=[[1,1,0],[0,1,0],[0,0,1]]);
   [x^3-6*x^2+11*x-6,x+y+z-6,-x^2+(-y+6)*x-y^2+6*y-11]
   [67] dp_gr_main(B|v=[y,z,x],order=[[x,1,y,2,z,3]]);
   [x+y+z-6,x^3-6*x^2+11*x-6,-x^2+(-y+6)*x-y^2+6*y-11]
   @end example
   
   \BJP
   いずれの例においても, 項順序は option として指定されている.
   最初の例では @code{v} により変数順序を, @code{sugarweight} により
   sugar weight vector を, @code{order}により項順序型を指定している.
   二つ目の例における @code{order} の指定は matrix order と同様である.
   すなわち, 指定された weight vector を左から順に使って weight の比較
   を行う. 三つ目の例も同様であるが, ここでは weight vector の要素を
   変数毎に指定している. 指定がないものは 0 となる. 三つ目の例では,
   @code{order} による指定では項順序が決定しない. この場合には,
   tie breaker として全次数逆辞書式順序が自動的に設定される.
   この指定方法は, @code{dp_gr_main}, @code{dp_gr_mod_main} など
   の組み込み関数でのみ可能であり, @code{gr} などのユーザ定義関数
   では未対応である.
   \E
   \BEG
   In each example, a term ordering is specified as options.
   In the first example, a variable order, a sugar weight vector
   and a type of term ordering are specified by options @code{v},
   @code{sugarweight} and @code{order} respectively.
   In the second example, an option @code{order} is used
   to set a matrix ordering. That is, the specified weight vectors
   are used from left to right for comparing terms.
   The third example shows a variant of specifying a weight vector,
   where each component of a weight vector is specified variable by variable,
   and unspecified components are set to zero. In this example,
   a term order is not determined only by the specified weight vector.
   In such a case a tie breaker by the graded reverse lexicographic ordering
   is set automatically.
   This type of a term ordering specification can be applied only to builtin
   functions such as @code{dp_gr_main()}, @code{dp_gr_mod_main()}, not to
   user defined functions such as @code{gr()}.
   \E
   
   \BJP
   @node 有理式を係数とするグレブナ基底計算,,, グレブナ基底の計算
   @section 有理式を係数とするグレブナ基底計算
   \E
   \BEG
 @node Groebner basis computation with rational function coefficients,,, Groebner basis computation  @node Groebner basis computation with rational function coefficients,,, Groebner basis computation
 @section Groebner basis computation with rational function coefficients  @section Groebner basis computation with rational function coefficients
 \E  \E
   
 @noindent  @noindent
 \BJP  \BJP
 @code{gr()} $B$J$I$N%H%C%W%l%Y%kH!?t$O(B, $B$$$:$l$b(B, $BF~NOB?9`<0%j%9%H$K(B  @code{gr()} などのトップレベル函数は, いずれも, 入力多項式リストに
 $B8=$l$kJQ?t(B ($BITDj85(B) $B$H(B, $BJQ?t%j%9%H$K8=$l$kJQ?t$rHf3S$7$F(B, $BJQ?t%j%9%H$K(B  現れる変数 (不定元) と, 変数リストに現れる変数を比較して, 変数リストに
 $B$J$$JQ?t$,F~NOB?9`<0$K8=$l$F$$$k>l9g$K$O(B, $B<+F0E*$K(B, $B$=$NJQ?t$r(B, $B78?t(B  ない変数が入力多項式に現れている場合には, 自動的に, その変数を, 係数
 $BBN$N85$H$7$F07$&(B.  体の元として扱う.
 \E  \E
 \BEG  \BEG
 Such variables that appear within the input polynomials but  Such variables that appear within the input polynomials but
Line 1084  by top level functions, such as @code{gr()}.
Line 1267  by top level functions, such as @code{gr()}.
   
 @noindent  @noindent
 \BJP  \BJP
 $B$3$NNc$G$O(B, @code{a}, @code{b}, @code{c}, @code{d} $B$,78?tBN$N85$H$7$F(B  この例では, @code{a}, @code{b}, @code{c}, @code{d} が係数体の元として
 $B07$o$l$k(B. $B$9$J$o$A(B, $BM-M}H!?tBN(B  扱われる. すなわち, 有理函数体
 @b{F} = @b{Q}(@code{a},@code{b},@code{c},@code{d}) $B>e$N(B 2 $BJQ?tB?9`<04D(B  @b{F} = @b{Q}(@code{a},@code{b},@code{c},@code{d}) 上の 2 変数多項式環
 @b{F}[@code{x},@code{y}] $B$K$*$1$k%0%l%V%J4pDl$r5a$a$k$3$H$K$J$k(B.  @b{F}[@code{x},@code{y}] におけるグレブナ基底を求めることになる.
 $BCm0U$9$Y$-$3$H$O(B,  注意すべきことは,
 $B78?t$,BN$H$7$F07$o$l$F$$$k$3$H$G$"$k(B. $B$9$J$o$A(B, $B78?t$N4V$KB?9`<0(B  係数が体として扱われていることである. すなわち, 係数の間に多項式
 $B$H$7$F$N6&DL0x;R$,$"$C$?>l9g$K$O(B, $B7k2L$+$i$=$N0x;R$O=|$+$l$F$$$k(B  としての共通因子があった場合には, 結果からその因子は除かれている
 $B$?$a(B, $BM-M}?tBN>e$NB?9`<04D>e$NLdBj$H$7$F9M$($?>l9g$N7k2L$H$O0lHL(B  ため, 有理数体上の多項式環上の問題として考えた場合の結果とは一般
 $B$K$O0[$J$k(B. $B$^$?(B, $B<g$H$7$F7W;;8zN(>e$NLdBj$N$?$a(B, $BJ,;6I=8=B?9`<0(B  には異なる. また, 主として計算効率上の問題のため, 分散表現多項式
 $B$N78?t$H$7$F<B:]$K5v$5$l$k$N$OB?9`<0$^$G$G$"$k(B. $B$9$J$o$A(B, $BJ,Jl$r(B  の係数として実際に許されるのは多項式までである. すなわち, 分母を
 $B;}$DM-M}<0$OJ,;6I=8=B?9`<0$N78?t$H$7$F$O5v$5$l$J$$(B.  持つ有理式は分散表現多項式の係数としては許されない.
 \E  \E
 \BEG  \BEG
 In this example, variables @code{a}, @code{b}, @code{c}, and @code{d}  In this example, variables @code{a}, @code{b}, @code{c}, and @code{d}
Line 1115  to numbers and polynomials because of efficiency.
Line 1298  to numbers and polynomials because of efficiency.
 \E  \E
   
 \BJP  \BJP
 @node $B4pDlJQ49(B,,, $B%0%l%V%J4pDl$N7W;;(B  @node 基底変換,,, グレブナ基底の計算
 @section $B4pDlJQ49(B  @section 基底変換
 \E  \E
 \BEG  \BEG
 @node Change of ordering,,, Groebner basis computation  @node Change of ordering,,, Groebner basis computation
Line 1125  to numbers and polynomials because of efficiency.
Line 1308  to numbers and polynomials because of efficiency.
   
 @noindent  @noindent
 \BJP  \BJP
 $B<-=q<0=g=x$N%0%l%V%J4pDl$r5a$a$k>l9g(B, $BD>@\(B @code{gr()} $B$J$I$r5/F0$9$k(B  辞書式順序のグレブナ基底を求める場合, 直接 @code{gr()} などを起動する
 $B$h$j(B, $B0lC6B>$N=g=x(B ($BNc$($PA4<!?t5U<-=q<0=g=x(B) $B$N%0%l%V%J4pDl$r7W;;$7$F(B,  より, 一旦他の順序 (例えば全次数逆辞書式順序) のグレブナ基底を計算して,
 $B$=$l$rF~NO$H$7$F<-=q<0=g=x$N%0%l%V%J4pDl$r7W;;$9$kJ}$,8zN($,$h$$>l9g(B  それを入力として辞書式順序のグレブナ基底を計算する方が効率がよい場合
 $B$,$"$k(B. $B$^$?(B, $BF~NO$,2?$i$+$N=g=x$G$N%0%l%V%J4pDl$K$J$C$F$$$k>l9g(B, $B4pDl(B  がある. また, 入力が何らかの順序でのグレブナ基底になっている場合, 基底
 $BJQ49$H8F$P$l$kJ}K!$K$h$j(B, Buchberger $B%"%k%4%j%:%`$K$h$i$:$K8zN(NI$/(B  変換と呼ばれる方法により, Buchberger アルゴリズムによらずに効率良く
 $B<-=q<0=g=x$N%0%l%V%J4pDl$,7W;;$G$-$k>l9g$,$"$k(B. $B$3$N$h$&$JL\E*$N$?$a$N(B  辞書式順序のグレブナ基底が計算できる場合がある. このような目的のための
 $BH!?t$,(B, $B%f!<%6Dj5AH!?t$H$7$F(B @samp{gr} $B$K$$$/$D$+Dj5A$5$l$F$$$k(B.  函数が, ユーザ定義函数として @samp{gr} にいくつか定義されている.
 $B0J2<$N(B 2 $B$D$NH!?t$O(B, $BJQ?t=g=x(B @var{vlist1}, $B9`=g=x7?(B @var{order} $B$G(B  以下の 2 つの函数は, 変数順序 @var{vlist1}, 項順序型 @var{order} で
 $B4{$K%0%l%V%J4pDl$H$J$C$F$$$kB?9`<0%j%9%H(B @var{gbase} $B$r(B, $BJQ?t=g=x(B  既にグレブナ基底となっている多項式リスト @var{gbase} を, 変数順序
 @var{vlist2} $B$K$*$1$k<-=q<0=g=x$N%0%l%V%J4pDl$KJQ49$9$kH!?t$G$"$k(B.  @var{vlist2} における辞書式順序のグレブナ基底に変換する函数である.
 \E  \E
 \BEG  \BEG
 When we compute a lex order Groebner basis, it is often efficient to  When we compute a lex order Groebner basis, it is often efficient to
Line 1154  to the variable order @var{vlist2}.
Line 1337  to the variable order @var{vlist2}.
 @item tolex(@var{gbase},@var{vlist1},@var{order},@var{vlist2})  @item tolex(@var{gbase},@var{vlist1},@var{order},@var{vlist2})
   
 \BJP  \BJP
 $B$3$NH!?t$O(B, @var{gbase} $B$,M-M}?tBN>e$N%7%9%F%`$N>l9g$K$N$_;HMQ2DG=$G$"$k(B.  この函数は, @var{gbase} が有理数体上のシステムの場合にのみ使用可能である.
 $B$3$NH!?t$O(B, $B<-=q<0=g=x$N%0%l%V%J4pDl$r(B, $BM-8BBN>e$G7W;;$5$l$?%0%l%V%J4pDl(B  この函数は, 辞書式順序のグレブナ基底を, 有限体上で計算されたグレブナ基底
 $B$r?w7?$H$7$F(B, $BL$Dj78?tK!$*$h$S(B Hensel $B9=@.$K$h$j5a$a$k$b$N$G$"$k(B.  を雛型として, 未定係数法および Hensel 構成により求めるものである.
 \E  \E
 \BEG  \BEG
 This function can be used only when @var{gbase} is an ideal over the  This function can be used only when @var{gbase} is an ideal over the
Line 1173  coefficient method and linear equation solving by Hens
Line 1356  coefficient method and linear equation solving by Hens
 @item tolex_tl(@var{gbase},@var{vlist1},@var{order},@var{vlist2},@var{homo})  @item tolex_tl(@var{gbase},@var{vlist1},@var{order},@var{vlist2},@var{homo})
   
 \BJP  \BJP
 $B$3$NH!?t$O(B, $B<-=q<0=g=x$N%0%l%V%J4pDl$r(B Buchberger $B%"%k%4%j%:%`$K$h$j5a(B  この函数は, 辞書式順序のグレブナ基底を Buchberger アルゴリズムにより求
 $B$a$k$b$N$G$"$k$,(B, $BF~NO$,$"$k=g=x$K$*$1$k%0%l%V%J4pDl$G$"$k>l9g$N(B  めるものであるが, 入力がある順序におけるグレブナ基底である場合の
 trace-lifting$B$K$*$1$k%0%l%V%J4pDl8uJd$NF,9`(B, $BF,78?t$N@-<A$rMxMQ$7$F(B,  trace-liftingにおけるグレブナ基底候補の頭項, 頭係数の性質を利用して,
 $B:G=*E*$J%0%l%V%J4pDl%A%'%C%/(B, $B%$%G%"%k%a%s%P%7%C%W%A%'%C%/$r>JN,$7$F$$(B  最終的なグレブナ基底チェック, イデアルメンバシップチェックを省略してい
 $B$k$?$a(B, $BC1$K(BBuchberger $B%"%k%4%j%:%`$r7+$jJV$9$h$j8zN($h$/7W;;$G$-$k(B.  るため, 単にBuchberger アルゴリズムを繰り返すより効率よく計算できる.
 $B99$K(B, $BF~NO$,(B 0 $B<!85%7%9%F%`$N>l9g(B, $B<+F0E*$K$b$&(B 1 $B$D$NCf4VE*$J9`=g=x$r(B  更に, 入力が 0 次元システムの場合, 自動的にもう 1 つの中間的な項順序を
 $B7PM3$7$F<-=q<0=g=x$N%0%l%V%J4pDl$r7W;;$9$k(B. $BB?$/$N>l9g(B, $B$3$NJ}K!$O(B,  経由して辞書式順序のグレブナ基底を計算する. 多くの場合, この方法は,
 $BD>@\<-=q<0=g=x$N7W;;$r9T$&$h$j8zN($,$h$$(B. ($B$b$A$m$sNc30$"$j(B. )  直接辞書式順序の計算を行うより効率がよい. (もちろん例外あり. )
 $B0z?t(B @var{homo} $B$,(B 0 $B$G$J$$;~(B, @code{hgr()} $B$HF1MM$K@F<!2=$r7PM3$7$F(B  引数 @var{homo} が 0 でない時, @code{hgr()} と同様に斉次化を経由して
 $B7W;;$r9T$&(B.  計算を行う.
 \E  \E
 \BEG  \BEG
 This function computes the lex Groebner basis of @var{gbase}.  The  This function computes the lex Groebner basis of @var{gbase}.  The
Line 1202  not equal to 0, homogenization is used in each step.
Line 1385  not equal to 0, homogenization is used in each step.
   
 @noindent  @noindent
 \BJP  \BJP
 $B$=$NB>(B, 0 $B<!85%7%9%F%`$KBP$7(B, $BM?$($i$l$?B?9`<0$N:G>.B?9`<0$r5a$a$k(B  その他, 0 次元システムに対し, 与えられた多項式の最小多項式を求める
 $BH!?t(B, 0 $B<!85%7%9%F%`$N2r$r(B, $B$h$j%3%s%Q%/%H$KI=8=$9$k$?$a$NH!?t$J$I$,(B  函数, 0 次元システムの解を, よりコンパクトに表現するための函数などが
 @samp{gr} $B$GDj5A$5$l$F$$$k(B. $B$3$l$i$K$D$$$F$O8D!9$NH!?t$N@bL@$r;2>H$N$3$H(B.  @samp{gr} で定義されている. これらについては個々の函数の説明を参照のこと.
 \E  \E
 \BEG  \BEG
 For zero-dimensional systems, there are several fuctions to  For zero-dimensional systems, there are several fuctions to
Line 1214  Refer to the sections for each functions.
Line 1397  Refer to the sections for each functions.
 \E  \E
   
 \BJP  \BJP
 @node Weyl $BBe?t(B,,, $B%0%l%V%J4pDl$N7W;;(B  @node Weyl 代数,,, グレブナ基底の計算
 @section Weyl $BBe?t(B  @section Weyl 代数
 \E  \E
 \BEG  \BEG
 @node Weyl algebra,,, Groebner basis computation  @node Weyl algebra,,, Groebner basis computation
Line 1225  Refer to the sections for each functions.
Line 1408  Refer to the sections for each functions.
 @noindent  @noindent
   
 \BJP  \BJP
 $B$3$l$^$G$O(B, $BDL>o$N2D49$JB?9`<04D$K$*$1$k%0%l%V%J4pDl7W;;$K$D$$$F(B  これまでは, 通常の可換な多項式環におけるグレブナ基底計算について
 $B=R$Y$F$-$?$,(B, $B%0%l%V%J4pDl$NM}O@$O(B, $B$"$k>r7o$rK~$?$9Hs2D49$J(B  述べてきたが, グレブナ基底の理論は, ある条件を満たす非可換な
 $B4D$K$b3HD%$G$-$k(B. $B$3$N$h$&$J4D$NCf$G(B, $B1~MQ>e$b=EMW$J(B,  環にも拡張できる. このような環の中で, 応用上も重要な,
 Weyl $BBe?t(B, $B$9$J$o$AB?9`<04D>e$NHyJ,:nMQAG4D$N1i;;$*$h$S(B  Weyl 代数, すなわち多項式環上の微分作用素環の演算および
 $B%0%l%V%J4pDl7W;;$,(B Risa/Asir $B$K<BAu$5$l$F$$$k(B.  グレブナ基底計算が Risa/Asir に実装されている.
   
 $BBN(B @code{K} $B>e$N(B @code{n} $B<!85(B Weyl $BBe?t(B  体 @code{K} 上の @code{n} 次元 Weyl 代数
 @code{D=K<x1,@dots{},xn,D1,@dots{},Dn>} $B$O(B  @code{D=K<x1,@dots{},xn,D1,@dots{},Dn>} は
 \E  \E
   
 \BEG  \BEG
Line 1252  algebra which has the following fundamental relations:
Line 1435  algebra which has the following fundamental relations:
 @code{Di*xi-xi*Di=1}  @code{Di*xi-xi*Di=1}
   
 \BJP  \BJP
 $B$H$$$&4pK\4X78$r;}$D4D$G$"$k(B. @code{D} $B$O(B $BB?9`<04D(B @code{K[x1,@dots{},xn]} $B$r78?t(B  という基本関係を持つ環である. @code{D} は 多項式環 @code{K[x1,@dots{},xn]} を係数
 $B$H$9$kHyJ,:nMQAG4D$G(B,  @code{Di} $B$O(B @code{xi} $B$K$h$kHyJ,$rI=$9(B. $B8r494X78$K$h$j(B,  とする微分作用素環で,  @code{Di} は @code{xi} による微分を表す. 交換関係により,
 @code{D} $B$N85$O(B, @code{x1^i1*@dots{}*xn^in*D1^j1*@dots{}*Dn^jn} $B$J$kC19`(B  @code{D} の元は, @code{x1^i1*@dots{}*xn^in*D1^j1*@dots{}*Dn^jn} なる単項
 $B<0$N(B @code{K} $B@~7A7k9g$H$7$F=q$-I=$9$3$H$,$G$-$k(B.  式の @code{K} 線形結合として書き表すことができる.
 Risa/Asir $B$K$*$$$F$O(B, $B$3$NC19`<0$r(B, $B2D49$JB?9`<0$HF1MM$K(B  Risa/Asir においては, この単項式を, 可換な多項式と同様に
 @code{<<i1,@dots{},in,j1,@dots{},jn>>} $B$GI=$9(B. $B$9$J$o$A(B, @code{D} $B$N85$b(B  @code{<<i1,@dots{},in,j1,@dots{},jn>>} で表す. すなわち, @code{D} の元も
 $BJ,;6I=8=B?9`<0$H$7$FI=$5$l$k(B. $B2C8:;;$O(B, $B2D49$N>l9g$HF1MM$K(B, @code{+}, @code{-}  分散表現多項式として表される. 加減算は, 可換の場合と同様に, @code{+}, @code{-}
 $B$K$h$j(B  により
 $B<B9T$G$-$k$,(B, $B>h;;$O(B, $BHs2D49@-$r9MN8$7$F(B @code{dp_weyl_mul()} $B$H$$$&4X?t(B  実行できるが, 乗算は, 非可換性を考慮して @code{dp_weyl_mul()} という関数
 $B$K$h$j<B9T$9$k(B.  により実行する.
 \E  \E
   
 \BEG  \BEG
Line 1293  the non-commutativity of @code{D}.
Line 1476  the non-commutativity of @code{D}.
 @end example  @end example
   
 \BJP  \BJP
 $B%0%l%V%J4pDl7W;;$K$D$$$F$b(B, Weyl $BBe?t@lMQ$N4X?t$H$7$F(B,  グレブナ基底計算についても, Weyl 代数専用の関数として,
 $B<!$N4X?t$,MQ0U$7$F$"$k(B.  次の関数が用意してある.
 \E  \E
 \BEG  \BEG
 The following functions are avilable for Groebner basis computation  The following functions are avilable for Groebner basis computation
Line 1306  in Weyl algebra:
Line 1489  in Weyl algebra:
 @code{dp_weyl_f4_main()},  @code{dp_weyl_f4_main()},
 @code{dp_weyl_f4_mod_main()}.  @code{dp_weyl_f4_mod_main()}.
 \BJP  \BJP
 $B$^$?(B, $B1~MQ$H$7$F(B, global b $B4X?t$N7W;;$,<BAu$5$l$F$$$k(B.  また, 応用として, global b 関数の計算が実装されている.
 \E  \E
 \BEG  \BEG
 Computation of the global b function is implemented as an application.  Computation of the global b function is implemented as an application.
 \E  \E
   
 \BJP  \BJP
 @node $B%0%l%V%J4pDl$K4X$9$kH!?t(B,,, $B%0%l%V%J4pDl$N7W;;(B  @node 多項式環上の加群,,, グレブナ基底の計算
 @section $B%0%l%V%J4pDl$K4X$9$kH!?t(B  @section 多項式環上の加群
 \E  \E
 \BEG  \BEG
   @node Module over a polynomial ring,,, Groebner basis computation
   @section Module over a polynomial ring
   \E
   
   @noindent
   
   \BJP
   多項式環上の自由加群の元は, 加群単項式 te_i の線型和として内部表現される.
   ここで t は多項式環の単項式, e_i は自由加群の標準基底である. 加群単項式は, 多項式環の単項式
   に位置 i を追加した @code{<<a,b,...,c:i>>} で表す. 加群多項式, すなわち加群単項式の線型和は,
   設定されている加群項順序にしたがって降順に整列される. 加群項順序には以下の3種類がある.
   
   @table @code
   @item TOP 順序
   
   これは, te_i > se_j となるのは t>s または (t=s かつ i<j) となるような項順序である. ここで,
   t, s の比較は多項式環に設定されている順序で行う.
   この型の順序は, @code{dp_ord([0,Ord])} に
   より設定する. ここで, @code{Ord} は多項式環の順序型である.
   
   @item POT 順序
   
   これは, te_i > se_j となるのは i<j または (i=j かつ t>s) となるような項順序である. ここで,
   t, s の比較は多項式環に設定されている順序で行う.
   この型の順序は, @code{dp_ord([1,Ord])} に
   より設定する. ここで, @code{Ord} は多項式環の順序型である.
   
   @item Schreyer 型順序
   
   各標準基底 e_i に対し, 別の自由加群の加群単項式 T_i が与えられていて, te_i > se_j となるのは
   tT_i > sT_j または (tT_i=sT_j かつ i<j) となるような項順序である. ここで tT_i, sT_j の
   比較は, これらが所属する自由加群に設定されている順序で行う.
   この型の順序は, 通常再帰的に設定される. すなわち, T_i が所属する自由加群の順序も Schreyer 型
   であるか, またはボトムとなる TOP, POT などの項順序となる.
   この型の順序は @code{dpm_set_schreyer([H_1,H_2,...])} により指定する. ここで,
   @code{H_i=[T_1,T_2,...]} は加群単項式のリストで, @code{[H_2,...]} で定義される Schreyer 型項順序を
   @code{tT_i} らに適用するという意味である.
   @end table
   
   加群多項式を入力する方法としては, @code{<<a,b,...:i>>} なる形式で直接入力する他に,
   多項式リストを作り, @code{dpm_ltod()} により変換する方法もある.
   \E
   \BEG
   not yet
   \E
   
   \BJP
   @node グレブナ基底に関する函数,,, グレブナ基底の計算
   @section グレブナ基底に関する函数
   \E
   \BEG
 @node Functions for Groebner basis computation,,, Groebner basis computation  @node Functions for Groebner basis computation,,, Groebner basis computation
 @section Functions for Groebner basis computation  @section Functions for Groebner basis computation
 \E  \E
Line 1329  Computation of the global b function is implemented as
Line 1563  Computation of the global b function is implemented as
 * tolexm minipolym::  * tolexm minipolym::
 * dp_gr_main dp_gr_mod_main dp_gr_f_main dp_weyl_gr_main dp_weyl_gr_mod_main dp_weyl_gr_f_main::  * dp_gr_main dp_gr_mod_main dp_gr_f_main dp_weyl_gr_main dp_weyl_gr_mod_main dp_weyl_gr_f_main::
 * dp_f4_main dp_f4_mod_main dp_weyl_f4_main dp_weyl_f4_mod_main::  * dp_f4_main dp_f4_mod_main dp_weyl_f4_main dp_weyl_f4_mod_main::
   * nd_gr nd_gr_trace nd_f4 nd_f4_trace nd_weyl_gr nd_weyl_gr_trace::
   * nd_gr_postproc nd_weyl_gr_postproc::
 * dp_gr_flags dp_gr_print::  * dp_gr_flags dp_gr_print::
 * dp_ord::  * dp_ord::
   * dp_set_weight dp_set_top_weight dp_weyl_set_weight::
 * dp_ptod::  * dp_ptod::
 * dp_dtop::  * dp_dtop::
 * dp_mod dp_rat::  * dp_mod dp_rat::
 * dp_homo dp_dehomo::  * dp_homo dp_dehomo::
 * dp_ptozp dp_prim::  * dp_ptozp dp_prim::
 * dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod::  * dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod dp_weyl_nf dp_weyl_nf_mod::
 * dp_hm dp_ht dp_hc dp_rest::  * dp_hm dp_ht dp_hc dp_rest::
   * dpm_hm dpm_ht dpm_hc dpm_hp dpm_rest::
   * dpm_sp::
   * dpm_redble::
   * dpm_nf dpm_nf_and_quotient::
   * dpm_dtol::
   * dpm_ltod::
   * dpm_dptodpm::
   * dpm_schreyer_base::
   * dpm_schreyer_frame::
   * dpm_set_schreyer_level::
   * dpm_sp_nf::
 * dp_td dp_sugar::  * dp_td dp_sugar::
 * dp_lcm::  * dp_lcm::
 * dp_redble::  * dp_redble::
Line 1357  Computation of the global b function is implemented as
Line 1605  Computation of the global b function is implemented as
 * bfunction bfct generic_bfct ann ann0::  * bfunction bfct generic_bfct ann ann0::
 @end menu  @end menu
   
 \JP @node gr hgr gr_mod,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node gr hgr gr_mod,,, グレブナ基底に関する函数
 \EG @node gr hgr gr_mod,,, Functions for Groebner basis computation  \EG @node gr hgr gr_mod,,, Functions for Groebner basis computation
 @subsection @code{gr}, @code{hgr}, @code{gr_mod}, @code{dgr}  @subsection @code{gr}, @code{hgr}, @code{gr_mod}, @code{dgr}
 @findex gr  @findex gr
Line 1370  Computation of the global b function is implemented as
Line 1618  Computation of the global b function is implemented as
 @itemx hgr(@var{plist},@var{vlist},@var{order})  @itemx hgr(@var{plist},@var{vlist},@var{order})
 @itemx gr_mod(@var{plist},@var{vlist},@var{order},@var{p})  @itemx gr_mod(@var{plist},@var{vlist},@var{order},@var{p})
 @itemx dgr(@var{plist},@var{vlist},@var{order},@var{procs})  @itemx dgr(@var{plist},@var{vlist},@var{order},@var{procs})
 \JP :: $B%0%l%V%J4pDl$N7W;;(B  \JP :: グレブナ基底の計算
 \EG :: Groebner basis computation  \EG :: Groebner basis computation
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item plist  vlist  procs  @item plist  vlist  procs
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item order  @item order
 \JP $B?t(B, $B%j%9%H$^$?$O9TNs(B  \JP 数, リストまたは行列
 \EG number, list or matrix  \EG number, list or matrix
 @item p  @item p
 \JP 2^27 $BL$K~$NAG?t(B  \JP 2^27 未満の素数
 \EG prime less than 2^27  \EG prime less than 2^27
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 $BI8=`%i%$%V%i%j$N(B @samp{gr} $B$GDj5A$5$l$F$$$k(B.  標準ライブラリの @samp{gr} で定義されている.
 @item  @item
 $B$$$:$l$b(B, $BB?9`<0%j%9%H(B @var{plist} $B$N(B, $BJQ?t=g=x(B @var{vlist}, $B9`=g=x7?(B  gr を名前に含む関数は現在メンテされていない. @code{nd_gr}系の関数を代わりに利用すべきである(@fref{nd_gr nd_gr_trace nd_f4 nd_f4_trace nd_weyl_gr nd_weyl_gr_trace}).
 @var{order} $B$K4X$9$k%0%l%V%J4pDl$r5a$a$k(B. @code{gr()}, @code{hgr()}  
 $B$O(B $BM-M}?t78?t(B, @code{gr_mod()} $B$O(B GF(@var{p}) $B78?t$H$7$F7W;;$9$k(B.  
 @item  @item
 @var{vlist} $B$OITDj85$N%j%9%H(B. @var{vlist} $B$K8=$l$J$$ITDj85$O(B,  いずれも, 多項式リスト @var{plist} の, 変数順序 @var{vlist}, 項順序型
 $B78?tBN$KB0$9$k$H8+$J$5$l$k(B.  @var{order} に関するグレブナ基底を求める. @code{gr()}, @code{hgr()}
   は 有理数係数, @code{gr_mod()} は GF(@var{p}) 係数として計算する.
 @item  @item
 @code{gr()}, trace-lifting ($B%b%8%e%i1i;;$rMQ$$$?9bB.2=(B) $B$*$h$S(B sugar  @var{vlist} は不定元のリスト. @var{vlist} に現れない不定元は,
 strategy $B$K$h$k7W;;(B, @code{hgr()} $B$O(B trace-lifting $B$*$h$S(B  係数体に属すると見なされる.
 $B@F<!2=$K$h$k(B $B6:@5$5$l$?(B sugar strategy $B$K$h$k7W;;$r9T$&(B.  
 @item  @item
 @code{dgr()} $B$O(B, @code{gr()}, @code{dgr()} $B$r(B  @code{gr()}, trace-lifting (モジュラ演算を用いた高速化) および sugar
 $B;R%W%m%;%9%j%9%H(B @var{procs} $B$N(B 2 $B$D$N%W%m%;%9$K$h$jF1;~$K7W;;$5$;(B,  strategy による計算, @code{hgr()} は trace-lifting および
 $B@h$K7k2L$rJV$7$?J}$N7k2L$rJV$9(B. $B7k2L$OF10l$G$"$k$,(B, $B$I$A$i$NJ}K!$,(B  斉次化による 矯正された sugar strategy による計算を行う.
 $B9bB.$+0lHL$K$OITL@$N$?$a(B, $B<B:]$N7P2a;~4V$rC;=L$9$k$N$KM-8z$G$"$k(B.  
 @item  @item
 @code{dgr()} $B$GI=<($5$l$k;~4V$O(B, $B$3$NH!?t$,<B9T$5$l$F$$$k%W%m%;%9$G$N(B  @code{dgr()} は, @code{gr()}, @code{hgr()} を
 CPU $B;~4V$G$"$j(B, $B$3$NH!?t$N>l9g$O$[$H$s$IDL?.$N$?$a$N;~4V$G$"$k(B.  子プロセスリスト @var{procs} の 2 つのプロセスにより同時に計算させ,
   先に結果を返した方の結果を返す. 結果は同一であるが, どちらの方法が
   高速か一般には不明のため, 実際の経過時間を短縮するのに有効である.
   @item
   @code{dgr()} で表示される時間は, この函数が実行されているプロセスでの
   CPU 時間であり, この函数の場合はほとんど通信のための時間である.
   @item
   多項式リスト @var{plist} の要素が分散表現多項式の場合は
   結果も分散表現多項式のリストである.
   この場合, 引数の分散多項式は与えられた順序に従い @code{dp_sort} で
   ソートされてから計算される.
   多項式リストの要素が分散表現多項式の場合も
   変数の数分の不定元のリストを @var{vlist} 引数として与えないといけない
   (ダミー).
 \E  \E
 \BEG  \BEG
 @item  @item
 These functions are defined in @samp{gr} in the standard library  These functions are defined in @samp{gr} in the standard library
 directory.  directory.
   @item
   Functions of which names contains gr are obsolted.
   Functions of @code{nd_gr} families should be used (@fref{nd_gr nd_gr_trace nd_f4 nd_f4_trace nd_weyl_gr nd_weyl_gr_trace}).
 @item  @item
 They compute a Groebner basis of a polynomial list @var{plist} with  They compute a Groebner basis of a polynomial list @var{plist} with
 respect to the variable order @var{vlist} and the order type @var{order}.  respect to the variable order @var{vlist} and the order type @var{order}.
Line 1440  Therefore this function is useful to reduce the actual
Line 1701  Therefore this function is useful to reduce the actual
 The CPU time shown after an exection of @code{dgr()} indicates  The CPU time shown after an exection of @code{dgr()} indicates
 that of the master process, and most of the time corresponds to the time  that of the master process, and most of the time corresponds to the time
 for communication.  for communication.
   @item
   When the elements of @var{plist} are distributed polynomials,
   the result is also a list of distributed polynomials.
   In this case, firstly  the elements of @var{plist} is sorted by @code{dp_sort}
   and the Grobner basis computation is started.
   Variables must be given in @var{vlist} even in this case
   (these variables are dummy).
 \E  \E
 @end itemize  @end itemize
   
Line 1455  for communication.
Line 1723  for communication.
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{dp_gr_main dp_gr_mod_main dp_gr_f_main dp_weyl_gr_main dp_weyl_gr_mod_main dp_weyl_gr_f_main},  @fref{dp_gr_main dp_gr_mod_main dp_gr_f_main dp_weyl_gr_main dp_weyl_gr_mod_main dp_weyl_gr_f_main},
 @fref{dp_ord}.  @fref{dp_ord}.
 @end table  @end table
   
 \JP @node lex_hensel lex_tl tolex tolex_d tolex_tl,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node lex_hensel lex_tl tolex tolex_d tolex_tl,,, グレブナ基底に関する函数
 \EG @node lex_hensel lex_tl tolex tolex_d tolex_tl,,, Functions for Groebner basis computation  \EG @node lex_hensel lex_tl tolex tolex_d tolex_tl,,, Functions for Groebner basis computation
 @subsection @code{lex_hensel}, @code{lex_tl}, @code{tolex}, @code{tolex_d}, @code{tolex_tl}  @subsection @code{lex_hensel}, @code{lex_tl}, @code{tolex}, @code{tolex_d}, @code{tolex_tl}
 @findex lex_hensel  @findex lex_hensel
Line 1473  for communication.
Line 1741  for communication.
 @table @t  @table @t
 @item lex_hensel(@var{plist},@var{vlist1},@var{order},@var{vlist2},@var{homo})  @item lex_hensel(@var{plist},@var{vlist1},@var{order},@var{vlist2},@var{homo})
 @itemx lex_tl(@var{plist},@var{vlist1},@var{order},@var{vlist2},@var{homo})  @itemx lex_tl(@var{plist},@var{vlist1},@var{order},@var{vlist2},@var{homo})
 \JP :: $B4pDlJQ49$K$h$k<-=q<0=g=x%0%l%V%J4pDl$N7W;;(B  \JP :: 基底変換による辞書式順序グレブナ基底の計算
 \EG:: Groebner basis computation with respect to a lex order by change of ordering  \EG:: Groebner basis computation with respect to a lex order by change of ordering
 @item tolex(@var{plist},@var{vlist1},@var{order},@var{vlist2})  @item tolex(@var{plist},@var{vlist1},@var{order},@var{vlist2})
 @itemx tolex_d(@var{plist},@var{vlist1},@var{order},@var{vlist2},@var{procs})  @itemx tolex_d(@var{plist},@var{vlist1},@var{order},@var{vlist2},@var{procs})
 @itemx tolex_tl(@var{plist},@var{vlist1},@var{order},@var{vlist2},@var{homo})  @itemx tolex_tl(@var{plist},@var{vlist1},@var{order},@var{vlist2},@var{homo})
 \JP :: $B%0%l%V%J4pDl$rF~NO$H$9$k(B, $B4pDlJQ49$K$h$k<-=q<0=g=x%0%l%V%J4pDl$N7W;;(B  \JP :: グレブナ基底を入力とする, 基底変換による辞書式順序グレブナ基底の計算
 \EG :: Groebner basis computation with respect to a lex order by change of ordering, starting from a Groebner basis  \EG :: Groebner basis computation with respect to a lex order by change of ordering, starting from a Groebner basis
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item plist  vlist1  vlist2  procs  @item plist  vlist1  vlist2  procs
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item order  @item order
 \JP $B?t(B, $B%j%9%H$^$?$O9TNs(B  \JP 数, リストまたは行列
 \EG number, list or matrix  \EG number, list or matrix
 @item homo  @item homo
 \JP $B%U%i%0(B  \JP フラグ
 \EG flag  \EG flag
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 $BI8=`%i%$%V%i%j$N(B @samp{gr} $B$GDj5A$5$l$F$$$k(B.  標準ライブラリの @samp{gr} で定義されている.
 @item  @item
 @code{lex_hensel()}, @code{lex_tl()} $B$O(B,  @code{lex_hensel()}, @code{lex_tl()} は,
 $BB?9`<0%j%9%H(B @var{plist} $B$N(B, $BJQ?t=g=x(B @var{vlist1}, $B9`=g=x7?(B  多項式リスト @var{plist} の, 変数順序 @var{vlist1}, 項順序型
 @var{order} $B$K4X$9$k%0%l%V%J4pDl$r5a$a(B, $B$=$l$r(B, $BJQ?t=g=x(B @var{vlist2}  @var{order} に関するグレブナ基底を求め, それを, 変数順序 @var{vlist2}
 $B$N<-=q<0=g=x%0%l%V%J4pDl$KJQ49$9$k(B.  の辞書式順序グレブナ基底に変換する.
 @item  @item
 @code{tolex()}, @code{tolex_tl()} $B$O(B,  @code{tolex()}, @code{tolex_tl()} は,
 $BJQ?t=g=x(B @var{vlist1}, $B9`=g=x7?(B @var{order} $B$K4X$9$k%0%l%V%J4pDl$G$"$k(B  変数順序 @var{vlist1}, 項順序型 @var{order} に関するグレブナ基底である
 $BB?9`<0%j%9%H(B @var{plist} $B$rJQ?t=g=x(B @var{vlist2} $B$N<-=q<0=g=x%0%l%V%J(B  多項式リスト @var{plist} を変数順序 @var{vlist2} の辞書式順序グレブナ
 $B4pDl$KJQ49$9$k(B.  基底に変換する.
 @code{tolex_d()} $B$O(B, @code{tolex()} $B$K$*$1$k(B, $B3F4pDl$N7W;;$r(B, $B;R%W%m%;%9(B  @code{tolex_d()} は, @code{tolex()} における, 各基底の計算を, 子プロセス
 $B%j%9%H(B @var{procs} $B$N3F%W%m%;%9$KJ,;67W;;$5$;$k(B.  リスト @var{procs} の各プロセスに分散計算させる.
 @item  @item
 @code{lex_hensel()}, @code{lex_tl()} $B$K$*$$$F$O(B, $B<-=q<0=g=x%0%l%V%J4pDl$N(B  @code{lex_hensel()}, @code{lex_tl()} においては, 辞書式順序グレブナ基底の
 $B7W;;$O<!$N$h$&$K9T$o$l$k(B. (@code{[Noro,Yokoyama]} $B;2>H(B.)  計算は次のように行われる. (@code{[Noro,Yokoyama]} 参照.)
 @enumerate  @enumerate
 @item  @item
 @var{vlist1}, @var{order} $B$K4X$9$k%0%l%V%J4pDl(B @var{G0} $B$r7W;;$9$k(B.  @var{vlist1}, @var{order} に関するグレブナ基底 @var{G0} を計算する.
 (@code{lex_hensel()} $B$N$_(B. )  (@code{lex_hensel()} のみ. )
 @item  @item
 @var{G0} $B$N3F85$N(B @var{vlist2} $B$K4X$9$k<-=q<0=g=x$K$*$1$kF,78?t$r3d$i$J$$(B  @var{G0} の各元の @var{vlist2} に関する辞書式順序における頭係数を割らない
 $B$h$&$JAG?t(B @var{p} $B$rA*$S(B, GF(@var{p}) $B>e$G$N<-=q<0=g=x%0%l%V%J4pDl(B  ような素数 @var{p} を選び, GF(@var{p}) 上での辞書式順序グレブナ基底
 @var{Gp} $B$r7W;;$9$k(B.  @var{Gp} を計算する.
 @item  @item
 @var{Gp} $B$K8=$l$k$9$Y$F$N9`$N(B, @var{G0} $B$K4X$9$k@55,7A(B @var{NF} $B$r7W;;$9$k(B.  @var{Gp} に現れるすべての項の, @var{G0} に関する正規形 @var{NF} を計算する.
 @item  @item
 @var{Gp} $B$N3F85(B @var{f} $B$K$D$-(B, @var{f} $B$N78?t$rL$Dj78?t$G(B,  @var{Gp} の各元 @var{f} につき, @var{f} の係数を未定係数で,
 @var{f} $B$N3F9`$rBP1~$9$k(B @var{NF} $B$N85$GCV$-49$((B, $B3F9`$N78?t$r(B 0 $B$HCV$$$?(B,  @var{f} の各項を対応する @var{NF} の元で置き換え, 各項の係数を 0 と置いた,
 $BL$Dj78?t$K4X$9$k@~7AJ}Dx<07O(B @var{Lf} $B$r:n$k(B.  未定係数に関する線形方程式系 @var{Lf} を作る.
 @item  @item
 @var{Lf} $B$,(B, $BK!(B @var{p} $B$G0l0U2r$r;}$D$3$H$rMQ$$$F(B @var{Lf} $B$N2r$r(B  @var{Lf} が, 法 @var{p} で一意解を持つことを用いて @var{Lf} の解を
 $BK!(B @var{p}$B$N2r$+$i(B Hensel $B9=@.$K$h$j5a$a$k(B.  法 @var{p}の解から Hensel 構成により求める.
 @item  @item
 $B$9$Y$F$N(B @var{Gp} $B$N85$K$D$-@~7AJ}Dx<0$,2r$1$?$i$=$N2rA4BN$,5a$a$k(B  すべての @var{Gp} の元につき線形方程式が解けたらその解全体が求める
 $B<-=q<0=g=x$G$N%0%l%V%J4pDl(B. $B$b$7$I$l$+$N@~7AJ}Dx<0$N5a2r$K<:GT$7$?$i(B,  辞書式順序でのグレブナ基底. もしどれかの線形方程式の求解に失敗したら,
 @var{p} $B$r$H$jD>$7$F$d$jD>$9(B.  @var{p} をとり直してやり直す.
 @end enumerate  @end enumerate
   
 @item  @item
 @code{lex_tl()}, @code{tolex_tl()} $B$K$*$$$F$O(B, $B<-=q<0=g=x%0%l%V%J4pDl$N(B  @code{lex_tl()}, @code{tolex_tl()} においては, 辞書式順序グレブナ基底の
 $B7W;;$O<!$N$h$&$K9T$o$l$k(B.  計算は次のように行われる.
   
 @enumerate  @enumerate
 @item  @item
 @var{vlist1}, @var{order} $B$K4X$9$k%0%l%V%J4pDl(B @var{G0} $B$r7W;;$9$k(B.  @var{vlist1}, @var{order} に関するグレブナ基底 @var{G0} を計算する.
 (@code{lex_hensel()} $B$N$_(B. )  (@code{lex_hensel()} のみ. )
 @item  @item
 @var{G0} $B$,(B 0 $B<!85%7%9%F%`$G$J$$$H$-(B, @var{G0} $B$rF~NO$H$7$F(B,  @var{G0} が 0 次元システムでないとき, @var{G0} を入力として,
 @var{G0} $B$N3F85$N(B @var{vlist2} $B$K4X$9$k<-=q<0=g=x$K$*$1$kF,78?t$r3d$i$J$$(B  @var{G0} の各元の @var{vlist2} に関する辞書式順序における頭係数を割らない
 $B$h$&$JAG?t(B @var{p} $B$rA*$S(B, @var{p} $B$rMQ$$$?(B trace-lifting $B$K$h$j<-=q<0(B  ような素数 @var{p} を選び, @var{p} を用いた trace-lifting により辞書式
 $B=g=x$N%0%l%V%J4pDl8uJd$r5a$a(B, $B$b$75a$^$C$?$J$i%A%'%C%/$J$7$K$=$l$,5a$a$k(B  順序のグレブナ基底候補を求め, もし求まったならチェックなしにそれが求める
 $B%0%l%V%J4pDl$H$J$k(B. $B$b$7<:GT$7$?$i(B, @var{p} $B$r$H$jD>$7$F$d$jD>$9(B.  グレブナ基底となる. もし失敗したら, @var{p} をとり直してやり直す.
 @item  @item
 @var{G0} $B$,(B 0 $B<!85%7%9%F%`$N$H$-(B, @var{G0} $B$rF~NO$H$7$F(B,  @var{G0} が 0 次元システムのとき, @var{G0} を入力として,
 $B$^$:(B, @var{vlist2} $B$N:G8e$NJQ?t0J30$r>C5n$9$k>C5n=g=x$K$h$j(B  まず, @var{vlist2} の最後の変数以外を消去する消去順序により
 $B%0%l%V%J4pDl(B @var{G1} $B$r7W;;$7(B, $B$=$l$+$i<-=q<0=g=x$N%0%l%V%J4pDl$r(B  グレブナ基底 @var{G1} を計算し, それから辞書式順序のグレブナ基底を
 $B7W;;$9$k(B. $B$=$N:](B, $B3F%9%F%C%W$G$O(B, $BF~NO$N3F85$N(B, $B5a$a$k=g=x$K$*$1$k(B  計算する. その際, 各ステップでは, 入力の各元の, 求める順序における
 $BF,78?t$r3d$i$J$$AG?t$rMQ$$$?(B trace-lifting $B$G%0%l%V%J4pDl8uJd$r5a$a(B,  頭係数を割らない素数を用いた trace-lifting でグレブナ基底候補を求め,
 $B$b$75a$^$C$?$i%A%'%C%/$J$7$K$=$l$,$=$N=g=x$G$N%0%l%V%J4pDl$H$J$k(B.  もし求まったらチェックなしにそれがその順序でのグレブナ基底となる.
 @end enumerate  @end enumerate
   
 @item  @item
 $BM-M}<078?t$N7W;;$O(B, @code{lex_tl()}, @code{tolex_tl()} $B$N$_<u$1IU$1$k(B.  有理式係数の計算は, @code{lex_tl()}, @code{tolex_tl()} のみ受け付ける.
 @item  @item
 @code{homo} $B$,(B 0 $B$G$J$$>l9g(B, $BFbIt$G5/F0$5$l$k(B Buchberger $B%"%k%4%j%:%`$K(B  @code{homo} が 0 でない場合, 内部で起動される Buchberger アルゴリズムに
 $B$*$$$F(B, $B@F<!2=$,9T$o$l$k(B.  おいて, 斉次化が行われる.
 @item  @item
 @code{tolex_d()} $B$GI=<($5$l$k;~4V$O(B, $B$3$NH!?t$,<B9T$5$l$F$$$k%W%m%;%9$K(B  @code{tolex_d()} で表示される時間は, この函数が実行されているプロセスに
 $B$*$$$F9T$o$l$?7W;;$KBP1~$7$F$$$F(B, $B;R%W%m%;%9$K$*$1$k;~4V$O4^$^$l$J$$(B.  おいて行われた計算に対応していて, 子プロセスにおける時間は含まれない.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 1672  processes.
Line 1940  processes.
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{dp_gr_main dp_gr_mod_main dp_gr_f_main dp_weyl_gr_main dp_weyl_gr_mod_main dp_weyl_gr_f_main},  @fref{dp_gr_main dp_gr_mod_main dp_gr_f_main dp_weyl_gr_main dp_weyl_gr_mod_main dp_weyl_gr_f_main},
 \JP @fref{dp_ord}, @fref{$BJ,;67W;;(B}  \JP @fref{dp_ord}, @fref{分散計算}
 \EG @fref{dp_ord}, @fref{Distributed computation}  \EG @fref{dp_ord}, @fref{Distributed computation}
 @end table  @end table
   
 \JP @node lex_hensel_gsl tolex_gsl tolex_gsl_d,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node lex_hensel_gsl tolex_gsl tolex_gsl_d,,, グレブナ基底に関する函数
 \EG @node lex_hensel_gsl tolex_gsl tolex_gsl_d,,, Functions for Groebner basis computation  \EG @node lex_hensel_gsl tolex_gsl tolex_gsl_d,,, Functions for Groebner basis computation
 @subsection @code{lex_hensel_gsl}, @code{tolex_gsl}, @code{tolex_gsl_d}  @subsection @code{lex_hensel_gsl}, @code{tolex_gsl}, @code{tolex_gsl_d}
 @findex lex_hensel_gsl  @findex lex_hensel_gsl
Line 1688  processes.
Line 1956  processes.
   
 @table @t  @table @t
 @item lex_hensel_gsl(@var{plist},@var{vlist1},@var{order},@var{vlist2},@var{homo})  @item lex_hensel_gsl(@var{plist},@var{vlist1},@var{order},@var{vlist2},@var{homo})
 \JP :: GSL $B7A<0$N%$%G%"%k4pDl$N7W;;(B  \JP :: GSL 形式のイデアル基底の計算
 \EG ::Computation of an GSL form ideal basis  \EG ::Computation of an GSL form ideal basis
 @item tolex_gsl(@var{plist},@var{vlist1},@var{order},@var{vlist2})  @item tolex_gsl(@var{plist},@var{vlist1},@var{order},@var{vlist2})
 @itemx tolex_gsl_d(@var{plist},@var{vlist1},@var{order},@var{vlist2},@var{procs})  @itemx tolex_gsl_d(@var{plist},@var{vlist1},@var{order},@var{vlist2},@var{procs})
 \JP :: $B%0%l%V%J4pDl$rF~NO$H$9$k(B, GSL $B7A<0$N%$%G%"%k4pDl$N7W;;(B  \JP :: グレブナ基底を入力とする, GSL 形式のイデアル基底の計算
 \EG :: Computation of an GSL form ideal basis stating from a Groebner basis  \EG :: Computation of an GSL form ideal basis stating from a Groebner basis
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item plist  vlist1  vlist2  procs  @item plist  vlist1  vlist2  procs
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item order  @item order
 \JP $B?t(B, $B%j%9%H$^$?$O9TNs(B  \JP 数, リストまたは行列
 \EG number, list or matrix  \EG number, list or matrix
 @item homo  @item homo
 \JP $B%U%i%0(B  \JP フラグ
 \EG flag  \EG flag
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 @code{lex_hensel_gsl()} $B$O(B @code{lex_hensel()} $B$N(B, @code{tolex_gsl()} $B$O(B  @code{lex_hensel_gsl()} は @code{lex_hensel()} の, @code{tolex_gsl()} は
 @code{tolex()} $B$NJQ<o$G(B, $B7k2L$N$_$,0[$J$k(B.  @code{tolex()} の変種で, 結果のみが異なる.
 @code{tolex_gsl_d()} $B$O(B, $B4pDl7W;;$r(B, @code{procs} $B$G;XDj$5$l$k;R%W%m%;%9$K(B  @code{tolex_gsl_d()} は, 基底計算を, @code{procs} で指定される子プロセスに
 $BJ,;67W;;$5$;$k(B.  分散計算させる.
 @item  @item
 $BF~NO$,(B 0 $B<!85%7%9%F%`$G(B, $B$=$N<-=q<0=g=x%0%l%V%J4pDl$,(B  入力が 0 次元システムで, その辞書式順序グレブナ基底が
 @code{[f0,x1-f1,...,xn-fn]} (@code{f0},...,@code{fn} $B$O(B  @code{[f0,x1-f1,...,xn-fn]} (@code{f0},...,@code{fn} は
 @code{x0} $B$N(B 1 $BJQ?tB?9`<0(B) $B$J$k7A(B ($B$3$l$r(B SL $B7A<0$H8F$V(B) $B$r;}$D>l9g(B,  @code{x0} の 1 変数多項式) なる形 (これを SL 形式と呼ぶ) を持つ場合,
 @code{[[x1,g1,d1],...,[xn,gn,dn],[x0,f0,f0']]} $B$J$k%j%9%H(B ($B$3$l$r(B GSL $B7A<0$H8F$V(B)  @code{[[x1,g1,d1],...,[xn,gn,dn],[x0,f0,f0']]} なるリスト (これを GSL 形式と呼ぶ)
 $B$rJV$9(B.  を返す.
 $B$3$3$G(B, @code{gi} $B$O(B, @code{di*f0'*fi-gi} $B$,(B @code{f0} $B$G3d$j@Z$l$k$h$&$J(B  ここで, @code{gi} は, @code{di*f0'*fi-gi} が @code{f0} で割り切れるような
 @code{x0} $B$N(B1 $BJQ?tB?9`<0$G(B,  @code{x0} の1 変数多項式で,
 $B2r$O(B @code{f0(x0)=0} $B$J$k(B @code{x0} $B$KBP$7(B, @code{[x1=g1/(d1*f0'),...,xn=gn/(dn*f0')]}  解は @code{f0(x0)=0} なる @code{x0} に対し, @code{[x1=g1/(d1*f0'),...,xn=gn/(dn*f0')]}
 $B$H$J$k(B. $B<-=q<0=g=x%0%l%V%J4pDl$,>e$N$h$&$J7A$G$J$$>l9g(B, @code{tolex()} $B$K(B  となる. 辞書式順序グレブナ基底が上のような形でない場合, @code{tolex()} に
 $B$h$kDL>o$N%0%l%V%J4pDl$rJV$9(B.  よる通常のグレブナ基底を返す.
 @item  @item
 GSL $B7A<0$K$h$jI=$5$l$k4pDl$O%0%l%V%J4pDl$G$O$J$$$,(B, $B0lHL$K78?t$,(B SL $B7A<0(B  GSL 形式により表される基底はグレブナ基底ではないが, 一般に係数が SL 形式
 $B$N%0%l%V%J4pDl$h$jHs>o$K>.$5$$$?$a7W;;$bB.$/(B, $B2r$b5a$a$d$9$$(B.  のグレブナ基底より非常に小さいため計算も速く, 解も求めやすい.
 @code{tolex_gsl_d()} $B$GI=<($5$l$k;~4V$O(B, $B$3$NH!?t$,<B9T$5$l$F$$$k%W%m%;%9$K(B  @code{tolex_gsl_d()} で表示される時間は, この函数が実行されているプロセスに
 $B$*$$$F9T$o$l$?7W;;$KBP1~$7$F$$$F(B, $B;R%W%m%;%9$K$*$1$k;~4V$O4^$^$l$J$$(B.  おいて行われた計算に対応していて, 子プロセスにおける時間は含まれない.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 1781  processes.
Line 2049  processes.
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{lex_hensel lex_tl tolex tolex_d tolex_tl},  @fref{lex_hensel lex_tl tolex tolex_d tolex_tl},
 \JP @fref{$BJ,;67W;;(B}  \JP @fref{分散計算}
 \EG @fref{Distributed computation}  \EG @fref{Distributed computation}
 @end table  @end table
   
 \JP @node gr_minipoly minipoly,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node gr_minipoly minipoly,,, グレブナ基底に関する函数
 \EG @node gr_minipoly minipoly,,, Functions for Groebner basis computation  \EG @node gr_minipoly minipoly,,, Functions for Groebner basis computation
 @subsection @code{gr_minipoly}, @code{minipoly}  @subsection @code{gr_minipoly}, @code{minipoly}
 @findex gr_minipoly  @findex gr_minipoly
Line 1796  processes.
Line 2064  processes.
   
 @table @t  @table @t
 @item gr_minipoly(@var{plist},@var{vlist},@var{order},@var{poly},@var{v},@var{homo})  @item gr_minipoly(@var{plist},@var{vlist},@var{order},@var{poly},@var{v},@var{homo})
 \JP :: $BB?9`<0$N(B, $B%$%G%"%k$rK!$H$7$?:G>.B?9`<0$N7W;;(B  \JP :: 多項式の, イデアルを法とした最小多項式の計算
 \EG :: Computation of the minimal polynomial of a polynomial modulo an ideal  \EG :: Computation of the minimal polynomial of a polynomial modulo an ideal
 @item minipoly(@var{plist},@var{vlist},@var{order},@var{poly},@var{v})  @item minipoly(@var{plist},@var{vlist},@var{order},@var{poly},@var{v})
 \JP :: $B%0%l%V%J4pDl$rF~NO$H$9$k(B, $BB?9`<0$N:G>.B?9`<0$N7W;;(B  \JP :: グレブナ基底を入力とする, 多項式の最小多項式の計算
 \EG :: Computation of the minimal polynomial of a polynomial modulo an ideal  \EG :: Computation of the minimal polynomial of a polynomial modulo an ideal
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $BB?9`<0(B  \JP 多項式
 \EG polynomial  \EG polynomial
 @item plist  vlist  @item plist  vlist
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item order  @item order
 \JP $B?t(B, $B%j%9%H$^$?$O9TNs(B  \JP 数, リストまたは行列
 \EG number, list or matrix  \EG number, list or matrix
 @item poly  @item poly
 \JP $BB?9`<0(B  \JP 多項式
 \EG polynomial  \EG polynomial
 @item v  @item v
 \JP $BITDj85(B  \JP 不定元
 \EG indeterminate  \EG indeterminate
 @item homo  @item homo
 \JP $B%U%i%0(B  \JP フラグ
 \EG flag  \EG flag
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 @code{gr_minipoly()} $B$O%0%l%V%J4pDl$N7W;;$+$i9T$$(B, @code{minipoly()} $B$O(B  @code{gr_minipoly()} はグレブナ基底の計算から行い, @code{minipoly()} は
 $BF~NO$r%0%l%V%J4pDl$H$_$J$9(B.  入力をグレブナ基底とみなす.
 @item  @item
 $B%$%G%"%k(B I $B$,BN(B K $B>e$NB?9`<04D(B K[X] $B$N(B 0 $B<!85%$%G%"%k$N;~(B,  イデアル I が体 K 上の多項式環 K[X] の 0 次元イデアルの時,
 K[@var{v}] $B$N85(B f(@var{v}) $B$K(B f(@var{p}) mod I $B$rBP1~$5$;$k(B  K[@var{v}] の元 f(@var{v}) に f(@var{p}) mod I を対応させる
 $B4D=`F17?$N3K$O(B 0 $B$G$J$$B?9`<0$K$h$j@8@.$5$l$k(B. $B$3$N@8@.85$r(B @var{p}  環準同型の核は 0 でない多項式により生成される. この生成元を @var{p}
 $B$N(B, $BK!(B @var{I} $B$G$N:G>.B?9`<0$H8F$V(B.  の, 法 @var{I} での最小多項式と呼ぶ.
 @item  @item
 @code{gr_minipoly()}, @code{minipoly()} $B$O(B, $BB?9`<0(B @var{p} $B$N:G>.B?9`<0(B  @code{gr_minipoly()}, @code{minipoly()} は, 多項式 @var{p} の最小多項式
 $B$r5a$a(B, @var{v} $B$rJQ?t$H$9$kB?9`<0$H$7$FJV$9(B.  を求め, @var{v} を変数とする多項式として返す.
 @item  @item
 $B:G>.B?9`<0$O(B, $B%0%l%V%J4pDl$N(B 1 $B$D$N85$H$7$F7W;;$9$k$3$H$b$G$-$k$,(B,  最小多項式は, グレブナ基底の 1 つの元として計算することもできるが,
 $B:G>.B?9`<0$N$_$r5a$a$?$$>l9g(B, @code{minipoly()}, @code{gr_minipoly()} $B$O(B  最小多項式のみを求めたい場合, @code{minipoly()}, @code{gr_minipoly()} は
 $B%0%l%V%J4pDl$rMQ$$$kJ}K!$KHf$Y$F8zN($,$h$$(B.  グレブナ基底を用いる方法に比べて効率がよい.
 @item  @item
 @code{gr_minipoly()} $B$K;XDj$9$k9`=g=x$H$7$F$O(B, $BDL>oA4<!?t5U<-=q<0=g=x$r(B  @code{gr_minipoly()} に指定する項順序としては, 通常全次数逆辞書式順序を
 $BMQ$$$k(B.  用いる.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 1880  for @code{gr_minipoly()}.
Line 2148  for @code{gr_minipoly()}.
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{lex_hensel lex_tl tolex tolex_d tolex_tl}.  @fref{lex_hensel lex_tl tolex tolex_d tolex_tl}.
 @end table  @end table
   
 \JP @node tolexm minipolym,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node tolexm minipolym,,, グレブナ基底に関する函数
 \EG @node tolexm minipolym,,, Functions for Groebner basis computation  \EG @node tolexm minipolym,,, Functions for Groebner basis computation
 @subsection @code{tolexm}, @code{minipolym}  @subsection @code{tolexm}, @code{minipolym}
 @findex tolexm  @findex tolexm
Line 1893  for @code{gr_minipoly()}.
Line 2161  for @code{gr_minipoly()}.
   
 @table @t  @table @t
 @item tolexm(@var{plist},@var{vlist1},@var{order},@var{vlist2},@var{mod})  @item tolexm(@var{plist},@var{vlist1},@var{order},@var{vlist2},@var{mod})
 \JP :: $BK!(B @var{mod} $B$G$N4pDlJQ49$K$h$k%0%l%V%J4pDl7W;;(B  \JP :: 法 @var{mod} での基底変換によるグレブナ基底計算
 \EG :: Groebner basis computation modulo @var{mod} by change of ordering.  \EG :: Groebner basis computation modulo @var{mod} by change of ordering.
 @item minipolym(@var{plist},@var{vlist1},@var{order},@var{poly},@var{v},@var{mod})  @item minipolym(@var{plist},@var{vlist1},@var{order},@var{poly},@var{v},@var{mod})
 \JP :: $BK!(B @var{mod} $B$G$N%0%l%V%J4pDl$K$h$kB?9`<0$N:G>.B?9`<0$N7W;;(B  \JP :: 法 @var{mod} でのグレブナ基底による多項式の最小多項式の計算
 \EG :: Minimal polynomial computation modulo @var{mod} the same method as  \EG :: Minimal polynomial computation modulo @var{mod} the same method as
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP @code{tolexm()} : $B%j%9%H(B, @code{minipolym()} : $BB?9`<0(B  \JP @code{tolexm()} : リスト, @code{minipolym()} : 多項式
 \EG @code{tolexm()} : list, @code{minipolym()} : polynomial  \EG @code{tolexm()} : list, @code{minipolym()} : polynomial
 @item plist  vlist1  vlist2  @item plist  vlist1  vlist2
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item order  @item order
 \JP $B?t(B, $B%j%9%H$^$?$O9TNs(B  \JP 数, リストまたは行列
 \EG number, list or matrix  \EG number, list or matrix
 @item mod  @item mod
 \JP $BAG?t(B  \JP 素数
 \EG prime  \EG prime
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 $BF~NO(B @var{plist} $B$O$$$:$l$b(B $BJQ?t=g=x(B @var{vlist1}, $B9`=g=x7?(B @var{order},  入力 @var{plist} はいずれも 変数順序 @var{vlist1}, 項順序型 @var{order},
 $BK!(B @var{mod} $B$K$*$1$k%0%l%V%J4pDl$G$J$1$l$P$J$i$J$$(B.  法 @var{mod} におけるグレブナ基底でなければならない.
 @item  @item
 @code{minipolym()} $B$O(B @code{minipoly} $B$KBP1~$9$k7W;;$rK!(B @var{mod}$B$G9T$&(B.  @code{minipolym()} は @code{minipoly} に対応する計算を法 @var{mod}で行う.
 @item  @item
 @code{tolexm()} $B$O(B FGLM $BK!$K$h$k4pDlJQ49$K$h$j(B @var{vlist2},  @code{tolexm()} は FGLM 法による基底変換により @var{vlist2},
 $B<-=q<0=g=x$K$h$k%0%l%V%J4pDl$r7W;;$9$k(B.  辞書式順序によるグレブナ基底を計算する.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 1946  z^32+11405*z^31+20868*z^30+21602*z^29+...
Line 2214  z^32+11405*z^31+20868*z^30+21602*z^29+...
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{lex_hensel lex_tl tolex tolex_d tolex_tl},  @fref{lex_hensel lex_tl tolex tolex_d tolex_tl},
 @fref{gr_minipoly minipoly}.  @fref{gr_minipoly minipoly}.
 @end table  @end table
   
 \JP @node dp_gr_main dp_gr_mod_main dp_gr_f_main dp_weyl_gr_main dp_weyl_gr_mod_main dp_weyl_gr_f_main,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_gr_main dp_gr_mod_main dp_gr_f_main dp_weyl_gr_main dp_weyl_gr_mod_main dp_weyl_gr_f_main,,, グレブナ基底に関する函数
 \EG @node dp_gr_main dp_gr_mod_main dp_gr_f_main dp_weyl_gr_main dp_weyl_gr_mod_main dp_weyl_gr_f_main,,, Functions for Groebner basis computation  \EG @node dp_gr_main dp_gr_mod_main dp_gr_f_main dp_weyl_gr_main dp_weyl_gr_mod_main dp_weyl_gr_f_main,,, Functions for Groebner basis computation
 @subsection @code{dp_gr_main}, @code{dp_gr_mod_main}, @code{dp_gr_f_main}, @code{dp_weyl_gr_main}, @code{dp_weyl_gr_mod_main}, @code{dp_weyl_gr_f_main}  @subsection @code{dp_gr_main}, @code{dp_gr_mod_main}, @code{dp_gr_f_main}, @code{dp_weyl_gr_main}, @code{dp_weyl_gr_mod_main}, @code{dp_weyl_gr_f_main}
 @findex dp_gr_main  @findex dp_gr_main
Line 1969  z^32+11405*z^31+20868*z^30+21602*z^29+...
Line 2237  z^32+11405*z^31+20868*z^30+21602*z^29+...
 @itemx dp_weyl_gr_main(@var{plist},@var{vlist},@var{homo},@var{modular},@var{order})  @itemx dp_weyl_gr_main(@var{plist},@var{vlist},@var{homo},@var{modular},@var{order})
 @itemx dp_weyl_gr_mod_main(@var{plist},@var{vlist},@var{homo},@var{modular},@var{order})  @itemx dp_weyl_gr_mod_main(@var{plist},@var{vlist},@var{homo},@var{modular},@var{order})
 @itemx dp_weyl_gr_f_main(@var{plist},@var{vlist},@var{homo},@var{order})  @itemx dp_weyl_gr_f_main(@var{plist},@var{vlist},@var{homo},@var{order})
 \JP :: $B%0%l%V%J4pDl$N7W;;(B ($BAH$_9~$_H!?t(B)  \JP :: グレブナ基底の計算 (組み込み函数)
 \EG :: Groebner basis computation (built-in functions)  \EG :: Groebner basis computation (built-in functions)
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item plist  vlist  @item plist  vlist
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item order  @item order
 \JP $B?t(B, $B%j%9%H$^$?$O9TNs(B  \JP 数, リストまたは行列
 \EG number, list or matrix  \EG number, list or matrix
 @item homo  @item homo
 \JP $B%U%i%0(B  \JP フラグ
 \EG flag  \EG flag
 @item modular  @item modular
 \JP $B%U%i%0$^$?$OAG?t(B  \JP フラグまたは素数
 \EG flag or prime  \EG flag or prime
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 $B$3$l$i$NH!?t$O(B, $B%0%l%V%J4pDl7W;;$N4pK\E*AH$_9~$_H!?t$G$"$j(B, @code{gr()},  これらの函数は, グレブナ基底計算の基本的組み込み函数であり, @code{gr()},
 @code{hgr()}, @code{gr_mod()} $B$J$I$O$9$Y$F$3$l$i$NH!?t$r8F$S=P$7$F7W;;(B  @code{hgr()}, @code{gr_mod()} などはすべてこれらの函数を呼び出して計算
 $B$r9T$C$F$$$k(B. $B4X?tL>$K(B weyl $B$,F~$C$F$$$k$b$N$O(B, Weyl $BBe?t>e$N7W;;(B  を行っている. 関数名に weyl が入っているものは, Weyl 代数上の計算
 $B$N$?$a$N4X?t$G$"$k(B.  のための関数である.
 @item  @item
 @code{dp_gr_f_main()}, @code{dp_weyl_f_main()} $B$O(B, $B<o!9$NM-8BBN>e$N%0%l%V%J4pDl$r7W;;$9$k(B  @code{dp_gr_f_main()}, @code{dp_weyl_f_main()} は, 種々の有限体上のグレブナ基底を計算する
 $B>l9g$KMQ$$$k(B. $BF~NO$O(B, $B$"$i$+$8$a(B, @code{simp_ff()} $B$J$I$G(B,  場合に用いる. 入力は, あらかじめ, @code{simp_ff()} などで,
 $B9M$($kM-8BBN>e$K<M1F$5$l$F$$$kI,MW$,$"$k(B.  考える有限体上に射影されている必要がある.
 @item  @item
 $B%U%i%0(B @var{homo} $B$,(B 0 $B$G$J$$;~(B, $BF~NO$r@F<!2=$7$F$+$i(B Buchberger $B%"%k%4%j%:%`(B  フラグ @var{homo} が 0 でない時, 入力を斉次化してから Buchberger アルゴリズム
 $B$r<B9T$9$k(B.  を実行する.
 @item  @item
 @code{dp_gr_mod_main()} $B$KBP$7$F$O(B, @var{modular} $B$O(B, GF(@var{modular}) $B>e(B  @code{dp_gr_mod_main()} に対しては, @var{modular} は, GF(@var{modular}) 上
 $B$G$N7W;;$r0UL#$9$k(B.  での計算を意味する.
 @code{dp_gr_main()} $B$KBP$7$F$O(B, @var{modular} $B$O<!$N$h$&$J0UL#$r;}$D(B.  @code{dp_gr_main()} に対しては, @var{modular} は次のような意味を持つ.
 @enumerate  @enumerate
 @item  @item
 @var{modular} $B$,(B 1 $B$N;~(B, trace-lifting $B$K$h$k7W;;$r9T$&(B. $BAG?t$O(B  @var{modular} が 1 の時, trace-lifting による計算を行う. 素数は
 @code{lprime(0)} $B$+$i=g$K@.8y$9$k$^$G(B @code{lprime()} $B$r8F$S=P$7$F@8@.$9$k(B.  @code{lprime(0)} から順に成功するまで @code{lprime()} を呼び出して生成する.
 @item  @item
 @var{modular} $B$,(B 2 $B0J>e$N<+A3?t$N;~(B, $B$=$NCM$rAG?t$H$_$J$7$F(B trace-lifting  @var{modular} が 2 以上の自然数の時, その値を素数とみなして trace-lifting
 $B$r9T$&(B. $B$=$NAG?t$G<:GT$7$?>l9g(B, 0 $B$rJV$9(B.  を行う. その素数で失敗した場合, 0 を返す.
 @item  @item
 @var{modular} $B$,Ii$N>l9g(B,  @var{modular} が負の場合,
 @var{-modular} $B$KBP$7$F>e=R$N5,B'$,E,MQ$5$l$k$,(B, trace-lifting $B$N:G=*(B  @var{-modular} に対して上述の規則が適用されるが, trace-lifting の最終
 $BCJ3,$N%0%l%V%J4pDl%A%'%C%/$H%$%G%"%k%a%s%P%7%C%W%A%'%C%/$,>JN,$5$l$k(B.  段階のグレブナ基底チェックとイデアルメンバシップチェックが省略される.
 @end enumerate  @end enumerate
   
 @item  @item
 @code{gr(P,V,O)} $B$O(B @code{dp_gr_main(P,V,0,1,O)}, @code{hgr(P,V,O)} $B$O(B  @code{gr(P,V,O)} は @code{dp_gr_main(P,V,0,1,O)}, @code{hgr(P,V,O)} は
 @code{dp_gr_main(P,V,1,1,O)}, @code{gr_mod(P,V,O,M)} $B$O(B  @code{dp_gr_main(P,V,1,1,O)}, @code{gr_mod(P,V,O,M)} は
 @code{dp_gr_mod_main(P,V,0,M,O)} $B$r$=$l$>$l<B9T$9$k(B.  @code{dp_gr_mod_main(P,V,0,M,O)} をそれぞれ実行する.
 @item  @item
 @var{homo}, @var{modular} $B$NB>$K(B, @code{dp_gr_flags()} $B$G@_Dj$5$l$k(B  @var{homo}, @var{modular} の他に, @code{dp_gr_flags()} で設定される
 $B$5$^$6$^$J%U%i%0$K$h$j7W;;$,@)8f$5$l$k(B.  さまざまなフラグにより計算が制御される.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 2075  Actual computation is controlled by various parameters
Line 2343  Actual computation is controlled by various parameters
 @end itemize  @end itemize
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{dp_ord},  @fref{dp_ord},
 @fref{dp_gr_flags dp_gr_print},  @fref{dp_gr_flags dp_gr_print},
 @fref{gr hgr gr_mod},  @fref{gr hgr gr_mod},
 @fref{setmod_ff},  @fref{setmod_ff},
 \JP @fref{$B7W;;$*$h$SI=<($N@)8f(B}.  \JP @fref{計算および表示の制御}.
 \EG @fref{Controlling Groebner basis computations}  \EG @fref{Controlling Groebner basis computations}
 @end table  @end table
   
 \JP @node dp_f4_main dp_f4_mod_main dp_weyl_f4_main dp_weyl_f4_mod_main,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_f4_main dp_f4_mod_main dp_weyl_f4_main dp_weyl_f4_mod_main,,, グレブナ基底に関する函数
 \EG @node dp_f4_main dp_f4_mod_main dp_weyl_f4_main dp_weyl_f4_mod_main,,, Functions for Groebner basis computation  \EG @node dp_f4_main dp_f4_mod_main dp_weyl_f4_main dp_weyl_f4_mod_main,,, Functions for Groebner basis computation
 @subsection @code{dp_f4_main}, @code{dp_f4_mod_main}, @code{dp_weyl_f4_main}, @code{dp_weyl_f4_mod_main}  @subsection @code{dp_f4_main}, @code{dp_f4_mod_main}, @code{dp_weyl_f4_main}, @code{dp_weyl_f4_mod_main}
 @findex dp_f4_main  @findex dp_f4_main
Line 2098  Actual computation is controlled by various parameters
Line 2366  Actual computation is controlled by various parameters
 @itemx dp_f4_mod_main(@var{plist},@var{vlist},@var{order})  @itemx dp_f4_mod_main(@var{plist},@var{vlist},@var{order})
 @itemx dp_weyl_f4_main(@var{plist},@var{vlist},@var{order})  @itemx dp_weyl_f4_main(@var{plist},@var{vlist},@var{order})
 @itemx dp_weyl_f4_mod_main(@var{plist},@var{vlist},@var{order})  @itemx dp_weyl_f4_mod_main(@var{plist},@var{vlist},@var{order})
 \JP :: F4 $B%"%k%4%j%:%`$K$h$k%0%l%V%J4pDl$N7W;;(B ($BAH$_9~$_H!?t(B)  \JP :: F4 アルゴリズムによるグレブナ基底の計算 (組み込み函数)
 \EG :: Groebner basis computation by F4 algorithm (built-in functions)  \EG :: Groebner basis computation by F4 algorithm (built-in functions)
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item plist  vlist  @item plist  vlist
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item order  @item order
 \JP $B?t(B, $B%j%9%H$^$?$O9TNs(B  \JP 数, リストまたは行列
 \EG number, list or matrix  \EG number, list or matrix
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 F4 $B%"%k%4%j%:%`$K$h$j%0%l%V%J4pDl$N7W;;$r9T$&(B.  F4 アルゴリズムによりグレブナ基底の計算を行う.
 @item  @item
 F4 $B%"%k%4%j%:%`$O(B, J.C. Faugere $B$K$h$jDs>'$5$l$??7@$Be%0%l%V%J4pDl(B  F4 アルゴリズムは, J.C. Faugere により提唱された新世代グレブナ基底
 $B;;K!$G$"$j(B, $BK\<BAu$O(B, $BCf9q>jM>DjM}$K$h$k@~7AJ}Dx<05a2r$rMQ$$$?(B  算法であり, 本実装は, 中国剰余定理による線形方程式求解を用いた
 $B;n83E*$J<BAu$G$"$k(B.  試験的な実装である.
 @item  @item
 $B@F<!2=$N0z?t$,$J$$$3$H$r=|$1$P(B, $B0z?t$*$h$SF0:n$O$=$l$>$l(B  斉次化の引数がないことを除けば, 引数および動作はそれぞれ
 @code{dp_gr_main()}, @code{dp_gr_mod_main()},  @code{dp_gr_main()}, @code{dp_gr_mod_main()},
 @code{dp_weyl_gr_main()}, @code{dp_weyl_gr_mod_main()}  @code{dp_weyl_gr_main()}, @code{dp_weyl_gr_mod_main()}
 $B$HF1MM$G$"$k(B.  と同様である.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 2144  except for lack of the argument for controlling homoge
Line 2412  except for lack of the argument for controlling homoge
 @end itemize  @end itemize
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{dp_ord},  @fref{dp_ord},
 @fref{dp_gr_flags dp_gr_print},  @fref{dp_gr_flags dp_gr_print},
 @fref{gr hgr gr_mod},  @fref{gr hgr gr_mod},
 \JP @fref{$B7W;;$*$h$SI=<($N@)8f(B}.  \JP @fref{計算および表示の制御}.
 \EG @fref{Controlling Groebner basis computations}  \EG @fref{Controlling Groebner basis computations}
 @end table  @end table
   
 \JP @node dp_gr_flags dp_gr_print,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node nd_gr nd_gr_trace nd_f4 nd_f4_trace nd_weyl_gr nd_weyl_gr_trace,,, グレブナ基底に関する函数
   \EG @node nd_gr nd_gr_trace nd_f4 nd_f4_trace nd_weyl_gr nd_weyl_gr_trace,,, Functions for Groebner basis computation
   @subsection @code{nd_gr}, @code{nd_gr_trace}, @code{nd_f4}, @code{nd_f4_trace}, @code{nd_weyl_gr}, @code{nd_weyl_gr_trace}
   @findex nd_gr
   @findex nd_gr_trace
   @findex nd_f4
   @findex nd_f4_trace
   @findex nd_weyl_gr
   @findex nd_weyl_gr_trace
   
   @table @t
   @item nd_gr(@var{plist},@var{vlist},@var{p},@var{order}[|@var{option=value,...}])
   @itemx nd_gr_trace(@var{plist},@var{vlist},@var{homo},@var{p},@var{order}[|@var{option=value,...}])
   @itemx nd_f4(@var{plist},@var{vlist},@var{modular},@var{order}[|@var{option=value,...}])
   @itemx nd_f4_trace(@var{plist},@var{vlist},@var{homo},@var{p},@var{order}[|@var{option=value,...}])
   @itemx nd_weyl_gr(@var{plist},@var{vlist},@var{p},@var{order}[|@var{option=value,...}])
   @itemx nd_weyl_gr_trace(@var{plist},@var{vlist},@var{homo},@var{p},@var{order}[|@var{option=value,...}])
   \JP :: グレブナ基底の計算 (組み込み函数)
   \EG :: Groebner basis computation (built-in functions)
   @end table
   
   @table @var
   @item return
   \JP リスト
   \EG list
   @item plist  vlist
   \JP リスト
   \EG list
   @item order
   \JP 数, リストまたは行列
   \EG number, list or matrix
   @item homo
   \JP フラグ
   \EG flag
   @item modular
   \JP フラグまたは素数
   \EG flag or prime
   @end table
   
   \BJP
   @itemize @bullet
   @item
   これらの函数は, グレブナ基底計算組み込み関数の新実装である.
   @item @code{nd_gr} は, @code{p} が 0 のとき有理数体上の Buchberger
   アルゴリズムを実行する. @code{p} が 2 以上の自然数のとき, GF(p) 上の
   Buchberger アルゴリズムを実行する.
   @item @code{nd_gr_trace} および @code{nd_f4_trace}
   は有理数体上で trace アルゴリズムを実行する.
   @var{p} が 0 または 1 のとき, 自動的に選ばれた素数を用いて, 成功する
   まで trace アルゴリズムを実行する.
   @var{p} が 2 以上のとき, trace はGF(p) 上で計算される. trace アルゴリズム
   が失敗した場合 0 が返される. @var{p} が負の場合, グレブナ基底チェックは
   行わない. この場合, @var{p} が -1 ならば自動的に選ばれた素数が,
   それ以外は指定された素数を用いてグレブナ基底候補の計算が行われる.
   @code{nd_f4_trace} は, 各全次数について, ある有限体上で F4 アルゴリズム
   で行った結果をもとに, その有限体上で 0 でない基底を与える S-多項式のみを
   用いて行列生成を行い, その全次数における基底を生成する方法である. 得られる
   多項式集合はやはりグレブナ基底候補であり, @code{nd_gr_trace} と同様の
   チェックが行われる.
   @item
   @code{nd_f4} は @code{modular} が 0 のとき有理数体上の, @code{modular} が
   マシンサイズ素数のとき有限体上の F4 アルゴリズムを実行する.
   @item
   @var{plist} が多項式リストの場合, @var{plist}で生成されるイデアルのグレブナー基底が
   計算される. @var{plist} が多項式リストのリストの場合, 各要素は多項式環上の自由加群の元と見なされ,
   これらが生成する部分加群のグレブナー基底が計算される. 後者の場合, 項順序は加群に対する項順序を
   指定する必要がある. これは @var{[s,ord]} の形で指定する. @var{s} が 0 ならば TOP (Term Over Position),
   1 ならば POT (Position Over Term) を意味し, @var{ord} は多項式環の単項式に対する項順序である.
   @item
   @code{nd_weyl_gr}, @code{nd_weyl_gr_trace} は Weyl 代数用である.
   @item
   @code{f4} 系関数以外はすべて有理関数係数の計算が可能である.
   @item
   一般に @code{dp_gr_main}, @code{dp_gr_mod_main} より高速であるが,
   特に有限体上の場合顕著である.
   @item
   以下のオプションが指定できる.
   @table @code
   @item homo
   1 のとき, 斉次化を経由して計算する. (@code{nd_gr}, @code{nd_f4} のみ)
   @item dp
   1 のとき, 分散表現多項式 (加群の場合には加群多項式) を結果として返す.
   @item nora
   1 のとき, 結果の相互簡約を行わない.
   @end table
   @end itemize
   \E
   
   \BEG
   @itemize @bullet
   @item
   These functions are new implementations for computing Groebner bases.
   @item @code{nd_gr} executes Buchberger algorithm over the rationals
   if  @code{p} is 0, and that over GF(p) if @code{p} is a prime.
   @item @code{nd_gr_trace} executes the trace algorithm over the rationals.
   If @code{p} is 0 or 1, the trace algorithm is executed until it succeeds
   by using automatically chosen primes.
   If @code{p} a positive prime,
   the trace is comuted over GF(p).
   If the trace algorithm fails 0 is returned.
   If @code{p} is negative,
   the Groebner basis check and ideal-membership check are omitted.
   In this case, an automatically chosen prime if @code{p} is 1,
   otherwise the specified prime is used to compute a Groebner basis
   candidate.
   Execution of @code{nd_f4_trace} is done as follows:
   For each total degree, an F4-reduction of S-polynomials over a finite field
   is done, and S-polynomials which give non-zero basis elements are gathered.
   Then F4-reduction over Q is done for the gathered S-polynomials.
   The obtained polynomial set is a Groebner basis candidate and the same
   check procedure as in the case of @code{nd_gr_trace} is done.
   @item
   @code{nd_f4} executes F4 algorithm over Q if @code{modular} is equal to 0,
   or over a finite field GF(@code{modular})
   if @code{modular} is a prime number of machine size (<2^29).
   If @var{plist} is a list of polynomials, then a Groebner basis of the ideal generated by @var{plist}
   is computed. If @var{plist} is a list of lists of polynomials, then each list of polynomials are regarded
   as an element of a free module over a polynomial ring and a Groebner basis of the sub-module generated by @var{plist}
   in the free module. In the latter case a term order in the free module should be specified.
   This is specified by @var{[s,ord]}. If @var{s} is 0 then it means TOP (Term Over Position).
   If @var{s} is 1 then it means POT 1 (Position Over Term). @var{ord} is a term order in the base polynomial ring.
   @item
   @code{nd_weyl_gr}, @code{nd_weyl_gr_trace} are for Weyl algebra computation.
   @item
   Functions except for F4 related ones can handle rational coeffient cases.
   @item
   In general these functions are more efficient than
   @code{dp_gr_main}, @code{dp_gr_mod_main}, especially over finite fields.
   @item
   The fallowing options can be specified.
   @table @code
   @item homo
   If set to 1, the computation is done via homogenization. (only for @code{nd_gr} and @code{nd_f4})
   @item dp
   If set to 1, the functions return a list of distributed polynomials (a list of
   module polynomials when the input is a sub-module).
   @item nora
   If set to 1, the inter-reduction is not performed.
   @end table
   @end itemize
   \E
   
   @example
   [38] load("cyclic")$
   [49] C=cyclic(7)$
   [50] V=vars(C)$
   [51] cputime(1)$
   [52] dp_gr_mod_main(C,V,0,31991,0)$
   26.06sec + gc : 0.313sec(26.4sec)
   [53] nd_gr(C,V,31991,0)$
   ndv_alloc=1477188
   5.737sec + gc : 0.1837sec(5.921sec)
   [54] dp_f4_mod_main(C,V,31991,0)$
   3.51sec + gc : 0.7109sec(4.221sec)
   [55] nd_f4(C,V,31991,0)$
   1.906sec + gc : 0.126sec(2.032sec)
   @end example
   
   @table @t
   \JP @item 参照
   \EG @item References
   @fref{dp_ord},
   @fref{dp_gr_flags dp_gr_print},
   \JP @fref{計算および表示の制御}.
   \EG @fref{Controlling Groebner basis computations}
   @end table
   
   \JP @node nd_gr_postproc nd_weyl_gr_postproc,,, グレブナ基底に関する函数
   \EG @node nd_gr_postproc nd_weyl_gr_postproc,,, Functions for Groebner basis computation
   @subsection @code{nd_gr_postproc}, @code{nd_weyl_gr_postproc}
   @findex nd_gr_postproc
   @findex nd_weyl_gr_postproc
   
   @table @t
   @item nd_gr_postproc(@var{plist},@var{vlist},@var{p},@var{order},@var{check})
   @itemx nd_weyl_gr_postproc(@var{plist},@var{vlist},@var{p},@var{order},@var{check})
   \JP :: グレブナ基底候補のチェックおよび相互簡約
   \EG :: Check of Groebner basis candidate and inter-reduction
   @end table
   
   @table @var
   @item return
   \JP リスト または 0
   \EG list or 0
   @item plist  vlist
   \JP リスト
   \EG list
   @item p
   \JP 素数または 0
   \EG prime or 0
   @item order
   \JP 数, リストまたは行列
   \EG number, list or matrix
   @item check
   \JP 0 または 1
   \EG 0 or 1
   @end table
   
   @itemize @bullet
   \BJP
   @item
   グレブナ基底(候補)の相互簡約を行う.
   @item
   @code{nd_weyl_gr_postproc} は Weyl 代数用である.
   @item
   @var{check=1} の場合, @var{plist} が, @var{vlist}, @var{p}, @var{order} で指定される多項式環, 項順序でグレブナー基底になっているか
   のチェックも行う.
   @item
   斉次化して計算したグレブナー基底を非斉次化したものを相互簡約を行う, CRT で計算したグレブナー基底候補のチェックを行うなどの場合に用いる.
   \E
   \BEG
   @item
   Perform the inter-reduction for a Groebner basis (candidate).
   @item
   @code{nd_weyl_gr_postproc} is for Weyl algebra.
   @item
   If @var{check=1} then the check whether @var{plist} is a Groebner basis with respect to a term order in a polynomial ring
   or Weyl algebra specified by @var{vlist}, @var{p} and @var{order}.
   @item
   This function is used for inter-reduction of a non-reduced Groebner basis that is obtained by dehomogenizing a Groebner basis
   computed via homogenization, or Groebner basis check of a Groebner basis candidate computed by CRT.
   \E
   @end itemize
   
   @example
   afo
   @end example
   
   \JP @node dp_gr_flags dp_gr_print,,, グレブナ基底に関する函数
 \EG @node dp_gr_flags dp_gr_print,,, Functions for Groebner basis computation  \EG @node dp_gr_flags dp_gr_print,,, Functions for Groebner basis computation
 @subsection @code{dp_gr_flags}, @code{dp_gr_print}  @subsection @code{dp_gr_flags}, @code{dp_gr_print}
 @findex dp_gr_flags  @findex dp_gr_flags
Line 2162  except for lack of the argument for controlling homoge
Line 2658  except for lack of the argument for controlling homoge
 @table @t  @table @t
 @item dp_gr_flags([@var{list}])  @item dp_gr_flags([@var{list}])
 @itemx dp_gr_print([@var{i}])  @itemx dp_gr_print([@var{i}])
 \JP :: $B7W;;$*$h$SI=<(MQ%Q%i%a%?$N@_Dj(B, $B;2>H(B  \JP :: 計算および表示用パラメタの設定, 参照
 \BEG :: Set and show various parameters for cotrolling computations  \BEG :: Set and show various parameters for cotrolling computations
 and showing informations.  and showing informations.
 \E  \E
Line 2170  and showing informations.
Line 2666  and showing informations.
   
 @table @var  @table @var
 @item return  @item return
 \JP $B@_DjCM(B  \JP 設定値
 \EG value currently set  \EG value currently set
 @item list  @item list
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item i  @item i
 \JP $B@0?t(B  \JP 整数
 \EG integer  \EG integer
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 @code{dp_gr_main()}, @code{dp_gr_mod_main()}, @code{dp_gr_f_main()}  $B<B9T;~$K$*$1$k$5$^$6$^(B  @code{dp_gr_main()}, @code{dp_gr_mod_main()}, @code{dp_gr_f_main()}  実行時におけるさまざま
 $B$J%Q%i%a%?$r@_Dj(B, $B;2>H$9$k(B.  なパラメタを設定, 参照する.
 @item  @item
 $B0z?t$,$J$$>l9g(B, $B8=:_$N@_Dj$,JV$5$l$k(B.  引数がない場合, 現在の設定が返される.
 @item  @item
 $B0z?t$O(B, @code{["Print",1,"NoSugar",1,...]} $B$J$k7A$N%j%9%H$G(B, $B:8$+$i=g$K(B  引数は, @code{["Print",1,"NoSugar",1,...]} なる形のリストで, 左から順に
 $B@_Dj$5$l$k(B. $B%Q%i%a%?L>$OJ8;zNs$GM?$($kI,MW$,$"$k(B.  設定される. パラメタ名は文字列で与える必要がある.
 @item  @item
 @code{dp_gr_print()} $B$O(B, $BFC$K%Q%i%a%?(B @code{Print}, @code{PrintShort} $B$NCM$rD>@\@_Dj(B, $B;2>H(B  @code{dp_gr_print()} は, 特にパラメタ @code{Print}, @code{PrintShort} の値を直接設定, 参照
 $B$G$-$k(B. $B@_Dj$5$l$kCM$O<!$NDL$j$G$"$k!#(B  できる. 設定される値は次の通りである。
 @table @var  @table @var
 @item i=0  @item i=0
 @code{Print=0}, @code{PrintShort=0}  @code{Print=0}, @code{PrintShort=0}
Line 2201  and showing informations.
Line 2697  and showing informations.
 @item i=2  @item i=2
 @code{Print=0}, @code{PrintShort=1}  @code{Print=0}, @code{PrintShort=1}
 @end table  @end table
 $B$3$l$O(B, @code{dp_gr_main()} $B$J$I$r%5%V%k!<%A%s$H$7$FMQ$$$k%f!<%6(B  これは, @code{dp_gr_main()} などをサブルーチンとして用いるユーザ
 $BH!?t$K$*$$$F(B, $B$=$N%5%V%k!<%A%s$,Cf4V>pJs$NI=<((B  函数において, そのサブルーチンが中間情報の表示
 $B$r9T$&:]$K(B, $B?WB.$K%U%i%0$r8+$k$3$H$,$G$-$k$h$&$KMQ0U$5$l$F$$$k(B.  を行う際に, 迅速にフラグを見ることができるように用意されている.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 2233  uses the value as a flag for showing intermediate info
Line 2729  uses the value as a flag for showing intermediate info
 @end itemize  @end itemize
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 \JP @fref{$B7W;;$*$h$SI=<($N@)8f(B}  \JP @fref{計算および表示の制御}
 \EG @fref{Controlling Groebner basis computations}  \EG @fref{Controlling Groebner basis computations}
 @end table  @end table
   
 \JP @node dp_ord,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_ord,,, グレブナ基底に関する函数
 \EG @node dp_ord,,, Functions for Groebner basis computation  \EG @node dp_ord,,, Functions for Groebner basis computation
 @subsection @code{dp_ord}  @subsection @code{dp_ord}
 @findex dp_ord  @findex dp_ord
   
 @table @t  @table @t
 @item dp_ord([@var{order}])  @item dp_ord([@var{order}])
 \JP :: $BJQ?t=g=x7?$N@_Dj(B, $B;2>H(B  \JP :: 変数順序型の設定, 参照
 \EG :: Set and show the ordering type.  \EG :: Set and show the ordering type.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $BJQ?t=g=x7?(B ($B?t(B, $B%j%9%H$^$?$O9TNs(B)  \JP 変数順序型 (数, リストまたは行列)
 \EG ordering type (number, list or matrix)  \EG ordering type (number, list or matrix)
 @item order  @item order
 \JP $B?t(B, $B%j%9%H$^$?$O9TNs(B  \JP 数, リストまたは行列
 \EG number, list or matrix  \EG number, list or matrix
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 $B0z?t$,$"$k;~(B, $BJQ?t=g=x7?$r(B @var{order} $B$K@_Dj$9$k(B. $B0z?t$,$J$$;~(B,  引数がある時, 変数順序型を @var{order} に設定する. 引数がない時,
 $B8=:_@_Dj$5$l$F$$$kJQ?t=g=x7?$rJV$9(B.  現在設定されている変数順序型を返す.
   
 @item  @item
 $BJ,;6I=8=B?9`<0$K4X$9$kH!?t(B, $B1i;;$O0z?t$H$7$FJQ?t=g=x7?$r$H$k$b$N$H$H$i$J$$$b$N(B  分散表現多項式に関する函数, 演算は引数として変数順序型をとるものととらないもの
 $B$,$"$j(B, $B$H$i$J$$$b$N$K4X$7$F$O(B, $B$=$N;~E@$G@_Dj$5$l$F$$$kCM$rMQ$$$F7W;;$,(B  があり, とらないものに関しては, その時点で設定されている値を用いて計算が
 $B9T$o$l$k(B.  行われる.
   
 @item  @item
 @code{gr()} $B$J$I(B, $B0z?t$H$7$FJQ?t=g=x7?$r$H$k$b$N$O(B, $BFbIt$G(B @code{dp_ord()}  @code{gr()} など, 引数として変数順序型をとるものは, 内部で @code{dp_ord()}
 $B$r8F$S=P$7(B, $BJQ?t=g=x7?$r@_Dj$9$k(B. $B$3$N@_Dj$O(B, $B7W;;=*N;8e$b@8$-;D$k(B.  を呼び出し, 変数順序型を設定する. この設定は, 計算終了後も生き残る.
   
 @item  @item
 $BJ,;6I=8=B?9`<0$N;MB'1i;;$b(B, $B@_Dj$5$l$F$$$kCM$rMQ$$$F7W;;$5$l$k(B. $B=>$C$F(B,  分散表現多項式の四則演算も, 設定されている値を用いて計算される. 従って,
 $B$=$NB?9`<0$,@8@.$5$l$?;~E@$K$*$1$kJQ?t=g=x7?$,(B, $B;MB'1i;;;~$K@5$7$/@_Dj(B  その多項式が生成された時点における変数順序型が, 四則演算時に正しく設定
 $B$5$l$F$$$J$1$l$P$J$i$J$$(B. $B$^$?(B, $B1i;;BP>]$H$J$kB?9`<0$O(B, $BF10l$NJQ?t=g=x(B  されていなければならない. また, 演算対象となる多項式は, 同一の変数順序
 $B7?$K4p$E$$$F@8@.$5$l$?$b$N$G$J$1$l$P$J$i$J$$(B.  型に基づいて生成されたものでなければならない.
   
 @item  @item
 $B%H%C%W%l%Y%kH!?t0J30$NH!?t$rD>@\8F$S=P$9>l9g$K$O(B, $B$3$NH!?t$K$h$j(B  トップレベル函数以外の函数を直接呼び出す場合には, この函数により
 $BJQ?t=g=x7?$r@5$7$/@_Dj$7$J$1$l$P$J$i$J$$(B.  変数順序型を正しく設定しなければならない.
   
   @item
   引数がリストの場合, 自由加群における項順序型を設定する. 引数が@code{[0,Ord]} の場合,
   多項式環上で @code{Ord} で指定される項順序に基づく TOP 順序, 引数が @code{[1,Ord]} の場合
   OPT 順序を設定する.
   
 \E  \E
 \BEG  \BEG
 @item  @item
Line 2310  that such polynomials were generated under the same or
Line 2812  that such polynomials were generated under the same or
 @item  @item
 Type of term ordering must be correctly set by this function  Type of term ordering must be correctly set by this function
 when functions other than top level functions are called directly.  when functions other than top level functions are called directly.
   
   @item
   If the argument is a list, then an ordering type in a free module is set.
   If the argument is @code{[0,Ord]} then a TOP ordering based on the ordering type specified
   by @code{Ord} is set.
   If the argument is @code{[1,Ord]} then a POT ordering is set.
 \E  \E
 @end itemize  @end itemize
   
Line 2323  when functions other than top level functions are call
Line 2831  when functions other than top level functions are call
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 \JP @fref{$B9`=g=x$N@_Dj(B}  \JP @fref{項順序の設定}
 \EG @fref{Setting term orderings}  \EG @fref{Setting term orderings}
 @end table  @end table
   
 \JP @node dp_ptod,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_set_weight dp_set_top_weight dp_weyl_set_weight,,, グレブナ基底に関する函数
   \EG @node dp_set_weight dp_set_top_weight dp_weyl_set_weight,,, Functions for Groebner basis computation
   @subsection @code{dp_set_weight}, @code{dp_set_top_weight}, @code{dp_weyl_set_weight}
   @findex dp_set_weight
   @findex dp_set_top_weight
   @findex dp_weyl_set_weight
   
   @table @t
   @item dp_set_weight([@var{weight}])
   \JP :: sugar weight の設定, 参照
   \EG :: Set and show the sugar weight.
   @item dp_set_top_weight([@var{weight}])
   \JP :: top weight の設定, 参照
   \EG :: Set and show the top weight.
   @item dp_weyl_set_weight([@var{weight}])
   \JP :: weyl weight の設定, 参照
   \EG :: Set and show the weyl weight.
   @end table
   
   @table @var
   @item return
   \JP ベクトル
   \EG a vector
   @item weight
   \JP 整数のリストまたはベクトル
   \EG a list or vector of integers
   @end table
   
   @itemize @bullet
   \BJP
   @item
   @code{dp_set_weight} は sugar weight を @var{weight} に設定する. 引数がない時,
   現在設定されている sugar weight を返す. sugar weight は正整数を成分とするベクトルで,
   各変数の重みを表す. 次数つき順序において, 単項式の次数を計算する際に用いられる.
   斉次化変数用に, 末尾に 1 を付け加えておくと安全である.
   @item
   @code{dp_set_top_weight} は top weight を @var{weight} に設定する. 引数がない時,
   現在設定されている top weight を返す. top weight が設定されているとき,
   まず top weight による単項式比較を先に行う. tie breaker として現在設定されている
   項順序が用いられるが, この比較には top weight は用いられない.
   
   @item
   @code{dp_weyl_set_weight} は weyl weight を @var{weight} に設定する. 引数がない時,
   現在設定されている weyl weight を返す. weyl weight w を設定すると,
   項順序型 11 での計算において, (-w,w) を top weight, tie breaker を graded reverse lex
   とした項順序が設定される.
   \E
   \BEG
   @item
   @code{dp_set_weight} sets the sugar weight=@var{weight}. It returns the current sugar weight.
   A sugar weight is a vector with positive integer components and it represents the weights of variables.
   It is used for computing the weight of a monomial in a graded ordering.
   It is recommended to append a component 1 at the end of the weight vector for a homogenizing variable.
   @item
   @code{dp_set_top_weight} sets the top weight=@var{weight}. It returns the current top weight.
   It a top weight is set, the weights of monomials under the top weight are firstly compared.
   If the the weights are equal then the current term ordering is applied as a tie breaker, but
   the top weight is not used in the tie breaker.
   
   @item
   @code{dp_weyl_set_weight} sets the weyl weigh=@var{weight}. It returns the current weyl weight.
   If a weyl weight w is set, in the comparsion by the term order type 11, a term order with
   the top weight=(-w,w) and the tie breaker=graded reverse lex is applied.
   \E
   @end itemize
   
   @table @t
   \JP @item 参照
   \EG @item References
   @fref{Weight}
   @end table
   
   
   \JP @node dp_ptod,,, グレブナ基底に関する函数
 \EG @node dp_ptod,,, Functions for Groebner basis computation  \EG @node dp_ptod,,, Functions for Groebner basis computation
 @subsection @code{dp_ptod}  @subsection @code{dp_ptod}
 @findex dp_ptod  @findex dp_ptod
   
 @table @t  @table @t
 @item dp_ptod(@var{poly},@var{vlist})  @item dp_ptod(@var{poly},@var{vlist})
 \JP :: $BB?9`<0$rJ,;6I=8=B?9`<0$KJQ49$9$k(B.  \JP :: 多項式を分散表現多項式に変換する.
 \EG :: Converts an ordinary polynomial into a distributed polynomial.  \EG :: Converts an ordinary polynomial into a distributed polynomial.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @item poly  @item poly
 \JP $BB?9`<0(B  \JP 多項式
 \EG polynomial  \EG polynomial
 @item vlist  @item vlist
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 $BJQ?t=g=x(B @var{vlist} $B$*$h$S8=:_$NJQ?t=g=x7?$K=>$C$FJ,;6I=8=B?9`<0$KJQ49$9$k(B.  変数順序 @var{vlist} および現在の変数順序型に従って分散表現多項式に変換する.
 @item  @item
 @var{vlist} $B$K4^$^$l$J$$ITDj85$O(B, $B78?tBN$KB0$9$k$H$7$FJQ49$5$l$k(B.  @var{vlist} に含まれない不定元は, 係数体に属するとして変換される.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 2382  the coefficient field.
Line 2963  the coefficient field.
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{dp_dtop},  @fref{dp_dtop},
 @fref{dp_ord}.  @fref{dp_ord}.
 @end table  @end table
   
 \JP @node dp_dtop,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dpm_dptodpm,,, グレブナ基底に関する函数
   \EG @node dpm_dptodpm,,, Functions for Groebner basis computation
   @subsection @code{dpm_dptodpm}
   @findex dpm_dptodpm
   
   @table @t
   @item dpm_dptodpm(@var{dpoly},@var{pos})
   \JP :: 分散表現多項式を加群多項式に変換する.
   \EG :: Converts a distributed polynomial into a module polynomial.
   @end table
   
   @table @var
   @item return
   \JP 加群多項式
   \EG module polynomial
   @item dpoly
   \JP 分散表現多項式
   \EG distributed polynomial
   @item pos
   \JP 正整数
   \EG positive integer
   @end table
   
   @itemize @bullet
   \BJP
   @item
   分散表現多項式を加群多項式に変換する.
   @item
   出力は加群多項式 @code{dpoly e_pos} である.
   \E
   \BEG
   @item
   This function converts a distributed polynomial into a module polynomial.
   @item
   The output is @code{dpoly e_pos}.
   \E
   @end itemize
   
   @example
   [50] dp_ord([0,0])$
   [51] D=dp_ptod((x+y+z)^2,[x,y,z]);
   (1)*<<2,0,0>>+(2)*<<1,1,0>>+(1)*<<0,2,0>>+(2)*<<1,0,1>>+(2)*<<0,1,1>>
   +(1)*<<0,0,2>>
   [52] dp_dptodpm(D,2);
   (1)*<<2,0,0:2>>+(2)*<<1,1,0:2>>+(1)*<<0,2,0:2>>+(2)*<<1,0,1:2>>
   +(2)*<<0,1,1:2>>+(1)*<<0,0,2:2>>
   @end example
   
   @table @t
   \JP @item 参照
   \EG @item References
   @fref{dp_ptod},
   @fref{dp_ord}.
   @end table
   
   \JP @node dpm_ltod,,, グレブナ基底に関する函数
   \EG @node dpm_ltod,,, Functions for Groebner basis computation
   @subsection @code{dpm_ltod}
   @findex dpm_ltod
   
   @table @t
   @item dpm_dptodpm(@var{plist},@var{vlist})
   \JP :: 多項式リストを加群多項式に変換する.
   \EG :: Converts a list of polynomials into a module polynomial.
   @end table
   
   @table @var
   @item return
   \JP 加群多項式
   \EG module polynomial
   @item plist
   \JP 多項式リスト
   \EG list of polynomials
   @item vlist
   \JP 変数リスト
   \EG list of variables
   @end table
   
   @itemize @bullet
   \BJP
   @item
   多項式リストを加群多項式に変換する.
   @item
   @code{[p1,...,pm]} は @code{p1 e1+...+pm em} に変換される.
   \E
   \BEG
   @item
   This function converts a list of polynomials into a module polynomial.
   @item
   @code{[p1,...,pm]} is converted into @code{p1 e1+...+pm em}.
   \E
   @end itemize
   
   @example
   [2126] dp_ord([0,0])$
   [2127] dpm_ltod([x^2+y^2,x,y-z],[x,y,z]);
   (1)*<<2,0,0:1>>+(1)*<<0,2,0:1>>+(1)*<<1,0,0:2>>+(1)*<<0,1,0:3>>
   +(-1)*<<0,0,1:3>>
   @end example
   
   @table @t
   \JP @item 参照
   \EG @item References
   @fref{dpm_dtol},
   @fref{dp_ord}.
   @end table
   
   \JP @node dpm_dtol,,, グレブナ基底に関する函数
   \EG @node dpm_dtol,,, Functions for Groebner basis computation
   @subsection @code{dpm_dtol}
   @findex dpm_dtol
   
   @table @t
   @item dpm_dptodpm(@var{poly},@var{vlist})
   \JP :: 加群多項式を多項式リストに変換する.
   \EG :: Converts a module polynomial into a list of polynomials.
   @end table
   
   @table @var
   @item return
   \JP 多項式リスト
   \EG list of polynomials
   @item poly
   \JP 加群多項式
   \EG module polynomial
   @item vlist
   \JP 変数リスト
   \EG list of variables
   @end table
   
   @itemize @bullet
   \BJP
   @item
   加群多項式を多項式リストに変換する.
   @item
   @code{p1 e1+...+pm em} は @code{[p1,...,pm]} に変換される.
   @item
   出力リストの長さは, @code{poly} に含まれる標準基底の最大インデックスとなる.
   \E
   \BEG
   @item
   This function converts a module polynomial into a list of polynomials.
   @item
   @code{p1 e1+...+pm em} is converted into @code{[p1,...,pm]}.
   @item
   The length of the output list is equal to the largest index among those of the standard bases
   containd in @code{poly}.
   \E
   @end itemize
   
   @example
   [2126] dp_ord([0,0])$
   [2127] D=(1)*<<2,0,0:1>>+(1)*<<0,2,0:1>>+(1)*<<1,0,0:2>>+(1)*<<0,1,0:3>>
   +(-1)*<<0,0,1:3>>$
   [2128] dpm_dtol(D,[x,y,z]);
   [x^2+y^2,x,y-z]
   @end example
   
   @table @t
   \JP @item 参照
   \EG @item References
   @fref{dpm_ltod},
   @fref{dp_ord}.
   @end table
   
   \JP @node dp_dtop,,, グレブナ基底に関する函数
 \EG @node dp_dtop,,, Functions for Groebner basis computation  \EG @node dp_dtop,,, Functions for Groebner basis computation
 @subsection @code{dp_dtop}  @subsection @code{dp_dtop}
 @findex dp_dtop  @findex dp_dtop
   
 @table @t  @table @t
 @item dp_dtop(@var{dpoly},@var{vlist})  @item dp_dtop(@var{dpoly},@var{vlist})
 \JP :: $BJ,;6I=8=B?9`<0$rB?9`<0$KJQ49$9$k(B.  \JP :: 分散表現多項式を多項式に変換する.
 \EG :: Converts a distributed polynomial into an ordinary polynomial.  \EG :: Converts a distributed polynomial into an ordinary polynomial.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $BB?9`<0(B  \JP 多項式
 \EG polynomial  \EG polynomial
 @item dpoly  @item dpoly
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @item vlist  @item vlist
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 $BJ,;6I=8=B?9`<0$r(B, $BM?$($i$l$?ITDj85%j%9%H$rMQ$$$FB?9`<0$KJQ49$9$k(B.  分散表現多項式を, 与えられた不定元リストを用いて多項式に変換する.
 @item  @item
 $BITDj85%j%9%H$O(B, $BD9$5J,;6I=8=B?9`<0$NJQ?t$N8D?t$H0lCW$7$F$$$l$P2?$G$b$h$$(B.  不定元リストは, 長さ分散表現多項式の変数の個数と一致していれば何でもよい.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 2436  variables of @var{dpoly}.
Line 3182  variables of @var{dpoly}.
 z^2+(2*a+2*b)*z+a^2+2*b*a+b^2  z^2+(2*a+2*b)*z+a^2+2*b*a+b^2
 @end example  @end example
   
 \JP @node dp_mod dp_rat,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_mod dp_rat,,, グレブナ基底に関する函数
 \EG @node dp_mod dp_rat,,, Functions for Groebner basis computation  \EG @node dp_mod dp_rat,,, Functions for Groebner basis computation
 @subsection @code{dp_mod}, @code{dp_rat}  @subsection @code{dp_mod}, @code{dp_rat}
 @findex dp_mod  @findex dp_mod
Line 2444  z^2+(2*a+2*b)*z+a^2+2*b*a+b^2
Line 3190  z^2+(2*a+2*b)*z+a^2+2*b*a+b^2
   
 @table @t  @table @t
 @item dp_mod(@var{p},@var{mod},@var{subst})  @item dp_mod(@var{p},@var{mod},@var{subst})
 \JP :: $BM-M}?t78?tJ,;6I=8=B?9`<0$NM-8BBN78?t$X$NJQ49(B  \JP :: 有理数係数分散表現多項式の有限体係数への変換
 \EG :: Converts a disributed polynomial into one with coefficients in a finite field.  \EG :: Converts a disributed polynomial into one with coefficients in a finite field.
 @item dp_rat(@var{p})  @item dp_rat(@var{p})
 \JP :: $BM-8BBN78?tJ,;6I=8=B?9`<0$NM-M}?t78?t$X$NJQ49(B  \JP :: 有限体係数分散表現多項式の有理数係数への変換
 \BEG  \BEG
 :: Converts a distributed polynomial with coefficients in a finite field into  :: Converts a distributed polynomial with coefficients in a finite field into
 one with coefficients in the rationals.  one with coefficients in the rationals.
Line 2456  one with coefficients in the rationals.
Line 3202  one with coefficients in the rationals.
   
 @table @var  @table @var
 @item return  @item return
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @item p  @item p
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @item mod  @item mod
 \JP $BAG?t(B  \JP 素数
 \EG prime  \EG prime
 @item subst  @item subst
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 @code{dp_nf_mod()}, @code{dp_true_nf_mod()} $B$O(B, $BF~NO$H$7$FM-8BBN78?t$N(B  @code{dp_nf_mod()}, @code{dp_true_nf_mod()} は, 入力として有限体係数の
 $BJ,;6I=8=B?9`<0$rI,MW$H$9$k(B. $B$3$N$h$&$J>l9g(B, @code{dp_mod()} $B$K$h$j(B  分散表現多項式を必要とする. このような場合, @code{dp_mod()} により
 $BM-M}?t78?tJ,;6I=8=B?9`<0$rJQ49$7$FMQ$$$k$3$H$,$G$-$k(B. $B$^$?(B, $BF@$i$l$?(B  有理数係数分散表現多項式を変換して用いることができる. また, 得られた
 $B7k2L$O(B, $BM-8BBN78?tB?9`<0$H$O1i;;$G$-$k$,(B, $BM-M}?t78?tB?9`<0$H$O1i;;$G$-$J$$(B  結果は, 有限体係数多項式とは演算できるが, 有理数係数多項式とは演算できない
 $B$?$a(B, @code{dp_rat()} $B$K$h$jJQ49$9$kI,MW$,$"$k(B.  ため, @code{dp_rat()} により変換する必要がある.
 @item  @item
 $BM-8BBN78?t$N1i;;$K$*$$$F$O(B, $B$"$i$+$8$a(B @code{setmod()} $B$K$h$jM-8BBN$N85$N(B  有限体係数の演算においては, あらかじめ @code{setmod()} により有限体の元の
 $B8D?t$r;XDj$7$F$*$/I,MW$,$"$k(B.  個数を指定しておく必要がある.
 @item  @item
 @var{subst} $B$O(B, $B78?t$,M-M}<0$N>l9g(B, $B$=$NM-M}<0$NJQ?t$K$"$i$+$8$a?t$rBeF~(B  @var{subst} は, 係数が有理式の場合, その有理式の変数にあらかじめ数を代入
 $B$7$?8eM-8BBN78?t$KJQ49$9$k$H$$$&A`:n$r9T$&:]$N(B, $BBeF~CM$r;XDj$9$k$b$N$G(B,  した後有限体係数に変換するという操作を行う際の, 代入値を指定するもので,
 @code{[[@var{var},@var{value}],...]} $B$N7A$N%j%9%H$G$"$k(B.  @code{[[@var{var},@var{value}],...]} の形のリストである.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 2509  converting the coefficients into elements of a finite 
Line 3255  converting the coefficients into elements of a finite 
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod},  @fref{dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod dp_weyl_nf dp_weyl_nf_mod},
 @fref{subst psubst},  @fref{subst psubst},
 @fref{setmod}.  @fref{setmod}.
 @end table  @end table
   
 \JP @node dp_homo dp_dehomo,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_homo dp_dehomo,,, グレブナ基底に関する函数
 \EG @node dp_homo dp_dehomo,,, Functions for Groebner basis computation  \EG @node dp_homo dp_dehomo,,, Functions for Groebner basis computation
 @subsection @code{dp_homo}, @code{dp_dehomo}  @subsection @code{dp_homo}, @code{dp_dehomo}
 @findex dp_homo  @findex dp_homo
Line 2524  converting the coefficients into elements of a finite 
Line 3270  converting the coefficients into elements of a finite 
   
 @table @t  @table @t
 @item dp_homo(@var{dpoly})  @item dp_homo(@var{dpoly})
 \JP :: $BJ,;6I=8=B?9`<0$N@F<!2=(B  \JP :: 分散表現多項式の斉次化
 \EG :: Homogenize a distributed polynomial  \EG :: Homogenize a distributed polynomial
 @item dp_dehomo(@var{dpoly})  @item dp_dehomo(@var{dpoly})
 \JP :: $B@F<!J,;6I=8=B?9`<0$NHs@F<!2=(B  \JP :: 斉次分散表現多項式の非斉次化
 \EG :: Dehomogenize a homogenious distributed polynomial  \EG :: Dehomogenize a homogenious distributed polynomial
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @item dpoly  @item dpoly
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 @code{dp_homo()} $B$O(B, @var{dpoly} $B$N(B $B3F9`(B @var{t} $B$K$D$$$F(B, $B;X?t%Y%/%H%k$ND9$5$r(B  @code{dp_homo()} は, @var{dpoly} の 各項 @var{t} について, 指数ベクトルの長さを
 1 $B?-$P$7(B, $B:G8e$N@.J,$NCM$r(B @var{d}-@code{deg(@var{t})}  1 伸ばし, 最後の成分の値を @var{d}-@code{deg(@var{t})}
 (@var{d} $B$O(B @var{dpoly} $B$NA4<!?t(B) $B$H$7$?J,;6I=8=B?9`<0$rJV$9(B.  (@var{d} は @var{dpoly} の全次数) とした分散表現多項式を返す.
 @item  @item
 @code{dp_dehomo()} $B$O(B, @var{dpoly} $B$N3F9`$K$D$$$F(B, $B;X?t%Y%/%H%k$N:G8e$N@.J,(B  @code{dp_dehomo()} は, @var{dpoly} の各項について, 指数ベクトルの最後の成分
 $B$r<h$j=|$$$?J,;6B?9`<0$rJV$9(B.  を取り除いた分散多項式を返す.
 @item  @item
 $B$$$:$l$b(B, $B@8@.$5$l$?B?9`<0$rMQ$$$?1i;;$r9T$&>l9g(B, $B$=$l$i$KE,9g$9$k9`=g=x$r(B  いずれも, 生成された多項式を用いた演算を行う場合, それらに適合する項順序を
 $B@5$7$/@_Dj$9$kI,MW$,$"$k(B.  正しく設定する必要がある.
 @item  @item
 @code{hgr()} $B$J$I$K$*$$$F(B, $BFbItE*$KMQ$$$i$l$F$$$k(B.  @code{hgr()} などにおいて, 内部的に用いられている.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 2583  These are used internally in @code{hgr()} etc.
Line 3329  These are used internally in @code{hgr()} etc.
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{gr hgr gr_mod}.  @fref{gr hgr gr_mod}.
 @end table  @end table
   
 \JP @node dp_ptozp dp_prim,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_ptozp dp_prim,,, グレブナ基底に関する函数
 \EG @node dp_ptozp dp_prim,,, Functions for Groebner basis computation  \EG @node dp_ptozp dp_prim,,, Functions for Groebner basis computation
 @subsection @code{dp_ptozp}, @code{dp_prim}  @subsection @code{dp_ptozp}, @code{dp_prim}
 @findex dp_ptozp  @findex dp_ptozp
Line 2596  These are used internally in @code{hgr()} etc.
Line 3342  These are used internally in @code{hgr()} etc.
   
 @table @t  @table @t
 @item dp_ptozp(@var{dpoly})  @item dp_ptozp(@var{dpoly})
 \JP :: $BDj?tG\$7$F78?t$r@0?t78?t$+$D78?t$N@0?t(B GCD $B$r(B 1 $B$K$9$k(B.  \JP :: 定数倍して係数を整数係数かつ係数の整数 GCD を 1 にする.
 \BEG  \BEG
 :: Converts a distributed polynomial @var{poly} with rational coefficients  :: Converts a distributed polynomial @var{poly} with rational coefficients
 into an integral distributed polynomial such that GCD of all its coefficients  into an integral distributed polynomial such that GCD of all its coefficients
 is 1.  is 1.
 \E  \E
 @itemx dp_prim(@var{dpoly})  @item dp_prim(@var{dpoly})
 \JP :: $BM-M}<0G\$7$F78?t$r@0?t78?tB?9`<078?t$+$D78?t$NB?9`<0(B GCD $B$r(B 1 $B$K$9$k(B.  \JP :: 有理式倍して係数を整数係数多項式係数かつ係数の多項式 GCD を 1 にする.
 \BEG  \BEG
 :: Converts a distributed polynomial @var{poly} with rational function  :: Converts a distributed polynomial @var{poly} with rational function
 coefficients into an integral distributed polynomial such that polynomial  coefficients into an integral distributed polynomial such that polynomial
Line 2613  GCD of all its coefficients is 1.
Line 3359  GCD of all its coefficients is 1.
   
 @table @var  @table @var
 @item return  @item return
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @item dpoly  @item dpoly
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 @code{dp_ptozp()} $B$O(B,  @code{ptozp()} $B$KAjEv$9$kA`:n$rJ,;6I=8=B?9`<0$K(B  @code{dp_ptozp()} は,  @code{ptozp()} に相当する操作を分散表現多項式に
 $BBP$7$F9T$&(B. $B78?t$,B?9`<0$r4^$`>l9g(B, $B78?t$K4^$^$l$kB?9`<06&DL0x;R$O(B  対して行う. 係数が多項式を含む場合, 係数に含まれる多項式共通因子は
 $B<h$j=|$+$J$$(B.  取り除かない.
 @item  @item
 @code{dp_prim()} $B$O(B, $B78?t$,B?9`<0$r4^$`>l9g(B, $B78?t$K4^$^$l$kB?9`<06&DL0x;R(B  @code{dp_prim()} は, 係数が多項式を含む場合, 係数に含まれる多項式共通因子
 $B$r<h$j=|$/(B.  を取り除く.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 2650  polynomial contents included in the coefficients are n
Line 3396  polynomial contents included in the coefficients are n
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{ptozp}.  @fref{ptozp}.
 @end table  @end table
   
 \JP @node dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod dp_weyl_nf dp_weyl_nf_mod,,, グレブナ基底に関する函数
 \EG @node dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod,,, Functions for Groebner basis computation  \EG @node dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod dp_weyl_nf dp_weyl_nf_mod,,, Functions for Groebner basis computation
 @subsection @code{dp_nf}, @code{dp_nf_mod}, @code{dp_true_nf}, @code{dp_true_nf_mod}  @subsection @code{dp_nf}, @code{dp_nf_mod}, @code{dp_true_nf}, @code{dp_true_nf_mod}
 @findex dp_nf  @findex dp_nf
 @findex  dp_true_nf  @findex  dp_true_nf
 @findex dp_nf_mod  @findex dp_nf_mod
 @findex  dp_true_nf_mod  @findex  dp_true_nf_mod
   @findex dp_weyl_nf
   @findex dp_weyl_nf_mod
   
 @table @t  @table @t
 @item dp_nf(@var{indexlist},@var{dpoly},@var{dpolyarray},@var{fullreduce})  @item dp_nf(@var{indexlist},@var{dpoly},@var{dpolyarray},@var{fullreduce})
   @item dp_weyl_nf(@var{indexlist},@var{dpoly},@var{dpolyarray},@var{fullreduce})
 @item dp_nf_mod(@var{indexlist},@var{dpoly},@var{dpolyarray},@var{fullreduce},@var{mod})  @item dp_nf_mod(@var{indexlist},@var{dpoly},@var{dpolyarray},@var{fullreduce},@var{mod})
 \JP :: $BJ,;6I=8=B?9`<0$N@55,7A$r5a$a$k(B. ($B7k2L$ODj?tG\$5$l$F$$$k2DG=@-$"$j(B)  @item dp_weyl_nf_mod(@var{indexlist},@var{dpoly},@var{dpolyarray},@var{fullreduce},@var{mod})
   \JP :: 分散表現多項式の正規形を求める. (結果は定数倍されている可能性あり)
   
 \BEG  \BEG
 :: Computes the normal form of a distributed polynomial.  :: Computes the normal form of a distributed polynomial.
Line 2674  polynomial contents included in the coefficients are n
Line 3424  polynomial contents included in the coefficients are n
 \E  \E
 @item dp_true_nf(@var{indexlist},@var{dpoly},@var{dpolyarray},@var{fullreduce})  @item dp_true_nf(@var{indexlist},@var{dpoly},@var{dpolyarray},@var{fullreduce})
 @item dp_true_nf_mod(@var{indexlist},@var{dpoly},@var{dpolyarray},@var{fullreduce},@var{mod})  @item dp_true_nf_mod(@var{indexlist},@var{dpoly},@var{dpolyarray},@var{fullreduce},@var{mod})
 \JP :: $BJ,;6I=8=B?9`<0$N@55,7A$r5a$a$k(B. ($B??$N7k2L$r(B @code{[$BJ,;R(B, $BJ,Jl(B]} $B$N7A$GJV$9(B)  \JP :: 分散表現多項式の正規形を求める. (真の結果を @code{[分子, 分母]} の形で返す)
 \BEG  \BEG
 :: Computes the normal form of a distributed polynomial. (The true result  :: Computes the normal form of a distributed polynomial. (The true result
 is returned in such a list as @code{[numerator, denominator]})  is returned in such a list as @code{[numerator, denominator]})
Line 2683  is returned in such a list as @code{[numerator, denomi
Line 3433  is returned in such a list as @code{[numerator, denomi
   
 @table @var  @table @var
 @item return  @item return
 \JP @code{dp_nf()} : $BJ,;6I=8=B?9`<0(B, @code{dp_true_nf()} : $B%j%9%H(B  \JP @code{dp_nf()} : 分散表現多項式, @code{dp_true_nf()} : リスト
 \EG @code{dp_nf()} : distributed polynomial, @code{dp_true_nf()} : list  \EG @code{dp_nf()} : distributed polynomial, @code{dp_true_nf()} : list
 @item indexlist  @item indexlist
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item dpoly  @item dpoly
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @item dpolyarray  @item dpolyarray
 \JP $BG[Ns(B  \JP 配列
 \EG array of distributed polynomial  \EG array of distributed polynomial
 @item fullreduce  @item fullreduce
 \JP $B%U%i%0(B  \JP フラグ
 \EG flag  \EG flag
 @item mod  @item mod
 \JP $BAG?t(B  \JP 素数
 \EG prime  \EG prime
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 $BJ,;6I=8=B?9`<0(B @var{dpoly} $B$N@55,7A$r5a$a$k(B.  分散表現多項式 @var{dpoly} の正規形を求める.
 @item  @item
 @code{dp_nf_mod()}, @code{dp_true_nf_mod()} $B$NF~NO$O(B, @code{dp_mod()} $B$J$I(B  名前に weyl を含む関数はワイル代数における正規形計算を行う. 以下の説明は weyl を含むものに対しても同様に成立する.
 $B$K$h$j(B, $BM-8BBN>e$NJ,;6I=8=B?9`<0$K$J$C$F$$$J$1$l$P$J$i$J$$(B.  
 @item  @item
 $B7k2L$KM-M}?t(B, $BM-M}<0$,4^$^$l$k$N$rHr$1$k$?$a(B, @code{dp_nf()} $B$O(B  @code{dp_nf_mod()}, @code{dp_true_nf_mod()} の入力は, @code{dp_mod()} など
 $B??$NCM$NDj?tG\$NCM$rJV$9(B. $BM-M}<078?t$N>l9g$N(B @code{dp_nf_mod()} $B$bF1MM(B  により, 有限体上の分散表現多項式になっていなければならない.
 $B$G$"$k$,(B, $B78?tBN$,M-8BBN$N>l9g(B @code{dp_nf_mod()} $B$O??$NCM$rJV$9(B.  
 @item  @item
 @code{dp_true_nf()}, @code{dp_true_nf_mod()} $B$O(B,  結果に有理数, 有理式が含まれるのを避けるため, @code{dp_nf()} は
 @code{[@var{nm},@var{dn}]} $B$J$k7A$N%j%9%H$rJV$9(B.  真の値の定数倍の値を返す. 有理式係数の場合の @code{dp_nf_mod()} も同様
 $B$?$@$7(B, @var{nm} $B$O78?t$KJ,?t(B, $BM-M}<0$r4^$^$J$$J,;6I=8=B?9`<0(B, @var{dn} $B$O(B  であるが, 係数体が有限体の場合 @code{dp_nf_mod()} は真の値を返す.
 $B?t$^$?$OB?9`<0$G(B @var{nm}/@var{dn} $B$,??$NCM$H$J$k(B.  
 @item  @item
 @var{dpolyarray} $B$OJ,;6I=8=B?9`<0$rMWAG$H$9$k%Y%/%H%k(B,  @code{dp_true_nf()}, @code{dp_true_nf_mod()} は,
 @var{indexlist} $B$O@55,2=7W;;$KMQ$$$k(B @var{dpolyarray} $B$NMWAG$N%$%s%G%C%/%9(B  @code{[@var{nm},@var{dn}]} なる形のリストを返す.
 $B$N%j%9%H(B.  ただし, @var{nm} は係数に分数, 有理式を含まない分散表現多項式, @var{dn} は
   数または多項式で @var{nm}/@var{dn} が真の値となる.
 @item  @item
 @var{fullreduce} $B$,(B 0 $B$G$J$$$H$-A4$F$N9`$KBP$7$F4JLs$r9T$&(B. @var{fullreduce}  @var{dpolyarray} は分散表現多項式を要素とするベクトル,
 $B$,(B 0 $B$N$H$-F,9`$N$_$KBP$7$F4JLs$r9T$&(B.  @var{indexlist} は正規化計算に用いる @var{dpolyarray} の要素のインデックス
   のリスト.
 @item  @item
 @var{indexlist} $B$G;XDj$5$l$?B?9`<0$O(B, $BA0$NJ}$N$b$N$,M%@hE*$K;H$o$l$k(B.  @var{fullreduce} が 0 でないとき全ての項に対して簡約を行う. @var{fullreduce}
   が 0 のとき頭項のみに対して簡約を行う.
 @item  @item
 $B0lHL$K$O(B @var{indexlist} $B$NM?$(J}$K$h$jH!?t$NCM$O0[$J$k2DG=@-$,$"$k$,(B,  @var{indexlist} で指定された多項式は, 前の方のものが優先的に使われる.
 $B%0%l%V%J4pDl$KBP$7$F$O0l0UE*$KDj$^$k(B.  
 @item  @item
 $BJ,;6I=8=$G$J$$8GDj$5$l$?B?9`<0=89g$K$h$k@55,7A$rB??t5a$a$kI,MW$,$"$k>l9g(B  一般には @var{indexlist} の与え方により函数の値は異なる可能性があるが,
 $B$KJXMx$G$"$k(B. $BC10l$N1i;;$K4X$7$F$O(B, @code{p_nf}, @code{p_true_nf} $B$r(B  グレブナ基底に対しては一意的に定まる.
 $BMQ$$$k$H$h$$(B.  @item
   分散表現でない固定された多項式集合による正規形を多数求める必要がある場合
   に便利である. 単一の演算に関しては, @code{p_nf}, @code{p_true_nf} を
   用いるとよい.
 \E  \E
 \BEG  \BEG
 @item  @item
 Computes the normal form of a distributed polynomial.  Computes the normal form of a distributed polynomial.
 @item  @item
   Functions whose name contain @code{weyl} compute normal forms in Weyl algebra. The description below also applies to
   the functions for Weyl algebra.
   @item
 @code{dp_nf_mod()} and @code{dp_true_nf_mod()} require  @code{dp_nf_mod()} and @code{dp_true_nf_mod()} require
 distributed polynomials with coefficients in a finite field as arguments.  distributed polynomials with coefficients in a finite field as arguments.
 @item  @item
Line 2801  u4^2+(6*u3+2*u2+6*u1-2)*u4+9*u3^2+(6*u2+18*u1-6)*u3+u2
Line 3556  u4^2+(6*u3+2*u2+6*u1-2)*u4+9*u3^2+(6*u2+18*u1-6)*u3+u2
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{dp_dtop},  @fref{dp_dtop},
 @fref{dp_ord},  @fref{dp_ord},
Line 2809  u4^2+(6*u3+2*u2+6*u1-2)*u4+9*u3^2+(6*u2+18*u1-6)*u3+u2
Line 3564  u4^2+(6*u3+2*u2+6*u1-2)*u4+9*u3^2+(6*u2+18*u1-6)*u3+u2
 @fref{p_nf p_nf_mod p_true_nf p_true_nf_mod}.  @fref{p_nf p_nf_mod p_true_nf p_true_nf_mod}.
 @end table  @end table
   
 \JP @node dp_hm dp_ht dp_hc dp_rest,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dpm_nf dpm_nf_and_quotient,,, グレブナ基底に関する函数
   \EG @node dpm_nf dpm_nf_and_quotient,,, Functions for Groebner basis computation
   @subsection @code{dpm_nf}, @code{dpm_nf_and_quotient}
   @findex dpm_nf
   @findex dpm_nf_and_quotient
   
   @table @t
   @item dpm_nf([@var{indexlist},]@var{dpoly},@var{dpolyarray},@var{fullreduce})
   \JP :: 加群多項式の正規形を求める. (結果は定数倍されている可能性あり)
   
   \BEG
   :: Computes the normal form of a module polynomial.
   (The result may be multiplied by a constant in the ground field.)
   \E
   @item dpm_nf_and_quotient([@var{indexlist},]@var{dpoly},@var{dpolyarray})
   \JP :: 加群多項式の正規形と商を求める.
   \BEG
   :: Computes the normal form of a module polynomial and the quotient.
   \E
   @end table
   
   @table @var
   @item return
   \JP @code{dpm_nf()} : 加群多項式, @code{dpm_nf_and_quotient()} : リスト
   \EG @code{dpm_nf()} : module polynomial, @code{dpm_nf_and_quotient()} : list
   @item indexlist
   \JP リスト
   \EG list
   @item dpoly
   \JP 加群多項式
   \EG module polynomial
   @item dpolyarray
   \JP 配列
   \EG array of module polynomial
   @end table
   
   @itemize @bullet
   \BJP
   @item
   加群多項式 @var{dpoly} の正規形を求める.
   @item
   結果に有理数, 有理式が含まれるのを避けるため, @code{dpm_nf()} は
   真の値の定数倍の値を返す.
   @item
   @var{dpolyarray} は加群多項式を要素とするベクトル,
   @var{indexlist} は正規化計算に用いる @var{dpolyarray} の要素のインデックス
   @item
   @var{indexlist} が与えられている場合, @var{dpolyarray} の中で, @var{indexlist} で指定されたもののみが, 前の方から優先的に使われる.
   @var{indexlist} が与えられていない場合には, @var{dpolyarray} の中の全ての多項式が前の方から優先的に使われる.
   @item
   @code{dpm_nf_and_quotient()} は,
   @code{[@var{nm},@var{dn},@var{quo}]} なる形のリストを返す.
   ただし, @var{nm} は係数に分数を含まない加群多項式, @var{dn} は
   数または多項式で @var{nm}/@var{dn} が真の値となる.
   @var{quo} は除算の商を表す配列で, @var{dn}@var{dpoly}=@var{nm}+@var{quo[0]dpolyarray[0]+...} が成り立つ.
   のリスト.
   @item
   @var{fullreduce} が 0 でないとき全ての項に対して簡約を行う. @var{fullreduce}
   が 0 のとき頭項のみに対して簡約を行う.
   \E
   \BEG
   @item
   Computes the normal form of a module polynomial.
   @item
   The result of @code{dpm_nf()} may be multiplied by a constant in the
   ground field in order to make the result integral.
   @item
   @var{dpolyarray} is a vector whose components are module polynomials
   and @var{indexlist} is a list of indices which is used for the normal form
   computation.
   @item
   If @var{indexlist} is given, only the polynomials in @var{dpolyarray} specified in @var{indexlist}
   is used in the division. An index placed at the preceding position has priority to be selected.
   If @var{indexlist} is not given, all the polynomials in @var{dpolyarray} are used.
   @item
   @code{dpm_nf_and_quotient()} returns
   such a list as @code{[@var{nm},@var{dn},@var{quo}]}.
   Here @var{nm} is a module polynomial whose coefficients are integral
   in the ground field, @var{dn} is an integral element in the ground
   field and @var{nm}/@var{dn} is the true normal form.
   @var{quo} is an array containing the quotients of the division satisfying
   @var{dn}@var{dpoly}=@var{nm}+@var{quo[0]dpolyarray[0]+...}.
   @item
   When argument @var{fullreduce} has non-zero value,
   all terms are reduced. When it has value 0,
   only the head term is reduced.
   \E
   @end itemize
   
   @example
   [2126] dp_ord([1,0])$
   [2127] S=ltov([(1)*<<0,0,2,0:1>>+(1)*<<0,0,1,1:1>>+(1)*<<0,0,0,2:1>>
   +(-1)*<<3,0,0,0:2>>+(-1)*<<0,0,2,1:2>>+(-1)*<<0,0,1,2:2>>
   +(1)*<<3,0,1,0:3>>+(1)*<<3,0,0,1:3>>+(1)*<<0,0,2,2:3>>,
   (-1)*<<0,1,0,0:1>>+(-1)*<<0,0,1,0:1>>+(-1)*<<0,0,0,1:1>>
   +(-1)*<<3,0,0,0:3>>+(1)*<<0,1,1,1:3>>,(1)*<<0,1,0,0:2>>
   +(1)*<<0,0,1,0:2>>+(1)*<<0,0,0,1:2>>+(-1)*<<0,1,1,0:3>>
   +(-1)*<<0,1,0,1:3>>+(-1)*<<0,0,1,1:3>>])$
   [2128] U=dpm_sp(S[0],S[1]);
   (1)*<<0,0,3,0:1>>+(-1)*<<0,1,1,1:1>>+(1)*<<0,0,2,1:1>>
   +(-1)*<<0,1,0,2:1>>+(1)*<<3,1,0,0:2>>+(1)*<<0,1,2,1:2>>
   +(1)*<<0,1,1,2:2>>+(-1)*<<3,1,1,0:3>>+(1)*<<3,0,2,0:3>>
   +(-1)*<<3,1,0,1:3>>+(-1)*<<0,1,3,1:3>>+(-1)*<<0,1,2,2:3>>
   [2129] dpm_nf(U,S,1);
   0
   [2130] L=dpm_nf_and_quotient(U,S)$
   [2131] Q=L[2]$
   [2132] D=L[1]$
   [2133] D*U-(Q[1]*S[1]+Q[2]*S[2]);
   0
   @end example
   
   @table @t
   \JP @item 参照
   \EG @item References
   @fref{dpm_sp},
   @fref{dp_ord}.
   @end table
   
   
   \JP @node dp_hm dp_ht dp_hc dp_rest,,, グレブナ基底に関する函数
 \EG @node dp_hm dp_ht dp_hc dp_rest,,, Functions for Groebner basis computation  \EG @node dp_hm dp_ht dp_hc dp_rest,,, Functions for Groebner basis computation
 @subsection @code{dp_hm}, @code{dp_ht}, @code{dp_hc}, @code{dp_rest}  @subsection @code{dp_hm}, @code{dp_ht}, @code{dp_hc}, @code{dp_rest}
 @findex dp_hm  @findex dp_hm
Line 2819  u4^2+(6*u3+2*u2+6*u1-2)*u4+9*u3^2+(6*u2+18*u1-6)*u3+u2
Line 3694  u4^2+(6*u3+2*u2+6*u1-2)*u4+9*u3^2+(6*u2+18*u1-6)*u3+u2
   
 @table @t  @table @t
 @item dp_hm(@var{dpoly})  @item dp_hm(@var{dpoly})
 \JP :: $BF,C19`<0$r<h$j=P$9(B.  \JP :: 頭単項式を取り出す.
 \EG :: Gets the head monomial.  \EG :: Gets the head monomial.
 @item dp_ht(@var{dpoly})  @item dp_ht(@var{dpoly})
 \JP :: $BF,9`$r<h$j=P$9(B.  \JP :: 頭項を取り出す.
 \EG :: Gets the head term.  \EG :: Gets the head term.
 @item dp_hc(@var{dpoly})  @item dp_hc(@var{dpoly})
 \JP :: $BF,78?t$r<h$j=P$9(B.  \JP :: 頭係数を取り出す.
 \EG :: Gets the head coefficient.  \EG :: Gets the head coefficient.
 @item dp_rest(@var{dpoly})  @item dp_rest(@var{dpoly})
 \JP :: $BF,C19`<0$r<h$j=|$$$?;D$j$rJV$9(B.  \JP :: 頭単項式を取り除いた残りを返す.
 \EG :: Gets the remainder of the polynomial where the head monomial is removed.  \EG :: Gets the remainder of the polynomial where the head monomial is removed.
 @end table  @end table
   
 @table @var  @table @var
 \BJP  \BJP
 @item return  @item return
 @code{dp_hm()}, @code{dp_ht()}, @code{dp_rest()} : $BJ,;6I=8=B?9`<0(B,  @code{dp_hm()}, @code{dp_ht()}, @code{dp_rest()} : 分散表現多項式,
 @code{dp_hc()} : $B?t$^$?$OB?9`<0(B  @code{dp_hc()} : 数または多項式
 @item dpoly  @item dpoly
 $BJ,;6I=8=B?9`<0(B  分散表現多項式
 \E  \E
 \BEG  \BEG
 @item return  @item return
Line 2852  distributed polynomial
Line 3727  distributed polynomial
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 $B$3$l$i$O(B, $BJ,;6I=8=B?9`<0$N3FItJ,$r<h$j=P$9$?$a$NH!?t$G$"$k(B.  これらは, 分散表現多項式の各部分を取り出すための函数である.
 @item  @item
 $BJ,;6I=8=B?9`<0(B @var{p} $B$KBP$7<!$,@.$jN)$D(B.  分散表現多項式 @var{p} に対し次が成り立つ.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 2883  The next equations hold for a distributed polynomial @
Line 3758  The next equations hold for a distributed polynomial @
 +(-490)*<<0,0,0>>  +(-490)*<<0,0,0>>
 @end example  @end example
   
 \JP @node dp_td dp_sugar,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dpm_hm dpm_ht dpm_hc dpm_hp dpm_rest,,, グレブナ基底に関する函数
   \EG @node dpm_hm dpm_ht dpm_hc dpm_hp dpm_rest,,, Functions for Groebner basis computation
   @subsection @code{dpm_hm}, @code{dpm_ht}, @code{dpm_hc}, @code{dpm_hp}, @code{dpm_rest}
   @findex dpm_hm
   @findex dpm_ht
   @findex dpm_hc
   @findex dpm_hp
   @findex dpm_rest
   
   @table @t
   @item dpm_hm(@var{dpoly})
   \JP :: 加群多項式の頭単項式を取り出す.
   \EG :: Gets the head monomial of a module polynomial.
   @item dpm_ht(@var{dpoly})
   \JP :: 加群多項式の頭項を取り出す.
   \EG :: Gets the head term of a module polynomial.
   @item dpm_hc(@var{dpoly})
   \JP :: 加群多項式の頭係数を取り出す.
   \EG :: Gets the head coefficient of a module polynomial.
   @item dpm_hp(@var{dpoly})
   \JP :: 加群多項式の頭位置を取り出す.
   \EG :: Gets the head position of a module polynomial.
   @item dpm_rest(@var{dpoly})
   \JP :: 加群多項式の頭単項式を取り除いた残りを返す.
   \EG :: Gets the remainder of a module polynomial where the head monomial is removed.
   @end table
   
   @table @var
   \BJP
   @item return
   @code{dp_hm()}, @code{dp_ht()}, @code{dp_rest()} : 加群多項式,
   @code{dp_hc()} : 数または多項式
   @item dpoly
   加群多項式
   \E
   \BEG
   @item return
   @code{dpm_hm()}, @code{dpm_ht()}, @code{dpm_rest()} : module polynomial
   @code{dpm_hc()} : monomial
   @item dpoly
   distributed polynomial
   \E
   @end table
   
   @itemize @bullet
   \BJP
   @item
   これらは, 加群多項式の各部分を取り出すための函数である.
   @item
   @code{dpm_hc()} は, @code{dpm_hm()} の, 標準基底に関する係数である単項式を返す.
   スカラー係数を取り出すには, さらに @code{dp_hc()} を実行する.
   @item
   @code{dpm_hp()} は, 頭加群単項式に含まれる標準基底のインデックスを返す.
   \E
   \BEG
   @item
   These are used to get various parts of a module polynomial.
   @item
   @code{dpm_hc()} returns the monomial that is the coefficient of @code{dpm_hm()} with respect to the
   standard base.
   For getting its scalar coefficient apply @code{dp_hc()}.
   @item
   @code{dpm_hp()} returns the index of the standard base conteind in the head module monomial.
   \E
   @end itemize
   
   @example
   [2126] dp_ord([1,0]);
   [1,0]
   [2127] F=2*<<1,2,0:2>>-3*<<1,0,2:3>>+<<2,1,0:2>>;
   (1)*<<2,1,0:2>>+(2)*<<1,2,0:2>>+(-3)*<<1,0,2:3>>
   [2128] M=dpm_hm(F);
   (1)*<<2,1,0:2>>
   [2129] C=dpm_hc(F);
   (1)*<<2,1,0>>
   [2130] R=dpm_rest(F);
   (2)*<<1,2,0:2>>+(-3)*<<1,0,2:3>>
   [2131] dpm_hp(F);
   2
   @end example
   
   
   \JP @node dp_td dp_sugar,,, グレブナ基底に関する函数
 \EG @node dp_td dp_sugar,,, Functions for Groebner basis computation  \EG @node dp_td dp_sugar,,, Functions for Groebner basis computation
 @subsection @code{dp_td}, @code{dp_sugar}  @subsection @code{dp_td}, @code{dp_sugar}
 @findex dp_td  @findex dp_td
Line 2891  The next equations hold for a distributed polynomial @
Line 3848  The next equations hold for a distributed polynomial @
   
 @table @t  @table @t
 @item dp_td(@var{dpoly})  @item dp_td(@var{dpoly})
 \JP :: $BF,9`$NA4<!?t$rJV$9(B.  \JP :: 頭項の全次数を返す.
 \EG :: Gets the total degree of the head term.  \EG :: Gets the total degree of the head term.
 @item dp_sugar(@var{dpoly})  @item dp_sugar(@var{dpoly})
 \JP :: $BB?9`<0$N(B @code{sugar} $B$rJV$9(B.  \JP :: 多項式の @code{sugar} を返す.
 \EG :: Gets the @code{sugar} of a polynomial.  \EG :: Gets the @code{sugar} of a polynomial.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $B<+A3?t(B  \JP 自然数
 \EG non-negative integer  \EG non-negative integer
 @item dpoly  @item dpoly
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @item onoff  @item onoff
 \JP $B%U%i%0(B  \JP フラグ
 \EG flag  \EG flag
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 @code{dp_td()} $B$O(B, $BF,9`$NA4<!?t(B, $B$9$J$o$A3FJQ?t$N;X?t$NOB$rJV$9(B.  @code{dp_td()} は, 頭項の全次数, すなわち各変数の指数の和を返す.
 @item  @item
 $BJ,;6I=8=B?9`<0$,@8@.$5$l$k$H(B, @code{sugar} $B$H8F$P$l$k$"$k@0?t$,IUM?(B  分散表現多項式が生成されると, @code{sugar} と呼ばれるある整数が付与
 $B$5$l$k(B. $B$3$NCM$O(B $B2>A[E*$K@F<!2=$7$F7W;;$7$?>l9g$K7k2L$,;}$DA4<!?t$NCM$H$J$k(B.  される. この値は 仮想的に斉次化して計算した場合に結果が持つ全次数の値となる.
 @item  @item
 @code{sugar} $B$O(B, $B%0%l%V%J4pDl7W;;$K$*$1$k@55,2=BP$NA*Br$N%9%H%i%F%8$r(B  @code{sugar} は, グレブナ基底計算における正規化対の選択のストラテジを
 $B7hDj$9$k$?$a$N=EMW$J;X?K$H$J$k(B.  決定するための重要な指針となる.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 2946  selection strategy of critical pairs in Groebner basis
Line 3903  selection strategy of critical pairs in Groebner basis
 3  3
 @end example  @end example
   
 \JP @node dp_lcm,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_lcm,,, グレブナ基底に関する函数
 \EG @node dp_lcm,,, Functions for Groebner basis computation  \EG @node dp_lcm,,, Functions for Groebner basis computation
 @subsection @code{dp_lcm}  @subsection @code{dp_lcm}
 @findex dp_lcm  @findex dp_lcm
   
 @table @t  @table @t
 @item dp_lcm(@var{dpoly1},@var{dpoly2})  @item dp_lcm(@var{dpoly1},@var{dpoly2})
 \JP :: $B:G>.8xG\9`$rJV$9(B.  \JP :: 最小公倍項を返す.
 \EG :: Returns the least common multiple of the head terms of the given two polynomials.  \EG :: Returns the least common multiple of the head terms of the given two polynomials.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @item dpoly1  dpoly2  @item dpoly1  dpoly2
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 $B$=$l$>$l$N0z?t$NF,9`$N:G>.8xG\9`$rJV$9(B. $B78?t$O(B 1 $B$G$"$k(B.  それぞれの引数の頭項の最小公倍項を返す. 係数は 1 である.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 2984  two polynomials, where coefficient is always set to 1.
Line 3941  two polynomials, where coefficient is always set to 1.
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{p_nf p_nf_mod p_true_nf p_true_nf_mod}.  @fref{p_nf p_nf_mod p_true_nf p_true_nf_mod}.
 @end table  @end table
   
 \JP @node dp_redble,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_redble,,, グレブナ基底に関する函数
 \EG @node dp_redble,,, Functions for Groebner basis computation  \EG @node dp_redble,,, Functions for Groebner basis computation
 @subsection @code{dp_redble}  @subsection @code{dp_redble}
 @findex dp_redble  @findex dp_redble
   
 @table @t  @table @t
 @item dp_redble(@var{dpoly1},@var{dpoly2})  @item dp_redble(@var{dpoly1},@var{dpoly2})
 \JP :: $BF,9`$I$&$7$,@0=|2DG=$+$I$&$+D4$Y$k(B.  \JP :: 頭項どうしが整除可能かどうか調べる.
 \EG :: Checks whether one head term is divisible by the other head term.  \EG :: Checks whether one head term is divisible by the other head term.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $B@0?t(B  \JP 整数
 \EG integer  \EG integer
 @item dpoly1  dpoly2  @item dpoly1  dpoly2
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 @var{dpoly1} $B$NF,9`$,(B @var{dpoly2} $B$NF,9`$G3d$j@Z$l$l$P(B 1, $B3d$j@Z$l$J$1$l$P(B  @var{dpoly1} の頭項が @var{dpoly2} の頭項で割り切れれば 1, 割り切れなければ
 0 $B$rJV$9(B.  0 を返す.
 @item  @item
 $BB?9`<0$N4JLs$r9T$&:](B, $B$I$N9`$r4JLs$G$-$k$+$rC5$9$N$KMQ$$$k(B.  多項式の簡約を行う際, どの項を簡約できるかを探すのに用いる.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 3039  Used for finding candidate terms at reduction of polyn
Line 3996  Used for finding candidate terms at reduction of polyn
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{dp_red dp_red_mod}.  @fref{dp_red dp_red_mod}.
 @end table  @end table
   
 \JP @node dp_subd,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dpm_redble,,, グレブナ基底に関する函数
   \EG @node dpm_redble,,, Functions for Groebner basis computation
   @subsection @code{dpm_redble}
   @findex dpm_redble
   
   @table @t
   @item dpm_redble(@var{dpoly1},@var{dpoly2})
   \JP :: 頭項どうしが整除可能かどうか調べる.
   \EG :: Checks whether one head term is divisible by the other head term.
   @end table
   
   @table @var
   @item return
   \JP 整数
   \EG integer
   @item dpoly1  dpoly2
   \JP 加群多項式
   \EG module polynomial
   @end table
   
   @itemize @bullet
   \BJP
   @item
   @var{dpoly1} の頭項が @var{dpoly2} の頭項で割り切れれば 1, 割り切れなければ
   0 を返す.
   @item
   多項式の簡約を行う際, どの項を簡約できるかを探すのに用いる.
   \E
   \BEG
   @item
   Returns 1 if the head term of @var{dpoly2} divides the head term of
   @var{dpoly1}; otherwise 0.
   @item
   Used for finding candidate terms at reduction of polynomials.
   \E
   @end itemize
   
   \JP @node dp_subd,,, グレブナ基底に関する函数
 \EG @node dp_subd,,, Functions for Groebner basis computation  \EG @node dp_subd,,, Functions for Groebner basis computation
 @subsection @code{dp_subd}  @subsection @code{dp_subd}
 @findex dp_subd  @findex dp_subd
   
 @table @t  @table @t
 @item dp_subd(@var{dpoly1},@var{dpoly2})  @item dp_subd(@var{dpoly1},@var{dpoly2})
 \JP :: $BF,9`$N>&C19`<0$rJV$9(B.  \JP :: 頭項の商単項式を返す.
 \EG :: Returns the quotient monomial of the head terms.  \EG :: Returns the quotient monomial of the head terms.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @item dpoly1  dpoly2  @item dpoly1  dpoly2
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 @code{dp_ht(@var{dpoly1})/dp_ht(@var{dpoly2})} $B$r5a$a$k(B. $B7k2L$N78?t$O(B 1  @code{dp_ht(@var{dpoly1})/dp_ht(@var{dpoly2})} を求める. 結果の係数は 1
 $B$G$"$k(B.  である.
 @item  @item
 $B3d$j@Z$l$k$3$H$,$"$i$+$8$a$o$+$C$F$$$kI,MW$,$"$k(B.  割り切れることがあらかじめわかっている必要がある.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 3087  Divisibility assumed.
Line 4081  Divisibility assumed.
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{dp_red dp_red_mod}.  @fref{dp_red dp_red_mod}.
 @end table  @end table
   
 \JP @node dp_vtoe dp_etov,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_vtoe dp_etov,,, グレブナ基底に関する函数
 \EG @node dp_vtoe dp_etov,,, Functions for Groebner basis computation  \EG @node dp_vtoe dp_etov,,, Functions for Groebner basis computation
 @subsection @code{dp_vtoe}, @code{dp_etov}  @subsection @code{dp_vtoe}, @code{dp_etov}
 @findex dp_vtoe  @findex dp_vtoe
Line 3100  Divisibility assumed.
Line 4094  Divisibility assumed.
   
 @table @t  @table @t
 @item dp_vtoe(@var{vect})  @item dp_vtoe(@var{vect})
 \JP :: $B;X?t%Y%/%H%k$r9`$KJQ49(B  \JP :: 指数ベクトルを項に変換
 \EG :: Converts an exponent vector into a term.  \EG :: Converts an exponent vector into a term.
 @item dp_etov(@var{dpoly})  @item dp_etov(@var{dpoly})
 \JP :: $BF,9`$r;X?t%Y%/%H%k$KJQ49(B  \JP :: 頭項を指数ベクトルに変換
 \EG :: Convert the head term of a distributed polynomial into an exponent vector.  \EG :: Convert the head term of a distributed polynomial into an exponent vector.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP @code{dp_vtoe} : $BJ,;6I=8=B?9`<0(B, @code{dp_etov} : $B%Y%/%H%k(B  \JP @code{dp_vtoe} : 分散表現多項式, @code{dp_etov} : ベクトル
 \EG @code{dp_vtoe} : distributed polynomial, @code{dp_etov} : vector  \EG @code{dp_vtoe} : distributed polynomial, @code{dp_etov} : vector
 @item vect  @item vect
 \JP $B%Y%/%H%k(B  \JP ベクトル
 \EG vector  \EG vector
 @item dpoly  @item dpoly
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 @code{dp_vtoe()} $B$O(B, $B%Y%/%H%k(B @var{vect} $B$r;X?t%Y%/%H%k$H$9$k9`$r@8@.$9$k(B.  @code{dp_vtoe()} は, ベクトル @var{vect} を指数ベクトルとする項を生成する.
 @item  @item
 @code{dp_etov()} $B$O(B, $BJ,;6I=8=B?9`<0(B @code{dpoly} $B$NF,9`$N;X?t%Y%/%H%k$r(B  @code{dp_etov()} は, 分散表現多項式 @code{dpoly} の頭項の指数ベクトルを
 $B%Y%/%H%k$KJQ49$9$k(B.  ベクトルに変換する.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 3146  head term of @code{dpoly}.
Line 4140  head term of @code{dpoly}.
 (1)*<<1,2,4>>  (1)*<<1,2,4>>
 @end example  @end example
   
 \JP @node dp_mbase,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_mbase,,, グレブナ基底に関する函数
 \EG @node dp_mbase,,, Functions for Groebner basis computation  \EG @node dp_mbase,,, Functions for Groebner basis computation
 @subsection @code{dp_mbase}  @subsection @code{dp_mbase}
 @findex dp_mbase  @findex dp_mbase
   
 @table @t  @table @t
 @item dp_mbase(@var{dplist})  @item dp_mbase(@var{dplist})
 \JP :: monomial $B4pDl$N7W;;(B  \JP :: monomial 基底の計算
 \EG :: Computes the monomial basis  \EG :: Computes the monomial basis
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $BJ,;6I=8=B?9`<0$N%j%9%H(B  \JP 分散表現多項式のリスト
 \EG list of distributed polynomial  \EG list of distributed polynomial
 @item dplist  @item dplist
 \JP $BJ,;6I=8=B?9`<0$N%j%9%H(B  \JP 分散表現多項式のリスト
 \EG list of distributed polynomial  \EG list of distributed polynomial
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 $B$"$k=g=x$G%0%l%V%J4pDl$H$J$C$F$$$kB?9`<0=89g$N(B, $B$=$N=g=x$K4X$9$kJ,;6I=8=(B  ある順序でグレブナ基底となっている多項式集合の, その順序に関する分散表現
 $B$G$"$k(B @var{dplist} $B$K$D$$$F(B,  である @var{dplist} について,
 @var{dplist} $B$,(B K[X] $BCf$G@8@.$9$k%$%G%"%k(B I $B$,(B 0 $B<!85$N;~(B,  @var{dplist} が K[X] 中で生成するイデアル I が 0 次元の時,
 K $B>eM-8B<!85@~7A6u4V$G$"$k(B K[X]/I $B$N(B monomial $B$K$h$k4pDl$r5a$a$k(B.  K 上有限次元線形空間である K[X]/I の monomial による基底を求める.
 @item  @item
 $BF@$i$l$?4pDl$N8D?t$,(B, K[X]/I $B$N(B K-$B@~7A6u4V$H$7$F$N<!85$KEy$7$$(B.  得られた基底の個数が, K[X]/I の K-線形空間としての次元に等しい.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 3201  u1*u2,u1^2,u4*u0,u3*u0,u2*u0,u1*u0,u0^2,u4,u3,u2,u1,u0
Line 4195  u1*u2,u1^2,u4*u0,u3*u0,u2*u0,u1*u0,u0^2,u4,u3,u2,u1,u0
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{gr hgr gr_mod}.  @fref{gr hgr gr_mod}.
 @end table  @end table
   
 \JP @node dp_mag,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_mag,,, グレブナ基底に関する函数
 \EG @node dp_mag,,, Functions for Groebner basis computation  \EG @node dp_mag,,, Functions for Groebner basis computation
 @subsection @code{dp_mag}  @subsection @code{dp_mag}
 @findex dp_mag  @findex dp_mag
   
 @table @t  @table @t
 @item dp_mag(@var{p})  @item dp_mag(@var{p})
 \JP :: $B78?t$N%S%C%HD9$NOB$rJV$9(B  \JP :: 係数のビット長の和を返す
 \EG :: Computes the sum of bit lengths of coefficients of a distributed polynomial.  \EG :: Computes the sum of bit lengths of coefficients of a distributed polynomial.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $B?t(B  \JP 数
 \EG integer  \EG integer
 @item p  @item p
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 $BJ,;6I=8=B?9`<0$N78?t$K8=$l$kM-M}?t$K$D$-(B, $B$=$NJ,JlJ,;R(B ($B@0?t$N>l9g$OJ,;R(B)  分散表現多項式の係数に現れる有理数につき, その分母分子 (整数の場合は分子)
 $B$N%S%C%HD9$NAmOB$rJV$9(B.  のビット長の総和を返す.
 @item  @item
 $BBP>]$H$J$kB?9`<0$NBg$-$5$NL\0B$H$7$FM-8z$G$"$k(B. $BFC$K(B, 0 $B<!85%7%9%F%`$K$*$$$F$O(B  対象となる多項式の大きさの目安として有効である. 特に, 0 次元システムにおいては
 $B78?tKDD%$,LdBj$H$J$j(B, $BESCf@8@.$5$l$kB?9`<0$,78?tKDD%$r5/$3$7$F$$$k$+$I$&$+(B  係数膨張が問題となり, 途中生成される多項式が係数膨張を起こしているかどうか
 $B$NH=Dj$KLrN)$D(B.  の判定に役立つ.
 @item  @item
 @code{dp_gr_flags()} $B$G(B, @code{ShowMag}, @code{Print} $B$r(B on $B$K$9$k$3$H$K$h$j(B  @code{dp_gr_flags()} で, @code{ShowMag}, @code{Print} を on にすることにより
 $BESCf@8@.$5$l$kB?9`<0$K$?$$$9$k(B @code{dp_mag()} $B$NCM$r8+$k$3$H$,$G$-$k(B.  途中生成される多項式にたいする @code{dp_mag()} の値を見ることができる.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 3261  values of @code{dp_mag()} for intermediate basis eleme
Line 4255  values of @code{dp_mag()} for intermediate basis eleme
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{dp_gr_flags dp_gr_print}.  @fref{dp_gr_flags dp_gr_print}.
 @end table  @end table
   
 \JP @node dp_red dp_red_mod,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_red dp_red_mod,,, グレブナ基底に関する函数
 \EG @node dp_red dp_red_mod,,, Functions for Groebner basis computation  \EG @node dp_red dp_red_mod,,, Functions for Groebner basis computation
 @subsection @code{dp_red}, @code{dp_red_mod}  @subsection @code{dp_red}, @code{dp_red_mod}
 @findex dp_red  @findex dp_red
Line 3275  values of @code{dp_mag()} for intermediate basis eleme
Line 4269  values of @code{dp_mag()} for intermediate basis eleme
 @table @t  @table @t
 @item dp_red(@var{dpoly1},@var{dpoly2},@var{dpoly3})  @item dp_red(@var{dpoly1},@var{dpoly2},@var{dpoly3})
 @item dp_red_mod(@var{dpoly1},@var{dpoly2},@var{dpoly3},@var{mod})  @item dp_red_mod(@var{dpoly1},@var{dpoly2},@var{dpoly3},@var{mod})
 \JP :: $B0l2s$N4JLsA`:n(B  \JP :: 一回の簡約操作
 \EG :: Single reduction operation  \EG :: Single reduction operation
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item dpoly1  dpoly2  dpoly3  @item dpoly1  dpoly2  dpoly3
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @item vlist  @item vlist
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item mod  @item mod
 \JP $BAG?t(B  \JP 素数
 \EG prime  \EG prime
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 @var{dpoly1} + @var{dpoly2} $B$J$kJ,;6I=8=B?9`<0$r(B @var{dpoly3} $B$G(B  @var{dpoly1} + @var{dpoly2} なる分散表現多項式を @var{dpoly3} で
 1 $B2s4JLs$9$k(B.  1 回簡約する.
 @item  @item
 @code{dp_red_mod()} $B$NF~NO$O(B, $BA4$FM-8BBN78?t$KJQ49$5$l$F$$$kI,MW$,$"$k(B.  @code{dp_red_mod()} の入力は, 全て有限体係数に変換されている必要がある.
 @item  @item
 $B4JLs$5$l$k9`$O(B @var{dpoly2} $B$NF,9`$G$"$k(B. $B=>$C$F(B, @var{dpoly2} $B$N(B  簡約される項は @var{dpoly2} の頭項である. 従って, @var{dpoly2} の
 $BF,9`$,(B @var{dpoly3} $B$NF,9`$G3d$j@Z$l$k$3$H$,$"$i$+$8$a$o$+$C$F$$$J$1$l$P(B  頭項が @var{dpoly3} の頭項で割り切れることがあらかじめわかっていなければ
 $B$J$i$J$$(B.  ならない.
 @item  @item
 $B0z?t$,@0?t78?t$N;~(B, $B4JLs$O(B, $BJ,?t$,8=$l$J$$$h$&(B, $B@0?t(B @var{a}, @var{b},  引数が整数係数の時, 簡約は, 分数が現れないよう, 整数 @var{a}, @var{b},
 $B9`(B @var{t} $B$K$h$j(B @var{a}(@var{dpoly1} + @var{dpoly2})-@var{bt} @var{dpoly3} $B$H$7$F7W;;$5$l$k(B.  項 @var{t} により @var{a}(@var{dpoly1} + @var{dpoly2})-@var{bt} @var{dpoly3} として計算される.
 @item  @item
 $B7k2L$O(B, @code{[@var{a dpoly1},@var{a dpoly2 - bt dpoly3}]} $B$J$k%j%9%H$G$"$k(B.  結果は, @code{[@var{a dpoly1},@var{a dpoly2 - bt dpoly3}]} なるリストである.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 3345  The result is a list @code{[@var{a dpoly1},@var{a dpol
Line 4339  The result is a list @code{[@var{a dpoly1},@var{a dpol
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{dp_mod dp_rat}.  @fref{dp_mod dp_rat}.
 @end table  @end table
   
 \JP @node dp_sp dp_sp_mod,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_sp dp_sp_mod,,, グレブナ基底に関する函数
 \EG @node dp_sp dp_sp_mod,,, Functions for Groebner basis computation  \EG @node dp_sp dp_sp_mod,,, Functions for Groebner basis computation
 @subsection @code{dp_sp}, @code{dp_sp_mod}  @subsection @code{dp_sp}, @code{dp_sp_mod}
 @findex dp_sp  @findex dp_sp
Line 3359  The result is a list @code{[@var{a dpoly1},@var{a dpol
Line 4353  The result is a list @code{[@var{a dpoly1},@var{a dpol
 @table @t  @table @t
 @item dp_sp(@var{dpoly1},@var{dpoly2})  @item dp_sp(@var{dpoly1},@var{dpoly2})
 @item dp_sp_mod(@var{dpoly1},@var{dpoly2},@var{mod})  @item dp_sp_mod(@var{dpoly1},@var{dpoly2},@var{mod})
 \JP :: S-$BB?9`<0$N7W;;(B  \JP :: S-多項式の計算
 \EG :: Computation of an S-polynomial  \EG :: Computation of an S-polynomial
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @item dpoly1  dpoly2  @item dpoly1  dpoly2
 \JP $BJ,;6I=8=B?9`<0(B  \JP 分散表現多項式
 \EG distributed polynomial  \EG distributed polynomial
 @item mod  @item mod
 \JP $BAG?t(B  \JP 素数
 \EG prime  \EG prime
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 @var{dpoly1}, @var{dpoly2} $B$N(B S-$BB?9`<0$r7W;;$9$k(B.  @var{dpoly1}, @var{dpoly2} の S-多項式を計算する.
 @item  @item
 @code{dp_sp_mod()} $B$NF~NO$O(B, $BA4$FM-8BBN78?t$KJQ49$5$l$F$$$kI,MW$,$"$k(B.  @code{dp_sp_mod()} の入力は, 全て有限体係数に変換されている必要がある.
 @item  @item
 $B7k2L$KM-M}?t(B, $BM-M}<0$,F~$k$N$rHr$1$k$?$a(B, $B7k2L$,Dj?tG\(B, $B$"$k$$$OB?9`<0(B  結果に有理数, 有理式が入るのを避けるため, 結果が定数倍, あるいは多項式
 $BG\$5$l$F$$$k2DG=@-$,$"$k(B.  倍されている可能性がある.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 3407  make the result integral.
Line 4401  make the result integral.
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{dp_mod dp_rat}.  @fref{dp_mod dp_rat}.
 @end table  @end table
 \JP @node p_nf p_nf_mod p_true_nf p_true_nf_mod,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  
   \JP @node dpm_sp,,, グレブナ基底に関する函数
   \EG @node dmp_sp,,, Functions for Groebner basis computation
   @subsection @code{dpm_sp}
   @findex dpm_sp
   
   @table @t
   @item dpm_sp(@var{dpoly1},@var{dpoly2}[|coef=1])
   \JP :: S-多項式の計算
   \EG :: Computation of an S-polynomial
   @end table
   
   @table @var
   @item return
   \JP 加群多項式またはリスト
   \EG module polynomial or list
   @item dpoly1  dpoly2
   \JP 加群多項式
   \EG module polynomial
   \JP 分散表現多項式
   @end table
   
   @itemize @bullet
   \BJP
   @item
   @var{dpoly1}, @var{dpoly2} の S-多項式を計算する.
   @item
   オプション @var{coef=1} が指定されている場合, @code{[S,t1,t2]} なるリストを返す.
   ここで, @code{t1}, @code{t2} はS-多項式を作る際の係数単項式で @code{S=t1 dpoly1-t2 dpoly2}
   を満たす.
   \E
   \BEG
   @item
   This function computes the S-polynomial of @var{dpoly1} and @var{dpoly2}.
   @item
   If an option @var{coef=1} is specified, it returns a list @code{[S,t1,t2]},
   where @code{S} is the S-polynmial and @code{t1}, @code{t2} are monomials satisfying @code{S=t1 dpoly1-t2 dpoly2}.
   \E
   @end itemize
   
   \JP @node dpm_schreyer_base,,, グレブナ基底に関する函数
   \EG @node dmp_schreyer_base,,, Functions for Groebner basis computation
   @subsection @code{dpm_schreyer_base}
   @findex dpm_schreyer_base
   
   @table @t
   @item dpm_schreyer_base(@var{G})
   \JP :: szygy 加群のグレブナー基底の計算
   \EG :: Computation of a Groebner basis of the syzygy module
   @end table
   
   @table @var
   @item return
   \JP 加群多項式リスト
   \EG list of module polynomials
   @item G
   \JP 加群多項式リスト
   \EG list of module polynomials
   @end table
   
   @itemize @bullet
   \BJP
   @item
   加群多項式で表された簡約グレブナー基底 @var{G} に対し, @var{syz(G)} の極小グレブナー基底を計算して返す.
   @item
   得られる結果は, @var{G} の先頭項から定まる Schreyer 順序に関するグレブナー基底である.
   副作用として, この Schreyer 順序が自動的に設定される.
   \E
   \BEG
   @item
   This function computes a minimal Groebner basis of @var{syz(G)} for a Groenber basis @var{G}
   that is represented as a list of module polynomials.
   @item
   The result is a Groebner basis with respect to a Schreyer ordering determined by the leading terms of
   @var{G}. As a side effect, this Schreyer ordering is autoatically set.
   \E
   @end itemize
   
   \JP @node dpm_schreyer_frame,,, グレブナ基底に関する函数
   \EG @node dmp_schreyer_frame,,, Functions for Groebner basis computation
   @subsection @code{dpm_schreyer_frame}
   @findex dpm_schreyer_frame
   
   @table @t
   @item dpm_schreyer_frame(@var{G})
   \JP :: Schreyer フレームの計算
   \EG :: Computation of the Schreyer frame
   @end table
   
   @table @var
   @item return
   \JP 加群単項式リストのリスト
   \EG a list of lists of module monomials
   @item G
   \JP 加群多項式リスト
   \EG list of module polynomials
   @end table
   
   @itemize @bullet
   \BJP
   @item
   @var{G} の先頭項からスタートして, Schreyer フレーム, すなわち Schreyer の自由分解に現れるグレブナー基底の,
   Schreyer 順序に関する先頭単項式を計算する.
   @item
   得られる結果は, 自由分解における @var{F}_i の標準基底の像の先頭単項式のリスト @var{M}_i のリスト
   [@var{M}_m,...,@var{M}_1] である.
   @item
   副作用として, 各レベルにおける Schreyer 順序を設定するためのデータが作られる. このデータは
   @code{dpm_set_schreyer_level} により, 各レベルの Schreyer 順序を設定する際に用いられる.
   \E
   \BEG
   @item
   This function computes the Schreyer frame starting from a Groebner basis @var{G}, that is the lists of leading monomials of Groebner bases
   of syzygy modules with respect to Schreyer orderings in the Schreyer free resolution.
   @item
   The result is a list [@var{M}_m,...,@var{M}_1], where @var{M}_i is the list of leading monomials of
   the images of standard bases of the free module @var{F}_i in the Schreyer free resolution.
   @item
   As a by-product, data for setting a Schreyer order in each level are created. The date are
   used by @code{dpm_set_schreyer_level} for setting a Schreyer order in each level.
   \E
   @end itemize
   
   \JP @node dpm_set_schreyer_level,,, グレブナ基底に関する函数
   \EG @node dmp_set_schreyer_level,,, Functions for Groebner basis computation
   @subsection @code{dpm_set_schreyer_level}
   @findex dpm_set_schreyer_level
   
   @table @t
   @item dpm_set_schreyer_level(@var{L})
   \JP :: 指定されたレベルの Schreyer ordering の設定
   \EG :: Setting the Schreyer ordering of a specified level
   @end table
   
   @table @var
   @item return
   \JP 非負整数
   \EG a non-negative integer
   @item G
   \JP 非負整数
   \EG a non-negative integer
   @end table
   
   @itemize @bullet
   \BJP
   @item
   @var{G} の先頭項からスタートして, Schreyer フレーム, すなわち Schreyer の自由分解に現れるグレブナー基底の,
   Schreyer 順序に関する先頭単項式を計算する.
   @item
   得られる結果は, 自由分解における @var{F}_i の標準基底の像の先頭単項式のリスト @var{M}_i のリスト
   [@var{M}_m,...,@var{M}_1] である.
   @item
   副作用として, 各レベルにおける Schreyer 順序を設定するためのデータが作られる. このデータは
   @code{dpm_set_schreyer_level} により, 各レベルの Schreyer 順序を設定する際に用いられる.
   \E
   \BEG
   @item
   This function computes the Schreyer frame starting from a Groebner basis @var{G}, that is the lists of leading monomials of Groebner bases
   of syzygy modules with respect to Schreyer orderings in the Schreyer free resolution.
   @item
   The result is a list [@var{M}_m,...,@var{M}_1], where @var{M}_i is the list of leading monomials of
   the images of standard bases of the free module @var{F}_i in the Schreyer free resolution.
   @item
   As a by-product, data for setting a Schreyer order in each level are created. The date are
   used by @code{dpm_set_schreyer_level} for setting a Schreyer order in each level.
   \E
   @end itemize
   
   \JP @node dpm_sp_nf,,, グレブナ基底に関する函数
   \EG @node dmp_sp_nf,,, Functions for Groebner basis computation
   @subsection @code{dpm_sp_nf}
   @findex dpm_sp_nf
   
   @table @t
   @item dpm_sp_nf(@var{C},@var{Z},@var{P},@var{Q})
   \JP :: S-多項式を多項式配列で割った余りの計算
   \EG :: Computation of a remainder of an S-polynomial modulo a polynomial array
   @end table
   
   @table @var
   @item return
   \JP 加群単項式のリスト
   \EG a list of module monomials
   @item C
   \JP 加群多項式配列
   \EG an array of module polynomials
   @item Z
   \JP 整数リストの配列
   \EG an array of integer lists
   @item P
   @itemx Q
   \JP 整数
   \EG integers
   @end table
   
   @itemize @bullet
   \BJP
   @item
   @iftex
   @var{C[P]}, @var{C[Q]} の S-多項式を C で割った余り f が
   @tex
   $$ct C[P]-c't'C[Q]=g_1C[1]+\cdots+g_LC[L]+f$$
   @end tex
   と表されるとき
   @tex
   $$g'=ct e_P-c't' e_Q-(g_1 e_1+...+g_L e_L)$$
   @end tex
   に対し
   @tex
   [g',f]
   @end tex
   を返す.
   @end iftex
   @ifnottex
   @var{C[P]}, @var{C[Q]} の S-多項式を C で割った余り f が
   ct @var{C[P]}-c't'@var{C[Q]}=g_1@var{C[1]}+...+g_L@var{C[L]}+f
   と表されるとき
   g'=ct e_P-c't' e_Q-(g_1 e_1+...+g_L e_L)
   に対し
   [g',f]
   を返す.
   @end ifnottex
   @item
   配列 @var{Z} の第 I 成分は, 先頭項の位置が @var{I} であるような @var{C} の元の配列インデックスのリストである.
   \E
   \BEG
   @item
   @iftex
   When the remainder of the S-polynomial of @var{C[P]} and @var{C[Q]} modulo @var{C}
   is represented as
   @tex
   $$ct C[P]-c't'C[Q]=g_1C[1]+\cdots+g_LC[L]+f$$
   @end tex
   this function returns a list
   @tex
   [g',f],
   @end tex
   where
   @tex
   $$g'=ct e_P-c't' e_Q-(g_1 e_1+...+g_L e_L).$$
   @end tex
   @end iftex
   @ifnottex
   When the remainder of the S-polynomial of @var{C[P]} and @var{C[Q]} modulo @var{C}
   is represented as
   ct @var{C[P]}-c't'@var{C[Q]}=g_1@var{C[1]}+...+g_L@var{C[L]}+f,
   this function returns a list [g',f], where
   g'=ct eP-c't' eQ-(g_1 e1+...+gL e_L).
   @end ifnottex
   @item
   The @var{I}-th element of an array @var{Z} is a list of indices of elements of @var{C}
   whose leading position is @var{I}.
   \E
   @end itemize
   
   
   
   \JP @node p_nf p_nf_mod p_true_nf p_true_nf_mod,,, グレブナ基底に関する函数
 \EG @node p_nf p_nf_mod p_true_nf p_true_nf_mod,,, Functions for Groebner basis computation  \EG @node p_nf p_nf_mod p_true_nf p_true_nf_mod,,, Functions for Groebner basis computation
 @subsection @code{p_nf}, @code{p_nf_mod}, @code{p_true_nf}, @code{p_true_nf_mod}  @subsection @code{p_nf}, @code{p_nf_mod}, @code{p_true_nf}, @code{p_true_nf_mod}
 @findex p_nf  @findex p_nf
Line 3422  make the result integral.
Line 4673  make the result integral.
 @table @t  @table @t
 @item p_nf(@var{poly},@var{plist},@var{vlist},@var{order})  @item p_nf(@var{poly},@var{plist},@var{vlist},@var{order})
 @itemx p_nf_mod(@var{poly},@var{plist},@var{vlist},@var{order},@var{mod})  @itemx p_nf_mod(@var{poly},@var{plist},@var{vlist},@var{order},@var{mod})
 \JP :: $BI=8=B?9`<0$N@55,7A$r5a$a$k(B. ($B7k2L$ODj?tG\$5$l$F$$$k2DG=@-$"$j(B)  \JP :: 表現多項式の正規形を求める. (結果は定数倍されている可能性あり)
 \BEG  \BEG
 :: Computes the normal form of the given polynomial.  :: Computes the normal form of the given polynomial.
 (The result may be multiplied by a constant.)  (The result may be multiplied by a constant.)
 \E  \E
 @item p_true_nf(@var{poly},@var{plist},@var{vlist},@var{order})  @item p_true_nf(@var{poly},@var{plist},@var{vlist},@var{order})
 @itemx p_true_nf_mod(@var{poly},@var{plist},@var{vlist},@var{order},@var{mod})  @itemx p_true_nf_mod(@var{poly},@var{plist},@var{vlist},@var{order},@var{mod})
 \JP :: $BI=8=B?9`<0$N@55,7A$r5a$a$k(B. ($B??$N7k2L$r(B @code{[$BJ,;R(B, $BJ,Jl(B]} $B$N7A$GJV$9(B)  \JP :: 表現多項式の正規形を求める. (真の結果を @code{[分子, 分母]} の形で返す)
 \BEG  \BEG
 :: Computes the normal form of the given polynomial. (The result is returned  :: Computes the normal form of the given polynomial. (The result is returned
 as a form of @code{[numerator, denominator]})  as a form of @code{[numerator, denominator]})
Line 3438  as a form of @code{[numerator, denominator]})
Line 4689  as a form of @code{[numerator, denominator]})
   
 @table @var  @table @var
 @item return  @item return
 \JP @code{p_nf} : $BB?9`<0(B, @code{p_true_nf} : $B%j%9%H(B  \JP @code{p_nf} : 多項式, @code{p_true_nf} : リスト
 \EG @code{p_nf} : polynomial, @code{p_true_nf} : list  \EG @code{p_nf} : polynomial, @code{p_true_nf} : list
 @item poly  @item poly
 \JP $BB?9`<0(B  \JP 多項式
 \EG polynomial  \EG polynomial
 @item plist vlist  @item plist vlist
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item order  @item order
 \JP $B?t(B, $B%j%9%H$^$?$O9TNs(B  \JP 数, リストまたは行列
 \EG number, list or matrix  \EG number, list or matrix
 @item mod  @item mod
 \JP $BAG?t(B  \JP 素数
 \EG prime  \EG prime
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 @samp{gr} $B$GDj5A$5$l$F$$$k(B.  @samp{gr} で定義されている.
 @item  @item
 $BB?9`<0$N(B, $BB?9`<0%j%9%H$K$h$k@55,7A$r5a$a$k(B.  多項式の, 多項式リストによる正規形を求める.
 @item  @item
 @code{dp_nf()}, @code{dp_true_nf()}, @code{dp_nf_mod()}, @code{dp_true_nf_mod}  @code{dp_nf()}, @code{dp_true_nf()}, @code{dp_nf_mod()}, @code{dp_true_nf_mod}
 $B$KBP$9$k%$%s%?%U%'!<%9$G$"$k(B.  に対するインタフェースである.
 @item  @item
 @var{poly} $B$*$h$S(B @var{plist} $B$O(B, $BJQ?t=g=x(B @var{vlist} $B$*$h$S(B  @var{poly} および @var{plist} は, 変数順序 @var{vlist} および
 $BJQ?t=g=x7?(B @var{otype} $B$K=>$C$FJ,;6I=8=B?9`<0$KJQ49$5$l(B,  変数順序型 @var{otype} に従って分散表現多項式に変換され,
 @code{dp_nf()}, @code{dp_true_nf()}, @code{dp_nf_mod()},  @code{dp_nf()}, @code{dp_true_nf()}, @code{dp_nf_mod()},
 @code{dp_true_nf_mod()} $B$KEO$5$l$k(B.  @code{dp_true_nf_mod()} に渡される.
 @item  @item
 @code{dp_nf()}, @code{dp_true_nf()}, @code{dp_nf_mod()},  @code{dp_nf()}, @code{dp_true_nf()}, @code{dp_nf_mod()},
 @code{dp_true_nf_mod()} $B$O(B @var{fullreduce} $B$,(B 1 $B$G8F$S=P$5$l$k(B.  @code{dp_true_nf_mod()} は @var{fullreduce} が 1 で呼び出される.
 @item  @item
 $B7k2L$OB?9`<0$KJQ49$5$l$F=PNO$5$l$k(B.  結果は多項式に変換されて出力される.
 @item  @item
 @code{p_true_nf()}, @code{p_true_nf_mod()} $B$N=PNO$K4X$7$F$O(B,  @code{p_true_nf()}, @code{p_true_nf_mod()} の出力に関しては,
 @code{dp_true_nf()}, @code{dp_true_nf_mod()} $B$N9`$r;2>H(B.  @code{dp_true_nf()}, @code{dp_true_nf_mod()} の項を参照.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 3515  refer to @code{dp_true_nf()} and @code{dp_true_nf_mod(
Line 4766  refer to @code{dp_true_nf()} and @code{dp_true_nf_mod(
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{dp_ptod},  @fref{dp_ptod},
 @fref{dp_dtop},  @fref{dp_dtop},
 @fref{dp_ord},  @fref{dp_ord},
 @fref{dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod}.  @fref{dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod dp_weyl_nf dp_weyl_nf_mod}.
 @end table  @end table
   
 \JP @node p_terms,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node p_terms,,, グレブナ基底に関する函数
 \EG @node p_terms,,, Functions for Groebner basis computation  \EG @node p_terms,,, Functions for Groebner basis computation
 @subsection @code{p_terms}  @subsection @code{p_terms}
 @findex p_terms  @findex p_terms
   
 @table @t  @table @t
 @item p_terms(@var{poly},@var{vlist},@var{order})  @item p_terms(@var{poly},@var{vlist},@var{order})
 \JP :: $BB?9`<0$K$"$i$o$l$kC19`$r%j%9%H$K$9$k(B.  \JP :: 多項式にあらわれる単項をリストにする.
 \EG :: Monomials appearing in the given polynomial is collected into a list.  \EG :: Monomials appearing in the given polynomial is collected into a list.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item poly  @item poly
 \JP $BB?9`<0(B  \JP 多項式
 \EG polynomial  \EG polynomial
 @item vlist  @item vlist
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item order  @item order
 \JP $B?t(B, $B%j%9%H$^$?$O9TNs(B  \JP 数, リストまたは行列
 \EG number, list or matrix  \EG number, list or matrix
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 @samp{gr} $B$GDj5A$5$l$F$$$k(B.  @samp{gr} で定義されている.
 @item  @item
 $BB?9`<0$rC19`$KE83+$7$?;~$K8=$l$k9`$r%j%9%H$K$7$FJV$9(B.  多項式を単項に展開した時に現れる項をリストにして返す.
 @var{vlist} $B$*$h$S(B @var{order} $B$K$h$jDj$^$k9`=g=x$K$h$j(B, $B=g=x$N9b$$$b$N(B  @var{vlist} および @var{order} により定まる項順序により, 順序の高いもの
 $B$,%j%9%H$N@hF,$KMh$k$h$&$K%=!<%H$5$l$k(B.  がリストの先頭に来るようにソートされる.
 @item  @item
 $B%0%l%V%J4pDl$O$7$P$7$P78?t$,5pBg$K$J$k$?$a(B, $B<B:]$K$I$N9`$,8=$l$F(B  グレブナ基底はしばしば係数が巨大になるため, 実際にどの項が現れて
 $B$$$k$N$+$r8+$k$?$a$J$I$KMQ$$$k(B.  いるのかを見るためなどに用いる.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 3584  u0^21,u0^20,u0^19,u0^18,u0^17,u0^16,u0^15,u0^14,u0^13,
Line 4835  u0^21,u0^20,u0^19,u0^18,u0^17,u0^16,u0^15,u0^14,u0^13,
 u0^10,u0^9,u0^8,u0^7,u0^6,u0^5,u0^4,u0^3,u0^2,u0,1]  u0^10,u0^9,u0^8,u0^7,u0^6,u0^5,u0^4,u0^3,u0^2,u0,1]
 @end example  @end example
   
 \JP @node gb_comp,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node gb_comp,,, グレブナ基底に関する函数
 \EG @node gb_comp,,, Functions for Groebner basis computation  \EG @node gb_comp,,, Functions for Groebner basis computation
 @subsection @code{gb_comp}  @subsection @code{gb_comp}
 @findex gb_comp  @findex gb_comp
   
 @table @t  @table @t
 @item gb_comp(@var{plist1}, @var{plist2})  @item gb_comp(@var{plist1}, @var{plist2})
 \JP :: $BB?9`<0%j%9%H$,(B, $BId9f$r=|$$$F=89g$H$7$FEy$7$$$+$I$&$+D4$Y$k(B.  \JP :: 多項式リストが, 符号を除いて集合として等しいかどうか調べる.
 \EG :: Checks whether two polynomial lists are equal or not as a set  \EG :: Checks whether two polynomial lists are equal or not as a set
 @end table  @end table
   
 @table @var  @table @var
 \JP @item return 0 $B$^$?$O(B 1  \JP @item return 0 または 1
 \EG @item return 0 or 1  \EG @item return 0 or 1
 @item plist1  plist2  @item plist1  plist2
 @end table  @end table
Line 3604  u0^10,u0^9,u0^8,u0^7,u0^6,u0^5,u0^4,u0^3,u0^2,u0,1]
Line 4855  u0^10,u0^9,u0^8,u0^7,u0^6,u0^5,u0^4,u0^3,u0^2,u0,1]
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 @var{plist1}, @var{plist2} $B$K$D$$$F(B, $BId9f$r=|$$$F=89g$H$7$FEy$7$$$+$I$&$+(B  @var{plist1}, @var{plist2} について, 符号を除いて集合として等しいかどうか
 $BD4$Y$k(B.  調べる.
 @item  @item
 $B0[$J$kJ}K!$G5a$a$?%0%l%V%J4pDl$O(B, $B4pDl$N=g=x(B, $BId9f$,0[$J$k>l9g$,$"$j(B,  異なる方法で求めたグレブナ基底は, 基底の順序, 符号が異なる場合があり,
 $B$=$l$i$,Ey$7$$$+$I$&$+$rD4$Y$k$?$a$KMQ$$$k(B.  それらが等しいかどうかを調べるために用いる.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 3632  as a generating set of an ideal.
Line 4883  as a generating set of an ideal.
 1  1
 @end example  @end example
   
 \JP @node katsura hkatsura cyclic hcyclic,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node katsura hkatsura cyclic hcyclic,,, グレブナ基底に関する函数
 \EG @node katsura hkatsura cyclic hcyclic,,, Functions for Groebner basis computation  \EG @node katsura hkatsura cyclic hcyclic,,, Functions for Groebner basis computation
 @subsection @code{katsura}, @code{hkatsura}, @code{cyclic}, @code{hcyclic}  @subsection @code{katsura}, @code{hkatsura}, @code{cyclic}, @code{hcyclic}
 @findex katsura  @findex katsura
Line 3645  as a generating set of an ideal.
Line 4896  as a generating set of an ideal.
 @item hkatsura(@var{n})  @item hkatsura(@var{n})
 @item cyclic(@var{n})  @item cyclic(@var{n})
 @item hcyclic(@var{n})  @item hcyclic(@var{n})
 \JP :: $BB?9`<0%j%9%H$N@8@.(B  \JP :: 多項式リストの生成
 \EG :: Generates a polynomial list of standard benchmark.  \EG :: Generates a polynomial list of standard benchmark.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $B%j%9%H(B  \JP リスト
 \EG list  \EG list
 @item n  @item n
 \JP $B@0?t(B  \JP 整数
 \EG integer  \EG integer
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 @code{katsura()} $B$O(B @samp{katsura}, @code{cyclic()} $B$O(B @samp{cyclic}  @code{katsura()} は @samp{katsura}, @code{cyclic()} は @samp{cyclic}
 $B$GDj5A$5$l$F$$$k(B.  で定義されている.
 @item  @item
 $B%0%l%V%J4pDl7W;;$G$7$P$7$P%F%9%H(B, $B%Y%s%A%^!<%/$KMQ$$$i$l$k(B @code{katsura},  グレブナ基底計算でしばしばテスト, ベンチマークに用いられる @code{katsura},
 @code{cyclic} $B$*$h$S$=$N@F<!2=$r@8@.$9$k(B.  @code{cyclic} およびその斉次化を生成する.
 @item  @item
 @code{cyclic} $B$O(B @code{Arnborg}, @code{Lazard}, @code{Davenport} $B$J$I$N(B  @code{cyclic} は @code{Arnborg}, @code{Lazard}, @code{Davenport} などの
 $BL>$G8F$P$l$k$3$H$b$"$k(B.  名で呼ばれることもある.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 3713  u0^2-u0+2*u4^2+2*u3^2+2*u2^2+2*u1^2+2*u5^2]
Line 4964  u0^2-u0+2*u4^2+2*u3^2+2*u2^2+2*u1^2+2*u5^2]
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{dp_dtop}.  @fref{dp_dtop}.
 @end table  @end table
   
 \JP @node primadec primedec,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node primadec primedec,,, グレブナ基底に関する函数
 \EG @node primadec primedec,,, Functions for Groebner basis computation  \EG @node primadec primedec,,, Functions for Groebner basis computation
 @subsection @code{primadec}, @code{primedec}  @subsection @code{primadec}, @code{primedec}
 @findex primadec  @findex primadec
Line 3727  u0^2-u0+2*u4^2+2*u3^2+2*u2^2+2*u1^2+2*u5^2]
Line 4978  u0^2-u0+2*u4^2+2*u3^2+2*u2^2+2*u1^2+2*u5^2]
 @table @t  @table @t
 @item primadec(@var{plist},@var{vlist})  @item primadec(@var{plist},@var{vlist})
 @item primedec(@var{plist},@var{vlist})  @item primedec(@var{plist},@var{vlist})
 \JP :: $B%$%G%"%k$NJ,2r(B  \JP :: イデアルの分解
 \EG :: Computes decompositions of ideals.  \EG :: Computes decompositions of ideals.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 @itemx plist  @itemx plist
 \JP $BB?9`<0%j%9%H(B  \JP 多項式リスト
 \EG list of polynomials  \EG list of polynomials
 @item vlist  @item vlist
 \JP $BJQ?t%j%9%H(B  \JP 変数リスト
 \EG list of variables  \EG list of variables
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 @code{primadec()}, @code{primedec} $B$O(B @samp{primdec} $B$GDj5A$5$l$F$$$k(B.  ここで解説されているイデアル分解については, 新しいパッケージ @samp{noro_pd.rr}
   においてより高速な実装が利用できる.
 @item  @item
 @code{primadec()}, @code{primedec()} $B$O$=$l$>$lM-M}?tBN>e$G$N%$%G%"%k$N(B  @code{primadec()}, @code{primedec} は @samp{primdec} で定義されている.
 $B=`AGJ,2r(B, $B:,4p$NAG%$%G%"%kJ,2r$r9T$&(B.  
 @item  @item
 $B0z?t$OB?9`<0%j%9%H$*$h$SJQ?t%j%9%H$G$"$k(B. $BB?9`<0$OM-M}?t78?t$N$_$,5v$5$l$k(B.  @code{primadec()}, @code{primedec()} はそれぞれ有理数体上でのイデアルの
   準素分解, 根基の素イデアル分解を行う.
 @item  @item
 @code{primadec} $B$O(B @code{[$B=`AG@.J,(B, $BIUB0AG%$%G%"%k(B]} $B$N%j%9%H$rJV$9(B.  引数は多項式リストおよび変数リストである. 多項式は有理数係数のみが許される.
 @item  @item
 @code{primadec} $B$O(B $BAG0x;R$N%j%9%H$rJV$9(B.  @code{primadec} は @code{[準素成分, 付属素イデアル]} のリストを返す.
 @item  @item
 $B7k2L$K$*$$$F(B, $BB?9`<0%j%9%H$H$7$FI=<($5$l$F$$$k3F%$%G%"%k$OA4$F(B  @code{primadec} は 素因子のリストを返す.
 $B%0%l%V%J4pDl$G$"$k(B. $BBP1~$9$k9`=g=x$O(B, $B$=$l$>$l(B  
 $BJQ?t(B @code{PRIMAORD}, @code{PRIMEORD} $B$K3JG<$5$l$F$$$k(B.  
 @item  @item
 @code{primadec} $B$O(B @code{[Shimoyama,Yokoyama]} $B$N=`AGJ,2r%"%k%4%j%:%`(B  結果において, 多項式リストとして表示されている各イデアルは全て
 $B$r<BAu$7$F$$$k(B.  グレブナ基底である. 対応する項順序は, それぞれ
   変数 @code{PRIMAORD}, @code{PRIMEORD} に格納されている.
 @item  @item
 $B$b$7AG0x;R$N$_$r5a$a$?$$$J$i(B, @code{primedec} $B$r;H$&J}$,$h$$(B.  @code{primadec} は @code{[Shimoyama,Yokoyama]} の準素分解アルゴリズム
 $B$3$l$O(B, $BF~NO%$%G%"%k$,:,4p%$%G%"%k$G$J$$>l9g$K(B, @code{primadec}  を実装している.
 $B$N7W;;$KM>J,$J%3%9%H$,I,MW$H$J$k>l9g$,$"$k$+$i$G$"$k(B.  @item
   もし素因子のみを求めたいなら, @code{primedec} を使う方がよい.
   これは, 入力イデアルが根基イデアルでない場合に, @code{primadec}
   の計算に余分なコストが必要となる場合があるからである.
 \E  \E
 \BEG  \BEG
 @item  @item
   A new package @samp{noro_pd.rr} provides more efficient functions for ideal decomposition.
   @item
 Function @code{primadec()} and @code{primedec} are defined in @samp{primdec}.  Function @code{primadec()} and @code{primedec} are defined in @samp{primdec}.
 @item  @item
 @code{primadec()}, @code{primedec()} are the function for primary  @code{primadec()}, @code{primedec()} are the function for primary
Line 3806  if an input ideal is not radical.
Line 5062  if an input ideal is not radical.
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{fctr sqfr},  @fref{fctr sqfr},
 \JP @fref{$B9`=g=x$N@_Dj(B}.  \JP @fref{項順序の設定}.
 \EG @fref{Setting term orderings}.  \EG @fref{Setting term orderings}.
 @end table  @end table
   
 \JP @node primedec_mod,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node primedec_mod,,, グレブナ基底に関する函数
 \EG @node primedec_mod,,, Functions for Groebner basis computation  \EG @node primedec_mod,,, Functions for Groebner basis computation
 @subsection @code{primedec_mod}  @subsection @code{primedec_mod}
 @findex primedec_mod  @findex primedec_mod
   
 @table @t  @table @t
 @item primedec_mod(@var{plist},@var{vlist},@var{ord},@var{mod},@var{strategy})  @item primedec_mod(@var{plist},@var{vlist},@var{ord},@var{mod},@var{strategy})
 \JP :: $B%$%G%"%k$NJ,2r(B  \JP :: イデアルの分解
 \EG :: Computes decompositions of ideals over small finite fields.  \EG :: Computes decompositions of ideals over small finite fields.
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 @itemx plist  @itemx plist
 \JP $BB?9`<0%j%9%H(B  \JP 多項式リスト
 \EG list of polynomials  \EG list of polynomials
 @item vlist  @item vlist
 \JP $BJQ?t%j%9%H(B  \JP 変数リスト
 \EG list of variables  \EG list of variables
 @item ord  @item ord
 \JP $B?t(B, $B%j%9%H$^$?$O9TNs(B  \JP 数, リストまたは行列
 \EG number, list or matrix  \EG number, list or matrix
 @item mod  @item mod
 \JP $B@5@0?t(B  \JP 正整数
 \EG positive integer  \EG positive integer
 @item strategy  @item strategy
 \JP $B@0?t(B  \JP 整数
 \EG integer  \EG integer
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 @code{primedec_mod()} $B$O(B @samp{primdec_mod}  @code{primedec_mod()} は @samp{primdec_mod}
 $B$GDj5A$5$l$F$$$k(B. @code{[Yokoyama]} $B$NAG%$%G%"%kJ,2r%"%k%4%j%:%`(B  で定義されている. @code{[Yokoyama]} の素イデアル分解アルゴリズム
 $B$r<BAu$7$F$$$k(B.  を実装している.
 @item  @item
 @code{primedec_mod()} $B$OM-8BBN>e$G$N%$%G%"%k$N(B  @code{primedec_mod()} は有限体上でのイデアルの
 $B:,4p$NAG%$%G%"%kJ,2r$r9T$$(B, $BAG%$%G%"%k$N%j%9%H$rJV$9(B.  根基の素イデアル分解を行い, 素イデアルのリストを返す.
 @item  @item
 @code{primedec_mod()} $B$O(B, GF(@var{mod}) $B>e$G$NJ,2r$rM?$($k(B.  @code{primedec_mod()} は, GF(@var{mod}) 上での分解を与える.
 $B7k2L$N3F@.J,$N@8@.85$O(B, $B@0?t78?tB?9`<0$G$"$k(B.  結果の各成分の生成元は, 整数係数多項式である.
 @item  @item
 $B7k2L$K$*$$$F(B, $BB?9`<0%j%9%H$H$7$FI=<($5$l$F$$$k3F%$%G%"%k$OA4$F(B  結果において, 多項式リストとして表示されている各イデアルは全て
 [@var{vlist},@var{ord}] $B$G;XDj$5$l$k9`=g=x$K4X$9$k%0%l%V%J4pDl$G$"$k(B.  [@var{vlist},@var{ord}] で指定される項順序に関するグレブナ基底である.
 @item  @item
 @var{strategy} $B$,(B 0 $B$G$J$$$H$-(B, incremental $B$K(B component $B$N6&DL(B  @var{strategy} が 0 でないとき, incremental に component の共通
 $BItJ,$r7W;;$9$k$3$H$K$h$k(B early termination $B$r9T$&(B. $B0lHL$K(B,  部分を計算することによる early termination を行う. 一般に,
 $B%$%G%"%k$N<!85$,9b$$>l9g$KM-8z$@$,(B, 0 $B<!85$N>l9g$J$I(B, $B<!85$,>.$5$$(B  イデアルの次元が高い場合に有効だが, 0 次元の場合など, 次元が小さい
 $B>l9g$K$O(B overhead $B$,Bg$-$$>l9g$,$"$k(B.  場合には overhead が大きい場合がある.
 @item  @item
 $B7W;;ESCf$GFbIt>pJs$r8+$?$$>l9g$K$O!"(B  計算途中で内部情報を見たい場合には、
 $BA0$b$C$F(B @code{dp_gr_print(2)} $B$r<B9T$7$F$*$1$P$h$$(B.  前もって @code{dp_gr_print(2)} を実行しておけばよい.
 \E  \E
 \BEG  \BEG
 @item  @item
Line 3909  execute @code{dp_gr_print(2)} in advance.
Line 5165  execute @code{dp_gr_print(2)} in advance.
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 @fref{modfctr},  @fref{modfctr},
 @fref{dp_gr_main dp_gr_mod_main dp_gr_f_main dp_weyl_gr_main dp_weyl_gr_mod_main dp_weyl_gr_f_main},  @fref{dp_gr_main dp_gr_mod_main dp_gr_f_main dp_weyl_gr_main dp_weyl_gr_mod_main dp_weyl_gr_f_main},
 \JP @fref{$B9`=g=x$N@_Dj(B}.  \JP @fref{項順序の設定}.
 \EG @fref{Setting term orderings},  \EG @fref{Setting term orderings},
 @fref{dp_gr_flags dp_gr_print}.  @fref{dp_gr_flags dp_gr_print}.
 @end table  @end table
   
 \JP @node bfunction bfct generic_bfct ann ann0,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node bfunction bfct generic_bfct ann ann0,,, グレブナ基底に関する函数
 \EG @node bfunction bfct generic_bfct ann ann0,,, Functions for Groebner basis computation  \EG @node bfunction bfct generic_bfct ann ann0,,, Functions for Groebner basis computation
 @subsection @code{bfunction}, @code{bfct}, @code{generic_bfct}, @code{ann}, @code{ann0}  @subsection @code{bfunction}, @code{bfct}, @code{generic_bfct}, @code{ann}, @code{ann0}
 @findex bfunction  @findex bfunction
Line 3931  execute @code{dp_gr_print(2)} in advance.
Line 5187  execute @code{dp_gr_print(2)} in advance.
 @item bfunction(@var{f})  @item bfunction(@var{f})
 @itemx bfct(@var{f})  @itemx bfct(@var{f})
 @itemx generic_bfct(@var{plist},@var{vlist},@var{dvlist},@var{weight})  @itemx generic_bfct(@var{plist},@var{vlist},@var{dvlist},@var{weight})
 \JP :: @var{b} $B4X?t$N7W;;(B  \JP :: @var{b} 関数の計算
 \EG :: Computes the global @var{b} function of a polynomial or an ideal  \EG :: Computes the global @var{b} function of a polynomial or an ideal
 @item ann(@var{f})  @item ann(@var{f})
 @itemx ann0(@var{f})  @itemx ann0(@var{f})
 \JP :: $BB?9`<0$N%Y%-$N(B annihilator $B$N7W;;(B  \JP :: 多項式のベキの annihilator の計算
 \EG :: Computes the annihilator of a power of polynomial  \EG :: Computes the annihilator of a power of polynomial
 @end table  @end table
   
 @table @var  @table @var
 @item return  @item return
 \JP $BB?9`<0$^$?$O%j%9%H(B  \JP 多項式またはリスト
 \EG polynomial or list  \EG polynomial or list
 @item f  @item f
 \JP $BB?9`<0(B  \JP 多項式
 \EG polynomial  \EG polynomial
 @item plist  @item plist
 \JP $BB?9`<0%j%9%H(B  \JP 多項式リスト
 \EG list of polynomials  \EG list of polynomials
 @item vlist dvlist  @item vlist dvlist
 \JP $BJQ?t%j%9%H(B  \JP 変数リスト
 \EG list of variables  \EG list of variables
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item @samp{bfct} $B$GDj5A$5$l$F$$$k(B.  @item @samp{bfct} で定義されている.
 @item @code{bfunction(@var{f})}, @code{bfct(@var{f})} $B$OB?9`<0(B @var{f} $B$N(B global @var{b} $B4X?t(B @code{b(s)} $B$r(B  @item @code{bfunction(@var{f})}, @code{bfct(@var{f})} は多項式 @var{f} の global @var{b} 関数 @code{b(s)} を
 $B7W;;$9$k(B. @code{b(s)} $B$O(B, Weyl $BBe?t(B @code{D} $B>e$N0lJQ?tB?9`<04D(B @code{D[s]}  計算する. @code{b(s)} は, Weyl 代数 @code{D} 上の一変数多項式環 @code{D[s]}
 $B$N85(B @code{P(x,s)} $B$,B8:_$7$F(B, @code{P(x,s)f^(s+1)=b(s)f^s} $B$rK~$?$9$h$&$J(B  の元 @code{P(x,s)} が存在して, @code{P(x,s)f^(s+1)=b(s)f^s} を満たすような
 $BB?9`<0(B @code{b(s)} $B$NCf$G(B, $B<!?t$,:G$bDc$$$b$N$G$"$k(B.  多項式 @code{b(s)} の中で, 次数が最も低いものである.
 @item @code{generic_bfct(@var{f},@var{vlist},@var{dvlist},@var{weight})}  @item @code{generic_bfct(@var{f},@var{vlist},@var{dvlist},@var{weight})}
 $B$O(B, @var{plist} $B$G@8@.$5$l$k(B @code{D} $B$N:8%$%G%"%k(B @code{I} $B$N(B,  は, @var{plist} で生成される @code{D} の左イデアル @code{I} の,
 $B%&%'%$%H(B @var{weight} $B$K4X$9$k(B global @var{b} $B4X?t$r7W;;$9$k(B.  ウェイト @var{weight} に関する global @var{b} 関数を計算する.
 @var{vlist} $B$O(B @code{x}-$BJQ?t(B, @var{vlist} $B$OBP1~$9$k(B @code{D}-$BJQ?t(B  @var{vlist} は @code{x}-変数, @var{vlist} は対応する @code{D}-変数
 $B$r=g$KJB$Y$k(B.  を順に並べる.
 @item @code{bfunction} $B$H(B @code{bfct} $B$G$OMQ$$$F$$$k%"%k%4%j%:%`$,(B  @item @code{bfunction} と @code{bfct} では用いているアルゴリズムが
 $B0[$J$k(B. $B$I$A$i$,9bB.$+$OF~NO$K$h$k(B.  異なる. どちらが高速かは入力による.
 @item @code{ann(@var{f})} $B$O(B, @code{@var{f}^s} $B$N(B annihilator ideal  @item @code{ann(@var{f})} は, @code{@var{f}^s} の annihilator ideal
 $B$N@8@.7O$rJV$9(B. @code{ann(@var{f})} $B$O(B, @code{[@var{a},@var{list}]}  の生成系を返す. @code{ann(@var{f})} は, @code{[@var{a},@var{list}]}
 $B$J$k%j%9%H$rJV$9(B. $B$3$3$G(B, @var{a} $B$O(B @var{f} $B$N(B @var{b} $B4X?t$N:G>.@0?t:,(B,  なるリストを返す. ここで, @var{a} は @var{f} の @var{b} 関数の最小整数根,
 @var{list} $B$O(B @code{ann(@var{f})} $B$N7k2L$N(B @code{s}$ $B$K(B, @var{a} $B$r(B  @var{list} は @code{ann(@var{f})} の結果の @code{s}$ に, @var{a} を
 $BBeF~$7$?$b$N$G$"$k(B.  代入したものである.
 @item $B>\:Y$K$D$$$F$O(B, [Saito,Sturmfels,Takayama] $B$r8+$h(B.  @item 詳細については, [Saito,Sturmfels,Takayama] を見よ.
 \E  \E
 \BEG  \BEG
 @item These functions are defined in @samp{bfct}.  @item These functions are defined in @samp{bfct}.
Line 4018  x*y*dt+5*z^4*dt+dz,-x^4-z*y*x-y^4-z^5+t]$
Line 5274  x*y*dt+5*z^4*dt+dz,-x^4-z*y*x-y^4-z^5+t]$
 @end example  @end example
   
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item 参照
 \EG @item References  \EG @item References
 \JP @fref{Weyl $BBe?t(B}.  \JP @fref{Weyl 代数}.
 \EG @fref{Weyl algebra}.  \EG @fref{Weyl algebra}.
 @end table  @end table
   

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.26

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>