[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.12 and 1.24

version 1.12, 2003/12/27 11:52:07 version 1.24, 2020/09/01 09:25:32
Line 1 
Line 1 
 @comment $OpenXM: OpenXM/src/asir-doc/parts/groebner.texi,v 1.11 2003/04/28 06:43:10 noro Exp $  @comment $OpenXM: OpenXM/src/asir-doc/parts/groebner.texi,v 1.23 2019/09/13 09:31:00 noro Exp $
 \BJP  \BJP
 @node $B%0%l%V%J4pDl$N7W;;(B,,, Top  @node $B%0%l%V%J4pDl$N7W;;(B,,, Top
 @chapter $B%0%l%V%J4pDl$N7W;;(B  @chapter $B%0%l%V%J4pDl$N7W;;(B
Line 15 
Line 15 
 * $B4pK\E*$JH!?t(B::  * $B4pK\E*$JH!?t(B::
 * $B7W;;$*$h$SI=<($N@)8f(B::  * $B7W;;$*$h$SI=<($N@)8f(B::
 * $B9`=g=x$N@_Dj(B::  * $B9`=g=x$N@_Dj(B::
   * Weight::
 * $BM-M}<0$r78?t$H$9$k%0%l%V%J4pDl7W;;(B::  * $BM-M}<0$r78?t$H$9$k%0%l%V%J4pDl7W;;(B::
 * $B4pDlJQ49(B::  * $B4pDlJQ49(B::
 * Weyl $BBe?t(B::  * Weyl $BBe?t(B::
   * $BB?9`<04D>e$N2C72(B::
 * $B%0%l%V%J4pDl$K4X$9$kH!?t(B::  * $B%0%l%V%J4pDl$K4X$9$kH!?t(B::
 \E  \E
 \BEG  \BEG
Line 26 
Line 28 
 * 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
Line 199  In an @b{Asir} session, it is displayed in the form li
Line 203  In an @b{Asir} session, it is displayed in the form li
 \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 $BF,9`(B (head term)  @item $BF,9`(B (head term)
   @itemx $BF,C19`<0(B (head monomial)
 @itemx $BF,78?t(B (head coefficient)  @itemx $BF,78?t(B (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  $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=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.  $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 222  the head term and the head coefficient respectively.
 \E  \E
 @end table  @end table
   
   @noindent
   ChangeLog
   @itemize @bullet
 \BJP  \BJP
   @item $BJ,;6I=8=B?9`<0$OG$0U$N%*%V%8%'%/%H$r78?t$K$b$F$k$h$&$K$J$C$?(B.
   $B$^$?2C72$N(Bk$B@.J,$NMWAG$r<!$N7A<0(B <<d0,d1,...:k>> $B$GI=8=$9$k$h$&$K$J$C$?(B (2017-08-31).
   \E
   \BEG
   @item Distributed polynomials accept objects as coefficients.
   The k-th element of a free module is expressed as <<d0,d1,...:k>> (2017-08-31).
   \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 $B%U%!%$%k$NFI$_9~$_(B,,, $B%0%l%V%J4pDl$N7W;;(B  @node $B%U%!%$%k$NFI$_9~$_(B,,, $B%0%l%V%J4pDl$N7W;;(B
 @section $B%U%!%$%k$NFI$_9~$_(B  @section $B%U%!%$%k$NFI$_9~$_(B
 \E  \E
Line 1055  beforehand, and some heuristic trial may be inevitable
Line 1097  beforehand, and some heuristic trial may be inevitable
 \E  \E
   
 \BJP  \BJP
   @node Weight ,,, $B%0%l%V%J4pDl$N7W;;(B
   @section Weight
   \E
   \BEG
   @node Weight,,, Groebner basis computation
   @section Weight
   \E
   \BJP
   $BA0@a$G>R2p$7$?9`=g=x$O(B, $B3FJQ?t$K(B weight ($B=E$_(B) $B$r@_Dj$9$k$3$H$G(B
   $B$h$j0lHLE*$J$b$N$H$J$k(B.
   \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
   $BC19`<0$NA4<!?t$r7W;;$9$k:](B, $B%G%U%)%k%H$G$O(B
   $B3FJQ?t$N;X?t$NOB$rA4<!?t$H$9$k(B. $B$3$l$O3FJQ?t$N(B weight $B$r(B 1 $B$H(B
   $B9M$($F$$$k$3$H$KAjEv$9$k(B. $B$3$NNc$G$O(B, $BBh0l(B, $BBhFs(B, $BBh;0JQ?t$N(B
   weight $B$r$=$l$>$l(B 1,2,3 $B$H;XDj$7$F$$$k(B. $B$3$N$?$a(B, @code{<<1,1,1>>}
   $B$NA4<!?t(B ($B0J2<$G$O$3$l$rC19`<0$N(B weight $B$H8F$V(B) $B$,(B @code{1*1+1*2+1*3=6} $B$H$J$k(B.
   weight $B$r@_Dj$9$k$3$H$G(B, $BF1$89`=g=x7?$N$b$H$G0[$J$k9`=g=x$,Dj5A$G$-$k(B.
   $BNc$($P(B, weight $B$r$&$^$/@_Dj$9$k$3$H$G(B, $BB?9`<0$r(B weighted homogeneous
   $B$K$9$k$3$H$,$G$-$k>l9g$,$"$k(B.
   \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
   $B3FJQ?t$KBP$9$k(B weight $B$r$^$H$a$?$b$N$r(B weight vector $B$H8F$V(B.
   $B$9$Y$F$N@.J,$,@5$G$"$j(B, $B%0%l%V%J4pDl7W;;$K$*$$$F(B, $BA4<!?t$N(B
   $BBe$o$j$KMQ$$$i$l$k$b$N$rFC$K(B sugar weight $B$H8F$V$3$H$K$9$k(B.
   sugar strategy $B$K$*$$$F(B, $BA4<!?t$NBe$o$j$K;H$o$l$k$+$i$G$"$k(B.
   $B0lJ}$G(B, $B3F@.J,$,I,$:$7$b@5$H$O8B$i$J$$(B weight vector $B$O(B,
   sugar weight $B$H$7$F@_Dj$9$k$3$H$O$G$-$J$$$,(B, $B9`=g=x$N0lHL2=$K$O(B
   $BM-MQ$G$"$k(B. $B$3$l$i$O(B, $B9TNs$K$h$k9`=g=x$N@_Dj$K$9$G$K8=$l$F(B
   $B$$$k(B. $B$9$J$o$A(B, $B9`=g=x$rDj5A$9$k9TNs$N3F9T$,(B, $B0l$D$N(B weight vector
   $B$H8+$J$5$l$k(B. $B$^$?(B, $B%V%m%C%/=g=x$O(B, $B3F%V%m%C%/$N(B
   $BJQ?t$KBP1~$9$k@.J,$N$_(B 1 $B$GB>$O(B 0 $B$N(B weight vector $B$K$h$kHf3S$r(B
   $B:G=i$K9T$C$F$+$i(B, $B3F%V%m%C%/Kh$N(B tie breaking $B$r9T$&$3$H$KAjEv$9$k(B.
   \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 $B$N@_Dj$O(B @code{dp_set_weight()} $B$G9T$&$3$H$,$G$-$k(B
   $B$,(B, $B9`=g=x$r;XDj$9$k:]$NB>$N%Q%i%a%?(B ($B9`=g=x7?(B, $BJQ?t=g=x(B) $B$H(B
   $B$^$H$a$F@_Dj$G$-$k$3$H$,K>$^$7$$(B. $B$3$N$?$a(B, $B<!$N$h$&$J7A$G$b(B
   $B9`=g=x$,;XDj$G$-$k(B.
   \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
   $B$$$:$l$NNc$K$*$$$F$b(B, $B9`=g=x$O(B option $B$H$7$F;XDj$5$l$F$$$k(B.
   $B:G=i$NNc$G$O(B @code{v} $B$K$h$jJQ?t=g=x$r(B, @code{sugarweight} $B$K$h$j(B
   sugar weight vector $B$r(B, @code{order}$B$K$h$j9`=g=x7?$r;XDj$7$F$$$k(B.
   $BFs$DL\$NNc$K$*$1$k(B @code{order} $B$N;XDj$O(B matrix order $B$HF1MM$G$"$k(B.
   $B$9$J$o$A(B, $B;XDj$5$l$?(B weight vector $B$r:8$+$i=g$K;H$C$F(B weight $B$NHf3S(B
   $B$r9T$&(B. $B;0$DL\$NNc$bF1MM$G$"$k$,(B, $B$3$3$G$O(B weight vector $B$NMWAG$r(B
   $BJQ?tKh$K;XDj$7$F$$$k(B. $B;XDj$,$J$$$b$N$O(B 0 $B$H$J$k(B. $B;0$DL\$NNc$G$O(B,
   @code{order} $B$K$h$k;XDj$G$O9`=g=x$,7hDj$7$J$$(B. $B$3$N>l9g$K$O(B,
   tie breaker $B$H$7$FA4<!?t5U<-=q<0=g=x$,<+F0E*$K@_Dj$5$l$k(B.
   $B$3$N;XDjJ}K!$O(B, @code{dp_gr_main}, @code{dp_gr_mod_main} $B$J$I(B
   $B$NAH$_9~$_4X?t$G$N$_2DG=$G$"$j(B, @code{gr} $B$J$I$N%f!<%6Dj5A4X?t(B
   $B$G$OL$BP1~$G$"$k(B.
   \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 $BM-M}<0$r78?t$H$9$k%0%l%V%J4pDl7W;;(B,,, $B%0%l%V%J4pDl$N7W;;(B  @node $BM-M}<0$r78?t$H$9$k%0%l%V%J4pDl7W;;(B,,, $B%0%l%V%J4pDl$N7W;;(B
 @section $BM-M}<0$r78?t$H$9$k%0%l%V%J4pDl7W;;(B  @section $BM-M}<0$r78?t$H$9$k%0%l%V%J4pDl7W;;(B
 \E  \E
Line 1313  Computation of the global b function is implemented as
Line 1488  Computation of the global b function is implemented as
 \E  \E
   
 \BJP  \BJP
   @node $BB?9`<04D>e$N2C72(B,,, $B%0%l%V%J4pDl$N7W;;(B
   @section $BB?9`<04D>e$N2C72(B
   \E
   \BEG
   @node Module over a polynomial ring,,, Groebner basis computation
   @section Module over a polynomial ring
   \E
   
   @noindent
   
   \BJP
   $BB?9`<04D>e$N<+M32C72$N85$O(B, $B2C72C19`<0(B te_i $B$N@~7?OB$H$7$FFbItI=8=$5$l$k(B.
   $B$3$3$G(B t $B$OB?9`<04D$NC19`<0(B, e_i $B$O<+M32C72$NI8=`4pDl$G$"$k(B. $B2C72C19`<0$O(B, $BB?9`<04D$NC19`<0(B
   $B$K0LCV(B i $B$rDI2C$7$?(B @code{<<a,b,...,c:i>>} $B$GI=$9(B. $B2C72B?9`<0(B, $B$9$J$o$A2C72C19`<0$N@~7?OB$O(B,
   $B@_Dj$5$l$F$$$k2C729`=g=x$K$7$?$,$C$F9_=g$K@0Ns$5$l$k(B. $B2C729`=g=x$K$O0J2<$N(B3$B<oN`$,$"$k(B.
   
   @table @code
   @item TOP $B=g=x(B
   
   $B$3$l$O(B, te_i > se_j $B$H$J$k$N$O(B t>s $B$^$?$O(B (t=s $B$+$D(B i<j) $B$H$J$k$h$&$J9`=g=x$G$"$k(B. $B$3$3$G(B,
   t, s $B$NHf3S$OB?9`<04D$K@_Dj$5$l$F$$$k=g=x$G9T$&(B.
   $B$3$N7?$N=g=x$O(B, @code{dp_ord([0,Ord])} $B$K(B
   $B$h$j@_Dj$9$k(B. $B$3$3$G(B, @code{Ord} $B$OB?9`<04D$N=g=x7?$G$"$k(B.
   
   @item POT $B=g=x(B
   
   $B$3$l$O(B, te_i > se_j $B$H$J$k$N$O(B i<j $B$^$?$O(B (i=j $B$+$D(B t>s) $B$H$J$k$h$&$J9`=g=x$G$"$k(B. $B$3$3$G(B,
   t, s $B$NHf3S$OB?9`<04D$K@_Dj$5$l$F$$$k=g=x$G9T$&(B.
   $B$3$N7?$N=g=x$O(B, @code{dp_ord([1,Ord])} $B$K(B
   $B$h$j@_Dj$9$k(B. $B$3$3$G(B, @code{Ord} $B$OB?9`<04D$N=g=x7?$G$"$k(B.
   
   @item Schreyer $B7?=g=x(B
   
   $B3FI8=`4pDl(B e_i $B$KBP$7(B, $BJL$N<+M32C72$N2C72C19`<0(B T_i $B$,M?$($i$l$F$$$F(B, te_i > se_j $B$H$J$k$N$O(B
   tT_i > sT_j $B$^$?$O(B (tT_i=sT_j $B$+$D(B i<j) $B$H$J$k$h$&$J9`=g=x$G$"$k(B. $B$3$3$G(B tT_i, sT_j $B$N(B
   $BHf3S$O(B, $B$3$l$i$,=jB0$9$k<+M32C72$K@_Dj$5$l$F$$$k=g=x$G9T$&(B.
   $B$3$N7?$N=g=x$O(B, $BDL>o:F5"E*$K@_Dj$5$l$k(B. $B$9$J$o$A(B, T_i $B$,=jB0$9$k<+M32C72$N=g=x$b(B Schreyer $B7?(B
   $B$G$"$k$+(B, $B$^$?$O%\%H%`$H$J$k(B TOP, POT $B$J$I$N9`=g=x$H$J$k(B.
   $B$3$N7?$N=g=x$O(B @code{dpm_set_schreyer([H_1,H_2,...])} $B$K$h$j;XDj$9$k(B. $B$3$3$G(B,
   @code{H_i=[T_1,T_2,...]} $B$O2C72C19`<0$N%j%9%H$G(B, @code{[H_2,...]} $B$GDj5A$5$l$k(B Schreyer $B7?9`=g=x$r(B
   @code{tT_i} $B$i$KE,MQ$9$k$H$$$&0UL#$G$"$k(B.
   @end table
   
   $B2C72B?9`<0$rF~NO$9$kJ}K!$H$7$F$O(B, @code{<<a,b,...:i>>} $B$J$k7A<0$GD>@\F~NO$9$kB>$K(B,
   $BB?9`<0%j%9%H$r:n$j(B, @code{dpm_ltod()} $B$K$h$jJQ49$9$kJ}K!$b$"$k(B.
   \E
   \BEG
   not yet
   \E
   
   \BJP
 @node $B%0%l%V%J4pDl$K4X$9$kH!?t(B,,, $B%0%l%V%J4pDl$N7W;;(B  @node $B%0%l%V%J4pDl$K4X$9$kH!?t(B,,, $B%0%l%V%J4pDl$N7W;;(B
 @section $B%0%l%V%J4pDl$K4X$9$kH!?t(B  @section $B%0%l%V%J4pDl$K4X$9$kH!?t(B
 \E  \E
Line 1329  Computation of the global b function is implemented as
Line 1555  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::
 * dp_td dp_sugar::  * dp_td dp_sugar::
 * dp_lcm::  * dp_lcm::
 * dp_redble::  * dp_redble::
Line 1394  Computation of the global b function is implemented as
Line 1630  Computation of the global b function is implemented as
 @item  @item
 $BI8=`%i%$%V%i%j$N(B @samp{gr} $B$GDj5A$5$l$F$$$k(B.  $BI8=`%i%$%V%i%j$N(B @samp{gr} $B$GDj5A$5$l$F$$$k(B.
 @item  @item
   gr $B$rL>A0$K4^$`4X?t$O8=:_%a%s%F$5$l$F$$$J$$(B. @code{nd_gr}$B7O$N4X?t$rBe$o$j$KMxMQ$9$Y$-$G$"$k(B(@fref{nd_gr nd_gr_trace nd_f4 nd_f4_trace nd_weyl_gr nd_weyl_gr_trace}).
   @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  $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
 @var{order} $B$K4X$9$k%0%l%V%J4pDl$r5a$a$k(B. @code{gr()}, @code{hgr()}  @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.  $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.
Line 1405  Computation of the global b function is implemented as
Line 1643  Computation of the global b function is implemented as
 strategy $B$K$h$k7W;;(B, @code{hgr()} $B$O(B trace-lifting $B$*$h$S(B  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.  $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{dgr()} $B$O(B, @code{gr()}, @code{hgr()} $B$r(B
 $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,  $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,
 $B@h$K7k2L$rJV$7$?J}$N7k2L$rJV$9(B. $B7k2L$OF10l$G$"$k$,(B, $B$I$A$i$NJ}K!$,(B  $B@h$K7k2L$rJV$7$?J}$N7k2L$rJV$9(B. $B7k2L$OF10l$G$"$k$,(B, $B$I$A$i$NJ}K!$,(B
 $B9bB.$+0lHL$K$OITL@$N$?$a(B, $B<B:]$N7P2a;~4V$rC;=L$9$k$N$KM-8z$G$"$k(B.  $B9bB.$+0lHL$K$OITL@$N$?$a(B, $B<B:]$N7P2a;~4V$rC;=L$9$k$N$KM-8z$G$"$k(B.
Line 1425  CPU $B;~4V$G$"$j(B, $B$3$NH!?t$N>l9g$O$[$H$s$IDL?.$
Line 1663  CPU $B;~4V$G$"$j(B, $B$3$NH!?t$N>l9g$O$[$H$s$IDL?.$
 @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 2168  except for lack of the argument for controlling homoge
Line 2409  except for lack of the argument for controlling homoge
 \EG @fref{Controlling Groebner basis computations}  \EG @fref{Controlling Groebner basis computations}
 @end table  @end table
   
   \JP @node nd_gr nd_gr_trace nd_f4 nd_f4_trace nd_weyl_gr nd_weyl_gr_trace,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
   \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 :: $B%0%l%V%J4pDl$N7W;;(B ($BAH$_9~$_H!?t(B)
   \EG :: Groebner basis computation (built-in functions)
   @end table
   
   @table @var
   @item return
   \JP $B%j%9%H(B
   \EG list
   @item plist  vlist
   \JP $B%j%9%H(B
   \EG list
   @item order
   \JP $B?t(B, $B%j%9%H$^$?$O9TNs(B
   \EG number, list or matrix
   @item homo
   \JP $B%U%i%0(B
   \EG flag
   @item modular
   \JP $B%U%i%0$^$?$OAG?t(B
   \EG flag or prime
   @end table
   
   \BJP
   @itemize @bullet
   @item
   $B$3$l$i$NH!?t$O(B, $B%0%l%V%J4pDl7W;;AH$_9~$_4X?t$N?7<BAu$G$"$k(B.
   @item @code{nd_gr} $B$O(B, @code{p} $B$,(B 0 $B$N$H$-M-M}?tBN>e$N(B Buchberger
   $B%"%k%4%j%:%`$r<B9T$9$k(B. @code{p} $B$,(B 2 $B0J>e$N<+A3?t$N$H$-(B, GF(p) $B>e$N(B
   Buchberger $B%"%k%4%j%:%`$r<B9T$9$k(B.
   @item @code{nd_gr_trace} $B$*$h$S(B @code{nd_f4_trace}
   $B$OM-M}?tBN>e$G(B trace $B%"%k%4%j%:%`$r<B9T$9$k(B.
   @var{p} $B$,(B 0 $B$^$?$O(B 1 $B$N$H$-(B, $B<+F0E*$KA*$P$l$?AG?t$rMQ$$$F(B, $B@.8y$9$k(B
   $B$^$G(B trace $B%"%k%4%j%:%`$r<B9T$9$k(B.
   @var{p} $B$,(B 2 $B0J>e$N$H$-(B, trace $B$O(BGF(p) $B>e$G7W;;$5$l$k(B. trace $B%"%k%4%j%:%`(B
   $B$,<:GT$7$?>l9g(B 0 $B$,JV$5$l$k(B. @var{p} $B$,Ii$N>l9g(B, $B%0%l%V%J4pDl%A%'%C%/$O(B
   $B9T$o$J$$(B. $B$3$N>l9g(B, @var{p} $B$,(B -1 $B$J$i$P<+F0E*$KA*$P$l$?AG?t$,(B,
   $B$=$l0J30$O;XDj$5$l$?AG?t$rMQ$$$F%0%l%V%J4pDl8uJd$N7W;;$,9T$o$l$k(B.
   @code{nd_f4_trace} $B$O(B, $B3FA4<!?t$K$D$$$F(B, $B$"$kM-8BBN>e$G(B F4 $B%"%k%4%j%:%`(B
   $B$G9T$C$?7k2L$r$b$H$K(B, $B$=$NM-8BBN>e$G(B 0 $B$G$J$$4pDl$rM?$($k(B S-$BB?9`<0$N$_$r(B
   $BMQ$$$F9TNs@8@.$r9T$$(B, $B$=$NA4<!?t$K$*$1$k4pDl$r@8@.$9$kJ}K!$G$"$k(B. $BF@$i$l$k(B
   $BB?9`<0=89g$O$d$O$j%0%l%V%J4pDl8uJd$G$"$j(B, @code{nd_gr_trace} $B$HF1MM$N(B
   $B%A%'%C%/$,9T$o$l$k(B.
   @item
   @code{nd_f4} $B$O(B @code{modular} $B$,(B 0 $B$N$H$-M-M}?tBN>e$N(B, @code{modular} $B$,(B
   $B%^%7%s%5%$%:AG?t$N$H$-M-8BBN>e$N(B F4 $B%"%k%4%j%:%`$r<B9T$9$k(B.
   @item
   @var{plist} $B$,B?9`<0%j%9%H$N>l9g(B, @var{plist}$B$G@8@.$5$l$k%$%G%"%k$N%0%l%V%J!<4pDl$,(B
   $B7W;;$5$l$k(B. @var{plist} $B$,B?9`<0%j%9%H$N%j%9%H$N>l9g(B, $B3FMWAG$OB?9`<04D>e$N<+M32C72$N85$H8+$J$5$l(B,
   $B$3$l$i$,@8@.$9$kItJ,2C72$N%0%l%V%J!<4pDl$,7W;;$5$l$k(B. $B8e<T$N>l9g(B, $B9`=g=x$O2C72$KBP$9$k9`=g=x$r(B
   $B;XDj$9$kI,MW$,$"$k(B. $B$3$l$O(B @var{[s,ord]} $B$N7A$G;XDj$9$k(B. @var{s} $B$,(B 0 $B$J$i$P(B TOP (Term Over Position),
   1 $B$J$i$P(B POT (Position Over Term) $B$r0UL#$7(B, @var{ord} $B$OB?9`<04D$NC19`<0$KBP$9$k9`=g=x$G$"$k(B.
   @item
   @code{nd_weyl_gr}, @code{nd_weyl_gr_trace} $B$O(B Weyl $BBe?tMQ$G$"$k(B.
   @item
   @code{f4} $B7O4X?t0J30$O$9$Y$FM-M}4X?t78?t$N7W;;$,2DG=$G$"$k(B.
   @item
   $B0lHL$K(B @code{dp_gr_main}, @code{dp_gr_mod_main} $B$h$j9bB.$G$"$k$,(B,
   $BFC$KM-8BBN>e$N>l9g82Cx$G$"$k(B.
   @item
   $B0J2<$N%*%W%7%g%s$,;XDj$G$-$k(B.
   @table @code
   @item homo
   1 $B$N$H$-(B, $B@F<!2=$r7PM3$7$F7W;;$9$k(B. (@code{nd_gr}, @code{nd_f4} $B$N$_(B)
   @item dp
   1 $B$N$H$-(B, $BJ,;6I=8=B?9`<0(B ($B2C72$N>l9g$K$O2C72B?9`<0(B) $B$r7k2L$H$7$FJV$9(B.
   @item nora
   1 $B$N$H$-(B, $B7k2L$NAj8_4JLs$r9T$o$J$$(B.
   @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 $B;2>H(B
   \EG @item References
   @fref{dp_ord},
   @fref{dp_gr_flags dp_gr_print},
   \JP @fref{$B7W;;$*$h$SI=<($N@)8f(B}.
   \EG @fref{Controlling Groebner basis computations}
   @end table
   
   \JP @node nd_gr_postproc nd_weyl_gr_postproc,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
   \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 :: $B%0%l%V%J4pDl8uJd$N%A%'%C%/$*$h$SAj8_4JLs(B
   \EG :: Check of Groebner basis candidate and inter-reduction
   @end table
   
   @table @var
   @item return
   \JP $B%j%9%H(B $B$^$?$O(B 0
   \EG list or 0
   @item plist  vlist
   \JP $B%j%9%H(B
   \EG list
   @item p
   \JP $BAG?t$^$?$O(B 0
   \EG prime or 0
   @item order
   \JP $B?t(B, $B%j%9%H$^$?$O9TNs(B
   \EG number, list or matrix
   @item check
   \JP 0 $B$^$?$O(B 1
   \EG 0 or 1
   @end table
   
   @itemize @bullet
   \BJP
   @item
   $B%0%l%V%J4pDl(B($B8uJd(B)$B$NAj8_4JLs$r9T$&(B.
   @item
   @code{nd_weyl_gr_postproc} $B$O(B Weyl $BBe?tMQ$G$"$k(B.
   @item
   @var{check=1} $B$N>l9g(B, @var{plist} $B$,(B, @var{vlist}, @var{p}, @var{order} $B$G;XDj$5$l$kB?9`<04D(B, $B9`=g=x$G%0%l%V%J!<4pDl$K$J$C$F$$$k$+(B
   $B$N%A%'%C%/$b9T$&(B.
   @item
   $B@F<!2=$7$F7W;;$7$?%0%l%V%J!<4pDl$rHs@F<!2=$7$?$b$N$rAj8_4JLs$r9T$&(B, CRT $B$G7W;;$7$?%0%l%V%J!<4pDl8uJd$N%A%'%C%/$r9T$&$J$I$N>l9g$KMQ$$$k(B.
   \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,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_gr_flags dp_gr_print,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
 \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}
Line 2298  uses the value as a flag for showing intermediate info
Line 2767  uses the value as a flag for showing intermediate info
 @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  $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.  $BJQ?t=g=x7?$r@5$7$/@_Dj$7$J$1$l$P$J$i$J$$(B.
   
   @item
   $B0z?t$,%j%9%H$N>l9g(B, $B<+M32C72$K$*$1$k9`=g=x7?$r@_Dj$9$k(B. $B0z?t$,(B@code{[0,Ord]} $B$N>l9g(B,
   $BB?9`<04D>e$G(B @code{Ord} $B$G;XDj$5$l$k9`=g=x$K4p$E$/(B TOP $B=g=x(B, $B0z?t$,(B @code{[1,Ord]} $B$N>l9g(B
   OPT $B=g=x$r@_Dj$9$k(B.
   
 \E  \E
 \BEG  \BEG
 @item  @item
Line 2325  that such polynomials were generated under the same or
Line 2800  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 2344  when functions other than top level functions are call
Line 2825  when functions other than top level functions are call
 \EG @fref{Setting term orderings}  \EG @fref{Setting term orderings}
 @end table  @end table
   
   \JP @node dp_set_weight dp_set_top_weight dp_weyl_set_weight,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
   \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 $B$N@_Dj(B, $B;2>H(B
   \EG :: Set and show the sugar weight.
   @item dp_set_top_weight([@var{weight}])
   \JP :: top weight $B$N@_Dj(B, $B;2>H(B
   \EG :: Set and show the top weight.
   @item dp_weyl_set_weight([@var{weight}])
   \JP :: weyl weight $B$N@_Dj(B, $B;2>H(B
   \EG :: Set and show the weyl weight.
   @end table
   
   @table @var
   @item return
   \JP $B%Y%/%H%k(B
   \EG a vector
   @item weight
   \JP $B@0?t$N%j%9%H$^$?$O%Y%/%H%k(B
   \EG a list or vector of integers
   @end table
   
   @itemize @bullet
   \BJP
   @item
   @code{dp_set_weight} $B$O(B sugar weight $B$r(B @var{weight} $B$K@_Dj$9$k(B. $B0z?t$,$J$$;~(B,
   $B8=:_@_Dj$5$l$F$$$k(B sugar weight $B$rJV$9(B. sugar weight $B$O@5@0?t$r@.J,$H$9$k%Y%/%H%k$G(B,
   $B3FJQ?t$N=E$_$rI=$9(B. $B<!?t$D$-=g=x$K$*$$$F(B, $BC19`<0$N<!?t$r7W;;$9$k:]$KMQ$$$i$l$k(B.
   $B@F<!2=JQ?tMQ$K(B, $BKvHx$K(B 1 $B$rIU$12C$($F$*$/$H0BA4$G$"$k(B.
   @item
   @code{dp_set_top_weight} $B$O(B top weight $B$r(B @var{weight} $B$K@_Dj$9$k(B. $B0z?t$,$J$$;~(B,
   $B8=:_@_Dj$5$l$F$$$k(B top weight $B$rJV$9(B. top weight $B$,@_Dj$5$l$F$$$k$H$-(B,
   $B$^$:(B top weight $B$K$h$kC19`<0Hf3S$r@h$K9T$&(B. tie breaker $B$H$7$F8=:_@_Dj$5$l$F$$$k(B
   $B9`=g=x$,MQ$$$i$l$k$,(B, $B$3$NHf3S$K$O(B top weight $B$OMQ$$$i$l$J$$(B.
   
   @item
   @code{dp_weyl_set_weight} $B$O(B weyl weight $B$r(B @var{weight} $B$K@_Dj$9$k(B. $B0z?t$,$J$$;~(B,
   $B8=:_@_Dj$5$l$F$$$k(B weyl weight $B$rJV$9(B. weyl weight w $B$r@_Dj$9$k$H(B,
   $B9`=g=x7?(B 11 $B$G$N7W;;$K$*$$$F(B, (-w,w) $B$r(B top weight, tie breaker $B$r(B graded reverse lex
   $B$H$7$?9`=g=x$,@_Dj$5$l$k(B.
   \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 $B;2>H(B
   \EG @item References
   @fref{Weight}
   @end table
   
   
 \JP @node dp_ptod,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_ptod,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
 \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}
Line 2403  the coefficient field.
Line 2957  the coefficient field.
 @fref{dp_ord}.  @fref{dp_ord}.
 @end table  @end table
   
   \JP @node dpm_dptodpm,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
   \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 :: $BJ,;6I=8=B?9`<0$r2C72B?9`<0$KJQ49$9$k(B.
   \EG :: Converts a distributed polynomial into a module polynomial.
   @end table
   
   @table @var
   @item return
   \JP $B2C72B?9`<0(B
   \EG module polynomial
   @item dpoly
   \JP $BJ,;6I=8=B?9`<0(B
   \EG distributed polynomial
   @item pos
   \JP $B@5@0?t(B
   \EG positive integer
   @end table
   
   @itemize @bullet
   \BJP
   @item
   $BJ,;6I=8=B?9`<0$r2C72B?9`<0$KJQ49$9$k(B.
   @item
   $B=PNO$O2C72B?9`<0(B @code{dpoly e_pos} $B$G$"$k(B.
   \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 $B;2>H(B
   \EG @item References
   @fref{dp_ptod},
   @fref{dp_ord}.
   @end table
   
   \JP @node dpm_ltod,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
   \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 :: $BB?9`<0%j%9%H$r2C72B?9`<0$KJQ49$9$k(B.
   \EG :: Converts a list of polynomials into a module polynomial.
   @end table
   
   @table @var
   @item return
   \JP $B2C72B?9`<0(B
   \EG module polynomial
   @item plist
   \JP $BB?9`<0%j%9%H(B
   \EG list of polynomials
   @item vlist
   \JP $BJQ?t%j%9%H(B
   \EG list of variables
   @end table
   
   @itemize @bullet
   \BJP
   @item
   $BB?9`<0%j%9%H$r2C72B?9`<0$KJQ49$9$k(B.
   @item
   @code{[p1,...,pm]} $B$O(B @code{p1 e1+...+pm em} $B$KJQ49$5$l$k(B.
   \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 $B;2>H(B
   \EG @item References
   @fref{dpm_dtol},
   @fref{dp_ord}.
   @end table
   
   \JP @node dpm_dtol,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
   \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 :: $B2C72B?9`<0$rB?9`<0%j%9%H$KJQ49$9$k(B.
   \EG :: Converts a module polynomial into a list of polynomials.
   @end table
   
   @table @var
   @item return
   \JP $BB?9`<0%j%9%H(B
   \EG list of polynomials
   @item poly
   \JP $B2C72B?9`<0(B
   \EG module polynomial
   @item vlist
   \JP $BJQ?t%j%9%H(B
   \EG list of variables
   @end table
   
   @itemize @bullet
   \BJP
   @item
   $B2C72B?9`<0$rB?9`<0%j%9%H$KJQ49$9$k(B.
   @item
   @code{p1 e1+...+pm em} $B$O(B @code{[p1,...,pm]} $B$KJQ49$5$l$k(B.
   @item
   $B=PNO%j%9%H$ND9$5$O(B, @code{poly} $B$K4^$^$l$kI8=`4pDl$N:GBg%$%s%G%C%/%9$H$J$k(B.
   \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 $B;2>H(B
   \EG @item References
   @fref{dpm_ltod},
   @fref{dp_ord}.
   @end table
   
 \JP @node dp_dtop,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_dtop,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
 \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}
Line 2526  converting the coefficients into elements of a finite 
Line 3245  converting the coefficients into elements of a finite 
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item $B;2>H(B
 \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
Line 2617  These are used internally in @code{hgr()} etc.
Line 3336  These are used internally in @code{hgr()} etc.
 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 :: $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.
 \BEG  \BEG
 :: Converts a distributed polynomial @var{poly} with rational function  :: Converts a distributed polynomial @var{poly} with rational function
Line 2670  polynomial contents included in the coefficients are n
Line 3389  polynomial contents included in the coefficients are n
 @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,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
 \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})
   @item dp_weyl_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)  \JP :: $BJ,;6I=8=B?9`<0$N@55,7A$r5a$a$k(B. ($B7k2L$ODj?tG\$5$l$F$$$k2DG=@-$"$j(B)
   
 \BEG  \BEG
Line 2722  is returned in such a list as @code{[numerator, denomi
Line 3445  is returned in such a list as @code{[numerator, denomi
 @item  @item
 $BJ,;6I=8=B?9`<0(B @var{dpoly} $B$N@55,7A$r5a$a$k(B.  $BJ,;6I=8=B?9`<0(B @var{dpoly} $B$N@55,7A$r5a$a$k(B.
 @item  @item
   $BL>A0$K(B weyl $B$r4^$`4X?t$O%o%$%kBe?t$K$*$1$k@55,7A7W;;$r9T$&(B. $B0J2<$N@bL@$O(B weyl $B$r4^$`$b$N$KBP$7$F$bF1MM$K@.N)$9$k(B.
   @item
 @code{dp_nf_mod()}, @code{dp_true_nf_mod()} $B$NF~NO$O(B, @code{dp_mod()} $B$J$I(B  @code{dp_nf_mod()}, @code{dp_true_nf_mod()} $B$NF~NO$O(B, @code{dp_mod()} $B$J$I(B
 $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.  $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
Line 2754  is returned in such a list as @code{[numerator, denomi
Line 3479  is returned in such a list as @code{[numerator, denomi
 @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 2824  u4^2+(6*u3+2*u2+6*u1-2)*u4+9*u3^2+(6*u2+18*u1-6)*u3+u2
Line 3552  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 dpm_nf dpm_nf_and_quotient,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
   \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 :: $B2C72B?9`<0$N@55,7A$r5a$a$k(B. ($B7k2L$ODj?tG\$5$l$F$$$k2DG=@-$"$j(B)
   
   \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 :: $B2C72B?9`<0$N@55,7A$H>&$r5a$a$k(B.
   \BEG
   :: Computes the normal form of a module polynomial and the quotient.
   \E
   @end table
   
   @table @var
   @item return
   \JP @code{dpm_nf()} : $B2C72B?9`<0(B, @code{dpm_nf_and_quotient()} : $B%j%9%H(B
   \EG @code{dpm_nf()} : module polynomial, @code{dpm_nf_and_quotient()} : list
   @item indexlist
   \JP $B%j%9%H(B
   \EG list
   @item dpoly
   \JP $B2C72B?9`<0(B
   \EG module polynomial
   @item dpolyarray
   \JP $BG[Ns(B
   \EG array of module polynomial
   @end table
   
   @itemize @bullet
   \BJP
   @item
   $B2C72B?9`<0(B @var{dpoly} $B$N@55,7A$r5a$a$k(B.
   @item
   $B7k2L$KM-M}?t(B, $BM-M}<0$,4^$^$l$k$N$rHr$1$k$?$a(B, @code{dpm_nf()} $B$O(B
   $B??$NCM$NDj?tG\$NCM$rJV$9(B.
   @item
   @var{dpolyarray} $B$O2C72B?9`<0$rMWAG$H$9$k%Y%/%H%k(B,
   @var{indexlist} $B$O@55,2=7W;;$KMQ$$$k(B @var{dpolyarray} $B$NMWAG$N%$%s%G%C%/%9(B
   @item
   @var{indexlist} $B$,M?$($i$l$F$$$k>l9g(B, @var{dpolyarray} $B$NCf$G(B, @var{indexlist} $B$G;XDj$5$l$?$b$N$N$_$,(B, $BA0$NJ}$+$iM%@hE*$K;H$o$l$k(B.
   @var{indexlist} $B$,M?$($i$l$F$$$J$$>l9g$K$O(B, @var{dpolyarray} $B$NCf$NA4$F$NB?9`<0$,A0$NJ}$+$iM%@hE*$K;H$o$l$k(B.
   @item
   @code{dpm_nf_and_quotient()} $B$O(B,
   @code{[@var{nm},@var{dn},@var{quo}]} $B$J$k7A$N%j%9%H$rJV$9(B.
   $B$?$@$7(B, @var{nm} $B$O78?t$KJ,?t$r4^$^$J$$2C72B?9`<0(B, @var{dn} $B$O(B
   $B?t$^$?$OB?9`<0$G(B @var{nm}/@var{dn} $B$,??$NCM$H$J$k(B.
   @var{quo} $B$O=|;;$N>&$rI=$9G[Ns$G(B, @var{dn}@var{dpoly}=@var{nm}+@var{quo[0]dpolyarray[0]+...} $B$,@.$jN)$D(B.
   $B$N%j%9%H(B.
   @item
   @var{fullreduce} $B$,(B 0 $B$G$J$$$H$-A4$F$N9`$KBP$7$F4JLs$r9T$&(B. @var{fullreduce}
   $B$,(B 0 $B$N$H$-F,9`$N$_$KBP$7$F4JLs$r9T$&(B.
   \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 $B;2>H(B
   \EG @item References
   @fref{dpm_sp},
   @fref{dp_ord}.
   @end table
   
   
 \JP @node dp_hm dp_ht dp_hc dp_rest,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_hm dp_ht dp_hc dp_rest,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
 \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}
Line 2898  The next equations hold for a distributed polynomial @
Line 3746  The next equations hold for a distributed polynomial @
 +(-490)*<<0,0,0>>  +(-490)*<<0,0,0>>
 @end example  @end example
   
   \JP @node dpm_hm dpm_ht dpm_hc dpm_hp dpm_rest,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
   \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 :: $B2C72B?9`<0$NF,C19`<0$r<h$j=P$9(B.
   \EG :: Gets the head monomial of a module polynomial.
   @item dpm_ht(@var{dpoly})
   \JP :: $B2C72B?9`<0$NF,9`$r<h$j=P$9(B.
   \EG :: Gets the head term of a module polynomial.
   @item dpm_hc(@var{dpoly})
   \JP :: $B2C72B?9`<0$NF,78?t$r<h$j=P$9(B.
   \EG :: Gets the head coefficient of a module polynomial.
   @item dpm_hp(@var{dpoly})
   \JP :: $B2C72B?9`<0$NF,0LCV$r<h$j=P$9(B.
   \EG :: Gets the head position of a module polynomial.
   @item dpm_rest(@var{dpoly})
   \JP :: $B2C72B?9`<0$NF,C19`<0$r<h$j=|$$$?;D$j$rJV$9(B.
   \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()} : $B2C72B?9`<0(B,
   @code{dp_hc()} : $B?t$^$?$OB?9`<0(B
   @item dpoly
   $B2C72B?9`<0(B
   \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
   $B$3$l$i$O(B, $B2C72B?9`<0$N3FItJ,$r<h$j=P$9$?$a$NH!?t$G$"$k(B.
   @item
   @code{dpm_hc()} $B$O(B, @code{dpm_hm()} $B$N(B, $BI8=`4pDl$K4X$9$k78?t$G$"$kC19`<0$rJV$9(B.
   $B%9%+%i!<78?t$r<h$j=P$9$K$O(B, $B$5$i$K(B @code{dp_hc()} $B$r<B9T$9$k(B.
   @item
   @code{dpm_hp()} $B$O(B, $BF,2C72C19`<0$K4^$^$l$kI8=`4pDl$N%$%s%G%C%/%9$rJV$9(B.
   \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,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_td dp_sugar,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
 \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}
Line 3059  Used for finding candidate terms at reduction of polyn
Line 3989  Used for finding candidate terms at reduction of polyn
 @fref{dp_red dp_red_mod}.  @fref{dp_red dp_red_mod}.
 @end table  @end table
   
   \JP @node dpm_redble,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
   \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 :: $BF,9`$I$&$7$,@0=|2DG=$+$I$&$+D4$Y$k(B.
   \EG :: Checks whether one head term is divisible by the other head term.
   @end table
   
   @table @var
   @item return
   \JP $B@0?t(B
   \EG integer
   @item dpoly1  dpoly2
   \JP $B2C72B?9`<0(B
   \EG module polynomial
   @end table
   
   @itemize @bullet
   \BJP
   @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
   0 $B$rJV$9(B.
   @item
   $BB?9`<0$N4JLs$r9T$&:](B, $B$I$N9`$r4JLs$G$-$k$+$rC5$9$N$KMQ$$$k(B.
   \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,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node dp_subd,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
 \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}
Line 3426  make the result integral.
Line 4393  make the result integral.
 \EG @item References  \EG @item References
 @fref{dp_mod dp_rat}.  @fref{dp_mod dp_rat}.
 @end table  @end table
   
   \JP @node dpm_sp,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
   \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-$BB?9`<0$N7W;;(B
   \EG :: Computation of an S-polynomial
   @end table
   
   @table @var
   @item return
   \JP $B2C72B?9`<0$^$?$O%j%9%H(B
   \EG module polynomial or list
   @item dpoly1  dpoly2
   \JP $B2C72B?9`<0(B
   \EG module polynomial
   \JP $BJ,;6I=8=B?9`<0(B
   @end table
   
   @itemize @bullet
   \BJP
   @item
   @var{dpoly1}, @var{dpoly2} $B$N(B S-$BB?9`<0$r7W;;$9$k(B.
   @item
   $B%*%W%7%g%s(B @var{coef=1} $B$,;XDj$5$l$F$$$k>l9g(B, @code{[S,t1,t2]} $B$J$k%j%9%H$rJV$9(B.
   $B$3$3$G(B, @code{t1}, @code{t2} $B$O(BS-$BB?9`<0$r:n$k:]$N78?tC19`<0$G(B @code{S=t1 dpoly1-t2 dpoly2}
   $B$rK~$?$9(B.
   \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 p_nf p_nf_mod p_true_nf p_true_nf_mod,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node p_nf p_nf_mod p_true_nf p_true_nf_mod,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
 \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}
Line 3535  refer to @code{dp_true_nf()} and @code{dp_true_nf_mod(
Line 4542  refer to @code{dp_true_nf()} and @code{dp_true_nf_mod(
 @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,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.24

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