[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.3 and 1.13

version 1.3, 1999/12/24 04:38:04 version 1.13, 2004/09/13 09:23:30
Line 1 
Line 1 
 @comment $OpenXM: OpenXM/src/asir-doc/parts/groebner.texi,v 1.2 1999/12/21 02:47:31 noro Exp $  @comment $OpenXM: OpenXM/src/asir-doc/parts/groebner.texi,v 1.12 2003/12/27 11:52:07 takayama 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::
 * $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 25 
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::
 * Functions for Groebner basis computation::  * Functions for Groebner basis computation::
 \E  \E
 @end menu  @end menu
Line 228  the head term and the head coefficient respectively.
Line 232  the head term and the head coefficient respectively.
 @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  $B%0%l%V%J4pDl$r7W;;$9$k$?$a$N4pK\E*$JH!?t$O(B @code{dp_gr_main()} $B$*$h$S(B
 @code{dp_gr_mod_main()} $B$J$k(B 2 $B$D$NAH$_9~$_H!?t$G$"$k$,(B, $BDL>o$O(B, $B%Q%i%a%?(B  @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
 $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@_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  $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
 $B$_9~$`$3$H$K$h$j;HMQ2DG=$H$J$k(B. @samp{gr} $B$O(B, @b{Asir} $B$NI8=`(B  $B$_9~$`$3$H$K$h$j;HMQ2DG=$H$J$k(B. @samp{gr} $B$O(B, @b{Asir} $B$NI8=`(B
 $B%i%$%V%i%j%G%#%l%/%H%j$KCV$+$l$F$$$k(B. $B$h$C$F(B, $B4D6-JQ?t(B @code{ASIR_LIBDIR}  $B%i%$%V%i%j%G%#%l%/%H%j$KCV$+$l$F$$$k(B.
 $B$rFC$K0[$J$k%Q%9$K@_Dj$7$J$$8B$j(B, $B%U%!%$%kL>$N$_$GFI$_9~$`$3$H$,$G$-$k(B.  
 \E  \E
 \BEG  \BEG
 Facilities for computing Groebner bases are provided not by built-in  Facilities for computing Groebner bases are
 functions but by a set of user functions written in @b{Asir}.  @code{dp_gr_main()}, @code{dp_gr_mod_main()}and @code{dp_gr_f_main()}.
 The set of functions is provided as a file (sometimes called package),  To call these functions,
 named @samp{gr}.  it is necessary to set several parameters correctly and it is convenient
   to use a set of interface functions provided in the library file
   @samp{gr}.
 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}.  Therefore, it is loaded simply by specifying  directory of @b{Asir}.
 its file name, unless the environment variable @code{ASIR_LIBDIR}  
 is set to a non-standard one.  
 \E  \E
   
 @example  @example
Line 350  These parameters can be set and examined by a built-in
Line 354  These parameters can be set and examined by a built-in
   
 @example  @example
 [100] dp_gr_flags();  [100] dp_gr_flags();
 [Demand,0,NoSugar,0,NoCriB,0,NoGC,0,NoMC,0,NoRA,0,NoGCD,0,Top,0,ShowMag,1,  [Demand,0,NoSugar,0,NoCriB,0,NoGC,0,NoMC,0,NoRA,0,NoGCD,0,Top,0,
 Print,1,Stat,0,Reverse,0,InterReduce,0,Multiple,0]  ShowMag,1,Print,1,Stat,0,Reverse,0,InterReduce,0,Multiple,0]
 [101]  [101]
 @end example  @end example
   
Line 447  If `on', various informations during a Groebner basis 
Line 451  If `on', various informations during a Groebner basis 
 displayed.  displayed.
 \E  \E
   
   @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.
   \BEG
   If `on' and Print is `off', short information during a Groebner basis computation is
   displayed.
   \E
   
 @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 $B$G(B @code{Print} $B$,(B off $B$J$i$P(B, @code{Print} $B$,(B on $B$N$H$-I=<($5(B
Line 469  is shown after every normal computation.  After comlet
Line 480  is shown after every normal computation.  After comlet
 computation the maximal value among the sums is shown.  computation the maximal value among the sums is shown.
 \E  \E
   
 @item Multiple  @item Content
   @itemx Multiple
 \BJP  \BJP
 0 $B$G$J$$@0?t$N;~(B, $BM-M}?t>e$N@55,7A7W;;$K$*$$$F(B, $B78?t$N%S%C%HD9$NOB$,(B  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
 @code{Multiple} $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} $BG\$K$J$k$4$H$K78?tA4BN$N(B GCD $B$,7W;;$5$l(B, $B$=$N(B GCD $B$G(B
 $B3d$C$?B?9`<0$r4JLs$9$k(B. @code{Multiple} $B$,(B 1 $B$J$i$P(B, $B4JLs$9$k$4$H$K(B  $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
 GCD $B7W;;$,9T$o$l0lHL$K$O8zN($,0-$/$J$k$,(B, @code{Multiple} $B$r(B 2 $BDxEY(B  GCD $B7W;;$,9T$o$l0lHL$K$O8zN($,0-$/$J$k$,(B, @code{Content} $B$r(B 2 $BDxEY(B
 $B$H$9$k$H(B, $B5pBg$J@0?t$,78?t$K8=$l$k>l9g(B, $B8zN($,NI$/$J$k>l9g$,$"$k(B.  $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.
 \E  \E
 \BEG  \BEG
 If a non-zero integer, in a normal form computation  If a non-zero rational number, in a normal form computation
 over the rationals, the integer content of the polynomial being  over the rationals, the integer content of the polynomial being
 reduced is removed when its magnitude becomes @code{Multiple} times  reduced is removed when its magnitude becomes @code{Content} times
 larger than a registered value, which is set to the magnitude of the  larger than a registered value, which is set to the magnitude of the
 input polynomial. After each content removal the registered value is  input polynomial. After each content removal the registered value is
 set to the magnitude of the resulting polynomial. @code{Multiple} is  set to the magnitude of the resulting polynomial. @code{Content} is
 equal to 1, the simiplification is done after every normal form computation.  equal to 1, the simiplification is done after every normal form computation.
 It is empirically known that it is often efficient to set @code{Multiple} to 2  It is empirically known that it is often efficient to set @code{Content} to 2
 for the case where large integers appear during the computation.  for the case where large integers appear during the computation.
   An integer value can be set by the keyword @code{Multiple} for
   backward compatibility.
 \E  \E
   
 @item Demand  @item Demand
Line 530  membercheck
Line 545  membercheck
 (0,0)(0,0)(0,0)(0,0)  (0,0)(0,0)(0,0)(0,0)
 gbcheck total 8 pairs  gbcheck total 8 pairs
 ........  ........
 UP=(0,0)SP=(0,0)SPM=(0,0)NF=(0,0)NFM=(0.010002,0)ZNFM=(0.010002,0)PZ=(0,0)  UP=(0,0)SP=(0,0)SPM=(0,0)NF=(0,0)NFM=(0.010002,0)ZNFM=(0.010002,0)
 NP=(0,0)MP=(0,0)RA=(0,0)MC=(0,0)GC=(0,0)T=40,B=0 M=8 F=6 D=12 ZR=5 NZR=6  PZ=(0,0)NP=(0,0)MP=(0,0)RA=(0,0)MC=(0,0)GC=(0,0)T=40,B=0 M=8 F=6
 Max_mag=6  D=12 ZR=5 NZR=6 Max_mag=6
 [94]  [94]
 @end example  @end example
   
Line 992  time as well as the choice of types of term orderings.
Line 1007  time as well as the choice of types of term orderings.
 -40*t^8+70*t^7+252*t^6+30*t^5-140*t^4-168*t^3+2*t^2-12*t+16)*z^2*y  -40*t^8+70*t^7+252*t^6+30*t^5-140*t^4-168*t^3+2*t^2-12*t+16)*z^2*y
 +(-12*t^16+72*t^13-28*t^11-180*t^10+112*t^8+240*t^7+28*t^6-127*t^5  +(-12*t^16+72*t^13-28*t^11-180*t^10+112*t^8+240*t^7+28*t^6-127*t^5
 -167*t^4-55*t^3+30*t^2+58*t-15)*z^4,  -167*t^4-55*t^3+30*t^2+58*t-15)*z^4,
 (y+t^2*z^2)*x+y^7+(20*t^2+6*t+1)*y^2+(-t^17+6*t^14-21*t^12-15*t^11+84*t^9  (y+t^2*z^2)*x+y^7+(20*t^2+6*t+1)*y^2+(-t^17+6*t^14-21*t^12-15*t^11
 +20*t^8-35*t^7-126*t^6-15*t^5+70*t^4+84*t^3-t^2+5*t-9)*z^2*y+(6*t^16-36*t^13  +84*t^9+20*t^8-35*t^7-126*t^6-15*t^5+70*t^4+84*t^3-t^2+5*t-9)*z^2*y
 +14*t^11+90*t^10-56*t^8-120*t^7-14*t^6+64*t^5+84*t^4+27*t^3-16*t^2-30*t+7)*z^4,  +(6*t^16-36*t^13+14*t^11+90*t^10-56*t^8-120*t^7-14*t^6+64*t^5+84*t^4
 (t^3-1)*x-y^6+(-6*t^13+24*t^10-20*t^8-36*t^7+40*t^5+24*t^4-6*t^3-20*t^2-6*t-1)*y  +27*t^3-16*t^2-30*t+7)*z^4,
 +(t^17-6*t^14+9*t^12+15*t^11-36*t^9-20*t^8-5*t^7+54*t^6+15*t^5+10*t^4-36*t^3  (t^3-1)*x-y^6+(-6*t^13+24*t^10-20*t^8-36*t^7+40*t^5+24*t^4-6*t^3-20*t^2
 -11*t^2-5*t+9)*z^2,  -6*t-1)*y+(t^17-6*t^14+9*t^12+15*t^11-36*t^9-20*t^8-5*t^7+54*t^6+15*t^5
   +10*t^4-36*t^3-11*t^2-5*t+9)*z^2,
 -y^8-8*t*y^3+16*z^2*y^2+(-8*t^16+48*t^13-56*t^11-120*t^10+224*t^8+160*t^7  -y^8-8*t*y^3+16*z^2*y^2+(-8*t^16+48*t^13-56*t^11-120*t^10+224*t^8+160*t^7
 -56*t^6-336*t^5-112*t^4+112*t^3+224*t^2+24*t-56)*z^4*y+(t^24-8*t^21+20*t^19  -56*t^6-336*t^5-112*t^4+112*t^3+224*t^2+24*t-56)*z^4*y+(t^24-8*t^21
 +28*t^18-120*t^16-56*t^15+14*t^14+300*t^13+70*t^12-56*t^11-400*t^10-84*t^9  +20*t^19+28*t^18-120*t^16-56*t^15+14*t^14+300*t^13+70*t^12-56*t^11
 +84*t^8+268*t^7+84*t^6-56*t^5-63*t^4-36*t^3+46*t^2-12*t+1)*z,  -400*t^10-84*t^9+84*t^8+268*t^7+84*t^6-56*t^5-63*t^4-36*t^3+46*t^2
 2*t*y^5+z*y^2+(-2*t^11+8*t^8-20*t^6-12*t^5+40*t^3+8*t^2-10*t-20)*z^3*y+8*t^14  -12*t+1)*z,2*t*y^5+z*y^2+(-2*t^11+8*t^8-20*t^6-12*t^5+40*t^3+8*t^2
 -32*t^11+48*t^8-t^7-32*t^5-6*t^4+9*t^2-t,  -10*t-20)*z^3*y+8*t^14-32*t^11+48*t^8-t^7-32*t^5-6*t^4+9*t^2-t,
 -z*y^3+(t^7-2*t^4+3*t^2+t)*y+(-2*t^6+4*t^3+2*t-2)*z^2,  -z*y^3+(t^7-2*t^4+3*t^2+t)*y+(-2*t^6+4*t^3+2*t-2)*z^2,
 2*t^2*y^3+z^2*y^2+(-2*t^5+4*t^2-6)*z^4*y+(4*t^8-t^7-8*t^5+2*t^4-4*t^3+5*t^2-t)*z,  2*t^2*y^3+z^2*y^2+(-2*t^5+4*t^2-6)*z^4*y
   +(4*t^8-t^7-8*t^5+2*t^4-4*t^3+5*t^2-t)*z,
 z^3*y^2+2*t^3*y+(-t^7+2*t^4+t^2-t)*z^2,  z^3*y^2+2*t^3*y+(-t^7+2*t^4+t^2-t)*z^2,
 -t*z*y^2-2*z^3*y+t^8-2*t^5-t^3+t^2,  -t*z*y^2-2*z^3*y+t^8-2*t^5-t^3+t^2,
 -t^3*y^2-2*t^2*z^2*y+(t^6-2*t^3-t+1)*z^4,  -t^3*y^2-2*t^2*z^2*y+(t^6-2*t^3-t+1)*z^4,z^5-t^4]
 z^5-t^4]  
 [93] gr(B,[t,z,y,x],2);  [93] gr(B,[t,z,y,x],2);
 [x^10-t,x^8-z,x^31-x^6-x-y]  [x^10-t,x^8-z,x^31-x^6-x-y]
 @end example  @end example
Line 1041  beforehand, and some heuristic trial may be inevitable
Line 1057  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 orders 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 orders can be set under a term
   order type. For example, 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
 @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 1200  Refer to the sections for each functions.
Line 1294  Refer to the sections for each functions.
 \E  \E
   
 \BJP  \BJP
   @node Weyl $BBe?t(B,,, $B%0%l%V%J4pDl$N7W;;(B
   @section Weyl $BBe?t(B
   \E
   \BEG
   @node Weyl algebra,,, Groebner basis computation
   @section Weyl algebra
   \E
   
   @noindent
   
   \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
   $B%0%l%V%J4pDl7W;;$,(B Risa/Asir $B$K<BAu$5$l$F$$$k(B.
   
   $BBN(B @code{K} $B>e$N(B @code{n} $B<!85(B Weyl $BBe?t(B
   @code{D=K<x1,@dots{},xn,D1,@dots{},Dn>} $B$O(B
   \E
   
   \BEG
   So far we have explained Groebner basis computation in
   commutative polynomial rings. However Groebner basis can be
   considered in more general non-commutative rings.
   Weyl algebra is one of such rings and
   Risa/Asir implements fundamental operations
   in Weyl algebra and Groebner basis computation in Weyl algebra.
   
   The @code{n} dimensional Weyl algebra over a field @code{K},
   @code{D=K<x1,@dots{},xn,D1,@dots{},Dn>} is a non-commutative
   algebra which has the following fundamental relations:
   \E
   
   @code{xi*xj-xj*xi=0}, @code{Di*Dj-Dj*Di=0}, @code{Di*xj-xj*Di=0} (@code{i!=j}),
   @code{Di*xi-xi*Di=1}
   
   \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
   $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{D} $B$N85$O(B, @code{x1^i1*@dots{}*xn^in*D1^j1*@dots{}*Dn^jn} $B$J$kC19`(B
   $B<0$N(B @code{K} $B@~7A7k9g$H$7$F=q$-I=$9$3$H$,$G$-$k(B.
   Risa/Asir $B$K$*$$$F$O(B, $B$3$NC19`<0$r(B, $B2D49$JB?9`<0$HF1MM$K(B
   @code{<<i1,@dots{},in,j1,@dots{},jn>>} $B$GI=$9(B. $B$9$J$o$A(B, @code{D} $B$N85$b(B
   $BJ,;6I=8=B?9`<0$H$7$FI=$5$l$k(B. $B2C8:;;$O(B, $B2D49$N>l9g$HF1MM$K(B, @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
   $B$K$h$j<B9T$9$k(B.
   \E
   
   \BEG
   @code{D} is the ring of differential operators whose coefficients
   are polynomials in @code{K[x1,@dots{},xn]} and
   @code{Di} denotes the differentiation with respect to  @code{xi}.
   According to the commutation relation,
   elements of @code{D} can be represented as a @code{K}-linear combination
   of monomials @code{x1^i1*@dots{}*xn^in*D1^j1*@dots{}*Dn^jn}.
   In Risa/Asir, this type of monomial is represented
   by @code{<<i1,@dots{},in,j1,@dots{},jn>>} as in the case of commutative
   polynomial.
   That is, elements of @code{D} are represented by distributed polynomials.
   Addition and subtraction can be done by @code{+}, @code{-},
   but multiplication is done by calling @code{dp_weyl_mul()} because of
   the non-commutativity of @code{D}.
   \E
   
   @example
   [0] A=<<1,2,2,1>>;
   (1)*<<1,2,2,1>>
   [1] B=<<2,1,1,2>>;
   (1)*<<2,1,1,2>>
   [2] A*B;
   (1)*<<3,3,3,3>>
   [3] dp_weyl_mul(A,B);
   (1)*<<3,3,3,3>>+(1)*<<3,2,3,2>>+(4)*<<2,3,2,3>>+(4)*<<2,2,2,2>>
   +(2)*<<1,3,1,3>>+(2)*<<1,2,1,2>>
   @end example
   
   \BJP
   $B%0%l%V%J4pDl7W;;$K$D$$$F$b(B, Weyl $BBe?t@lMQ$N4X?t$H$7$F(B,
   $B<!$N4X?t$,MQ0U$7$F$"$k(B.
   \E
   \BEG
   The following functions are avilable for Groebner basis computation
   in Weyl algebra:
   \E
   @code{dp_weyl_gr_main()},
   @code{dp_weyl_gr_mod_main()},
   @code{dp_weyl_gr_f_main()},
   @code{dp_weyl_f4_main()},
   @code{dp_weyl_f4_mod_main()}.
   \BJP
   $B$^$?(B, $B1~MQ$H$7$F(B, global b $B4X?t$N7W;;$,<BAu$5$l$F$$$k(B.
   \E
   \BEG
   Computation of the global b function is implemented as an application.
   \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 1214  Refer to the sections for each functions.
Line 1407  Refer to the sections for each functions.
 * lex_hensel_gsl tolex_gsl tolex_gsl_d::  * lex_hensel_gsl tolex_gsl tolex_gsl_d::
 * gr_minipoly minipoly::  * gr_minipoly minipoly::
 * tolexm minipolym::  * tolexm minipolym::
 * dp_gr_main dp_gr_mod_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_f4_main dp_f4_mod_main dp_weyl_f4_main dp_weyl_f4_mod_main::
 * dp_gr_flags dp_gr_print::  * dp_gr_flags dp_gr_print::
 * dp_ord::  * dp_ord::
 * dp_ptod::  * dp_ptod::
Line 1240  Refer to the sections for each functions.
Line 1433  Refer to the sections for each functions.
 * dp_vtoe dp_etov::  * dp_vtoe dp_etov::
 * lex_hensel_gsl tolex_gsl tolex_gsl_d::  * lex_hensel_gsl tolex_gsl tolex_gsl_d::
 * primadec primedec::  * primadec primedec::
   * primedec_mod::
   * 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,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
Line 1263  Refer to the sections for each functions.
Line 1458  Refer to the sections for each functions.
 @item return  @item return
 \JP $B%j%9%H(B  \JP $B%j%9%H(B
 \EG list  \EG list
 @item plist, vlist, procs  @item plist  vlist  procs
 \JP $B%j%9%H(B  \JP $B%j%9%H(B
 \EG list  \EG list
 @item order  @item order
Line 1297  strategy $B$K$h$k7W;;(B, @code{hgr()} $B$O(B trace
Line 1492  strategy $B$K$h$k7W;;(B, @code{hgr()} $B$O(B trace
 @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()} $B$GI=<($5$l$k;~4V$O(B, $B$3$NH!?t$,<B9T$5$l$F$$$k%W%m%;%9$G$N(B
 CPU $B;~4V$G$"$j(B, $B$3$NH!?t$N>l9g$O$[$H$s$IDL?.$N$?$a$N;~4V$G$"$k(B.  CPU $B;~4V$G$"$j(B, $B$3$NH!?t$N>l9g$O$[$H$s$IDL?.$N$?$a$N;~4V$G$"$k(B.
   @item
   $BB?9`<0%j%9%H(B @var{plist} $B$NMWAG$,J,;6I=8=B?9`<0$N>l9g$O(B
   $B7k2L$bJ,;6I=8=B?9`<0$N%j%9%H$G$"$k(B.
   $B$3$N>l9g(B, $B0z?t$NJ,;6B?9`<0$OM?$($i$l$?=g=x$K=>$$(B @code{dp_sort} $B$G(B
   $B%=!<%H$5$l$F$+$i7W;;$5$l$k(B.
   $BB?9`<0%j%9%H$NMWAG$,J,;6I=8=B?9`<0$N>l9g$b(B
   $BJQ?t$N?tJ,$NITDj85$N%j%9%H$r(B @var{vlist} $B0z?t$H$7$FM?$($J$$$H$$$1$J$$(B
   ($B%@%_!<(B).
 \E  \E
 \BEG  \BEG
 @item  @item
Line 1325  Therefore this function is useful to reduce the actual
Line 1528  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 1342  for communication.
Line 1552  for communication.
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item $B;2>H(B
 \EG @item References  \EG @item References
 @comment @fref{dp_gr_main dp_gr_mod_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_gr_main dp_gr_mod_main},  
 @fref{dp_ord}.  @fref{dp_ord}.
 @end table  @end table
   
Line 1372  for communication.
Line 1581  for communication.
 @item return  @item return
 \JP $B%j%9%H(B  \JP $B%j%9%H(B
 \EG list  \EG list
 @item plist, vlist1, vlist2, procs  @item plist  vlist1  vlist2  procs
 \JP $B%j%9%H(B  \JP $B%j%9%H(B
 \EG list  \EG list
 @item order  @item order
Line 1560  processes.
Line 1769  processes.
 @table @t  @table @t
 \JP @item $B;2>H(B  \JP @item $B;2>H(B
 \EG @item References  \EG @item References
 @fref{dp_gr_main dp_gr_mod_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{$BJ,;67W;;(B}
 \EG @fref{dp_ord}, @fref{Distributed computation}  \EG @fref{dp_ord}, @fref{Distributed computation}
 @end table  @end table
Line 1576  processes.
Line 1785  processes.
 @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 $B7A<0$N%$%G%"%k4pDl$N7W;;(B
 \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},@var{homo})  @item tolex_gsl(@var{plist},@var{vlist1},@var{order},@var{vlist2})
 @itemx tolex_gsl_d(@var{plist},@var{vlist1},@var{order},@var{vlist2},@var{homo},@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 :: $B%0%l%V%J4pDl$rF~NO$H$9$k(B, GSL $B7A<0$N%$%G%"%k4pDl$N7W;;(B
 \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
Line 1586  processes.
Line 1795  processes.
 @item return  @item return
 \JP $B%j%9%H(B  \JP $B%j%9%H(B
 \EG list  \EG list
 @item plist, vlist1, vlist2, procs  @item plist  vlist1  vlist2  procs
 \JP $B%j%9%H(B  \JP $B%j%9%H(B
 \EG list  \EG list
 @item order  @item order
Line 1662  processes.
Line 1871  processes.
 [108] GSL[1];  [108] GSL[1];
 [u2,10352277157007342793600000000*u0^31-...]  [u2,10352277157007342793600000000*u0^31-...]
 [109] GSL[5];  [109] GSL[5];
 [u0,11771021876193064124640000000*u0^32-...,376672700038178051988480000000*u0^31-...]  [u0,11771021876193064124640000000*u0^32-...,
   376672700038178051988480000000*u0^31-...]
 @end example  @end example
   
 @table @t  @table @t
Line 1692  processes.
Line 1902  processes.
 @item return  @item return
 \JP $BB?9`<0(B  \JP $BB?9`<0(B
 \EG polynomial  \EG polynomial
 @item plist, vlist  @item plist  vlist
 \JP $B%j%9%H(B  \JP $B%j%9%H(B
 \EG list  \EG list
 @item order  @item order
Line 1789  for @code{gr_minipoly()}.
Line 1999  for @code{gr_minipoly()}.
 @item return  @item return
 \JP @code{tolexm()} : $B%j%9%H(B, @code{minipolym()} : $BB?9`<0(B  \JP @code{tolexm()} : $B%j%9%H(B, @code{minipolym()} : $BB?9`<0(B
 \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 $B%j%9%H(B
 \EG list  \EG list
 @item order  @item order
Line 1837  z^32+11405*z^31+20868*z^30+21602*z^29+...
Line 2047  z^32+11405*z^31+20868*z^30+21602*z^29+...
 @fref{gr_minipoly minipoly}.  @fref{gr_minipoly minipoly}.
 @end table  @end table
   
 \JP @node dp_gr_main dp_gr_mod_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,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
 \EG @node dp_gr_main dp_gr_mod_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}  @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
 @findex dp_gr_mod_main  @findex dp_gr_mod_main
   @findex dp_gr_f_main
   @findex dp_weyl_gr_main
   @findex dp_weyl_gr_mod_main
   @findex dp_weyl_gr_f_main
   
 @table @t  @table @t
 @item dp_gr_main(@var{plist},@var{vlist},@var{homo},@var{modular},@var{order})  @item dp_gr_main(@var{plist},@var{vlist},@var{homo},@var{modular},@var{order})
 @itemx dp_gr_mod_main(@var{plist},@var{vlist},@var{homo},@var{modular},@var{order})  @itemx dp_gr_mod_main(@var{plist},@var{vlist},@var{homo},@var{modular},@var{order})
   @itemx dp_gr_f_main(@var{plist},@var{vlist},@var{homo},@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_f_main(@var{plist},@var{vlist},@var{homo},@var{order})
 \JP :: $B%0%l%V%J4pDl$N7W;;(B ($BAH$_9~$_H!?t(B)  \JP :: $B%0%l%V%J4pDl$N7W;;(B ($BAH$_9~$_H!?t(B)
 \EG :: Groebner basis computation (built-in functions)  \EG :: Groebner basis computation (built-in functions)
 @end table  @end table
Line 1854  z^32+11405*z^31+20868*z^30+21602*z^29+...
Line 2072  z^32+11405*z^31+20868*z^30+21602*z^29+...
 @item return  @item return
 \JP $B%j%9%H(B  \JP $B%j%9%H(B
 \EG list  \EG list
 @item plist, vlist  @item plist  vlist
 \JP $B%j%9%H(B  \JP $B%j%9%H(B
 \EG list  \EG list
 @item order  @item order
Line 1873  z^32+11405*z^31+20868*z^30+21602*z^29+...
Line 2091  z^32+11405*z^31+20868*z^30+21602*z^29+...
 @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()},  $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{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$J$I$O$9$Y$F$3$l$i$NH!?t$r8F$S=P$7$F7W;;(B
 $B$r9T$C$F$$$k(B.  $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
   $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
   $B>l9g$KMQ$$$k(B. $BF~NO$O(B, $B$"$i$+$8$a(B, @code{simp_ff()} $B$J$I$G(B,
   $B9M$($kM-8BBN>e$K<M1F$5$l$F$$$kI,MW$,$"$k(B.
   @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  $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
 $B$r<B9T$9$k(B.  $B$r<B9T$9$k(B.
 @item  @item
Line 1906  z^32+11405*z^31+20868*z^30+21602*z^29+...
Line 2129  z^32+11405*z^31+20868*z^30+21602*z^29+...
 @item  @item
 These functions are fundamental built-in functions for Groebner basis  These functions are fundamental built-in functions for Groebner basis
 computation and @code{gr()},@code{hgr()} and @code{gr_mod()}  computation and @code{gr()},@code{hgr()} and @code{gr_mod()}
 are all interfaces to these functions.  are all interfaces to these functions. Functions whose names
   contain weyl are those for computation in Weyl algebra.
 @item  @item
   @code{dp_gr_f_main()} and @code{dp_weyl_gr_f_main()}
   are functions for Groebner basis computation
   over various finite fields. Coefficients of input polynomials
   must be converted to elements of a finite field
   currently specified by @code{setmod_ff()}.
   @item
 If @var{homo} is not equal to 0, homogenization is applied before entering  If @var{homo} is not equal to 0, homogenization is applied before entering
 Buchberger algorithm  Buchberger algorithm
 @item  @item
Line 1945  Actual computation is controlled by various parameters
Line 2175  Actual computation is controlled by various parameters
 @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},
 \JP @fref{$B7W;;$*$h$SI=<($N@)8f(B}.  \JP @fref{$B7W;;$*$h$SI=<($N@)8f(B}.
 \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,,, $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,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
 \EG @node dp_f4_main dp_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}  @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
 @findex dp_f4_mod_main  @findex dp_f4_mod_main
   @findex dp_weyl_f4_main
   @findex dp_weyl_f4_mod_main
   
 @table @t  @table @t
 @item dp_f4_main(@var{plist},@var{vlist},@var{order})  @item dp_f4_main(@var{plist},@var{vlist},@var{order})
 @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_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 $B%"%k%4%j%:%`$K$h$k%0%l%V%J4pDl$N7W;;(B ($BAH$_9~$_H!?t(B)
 \EG :: Groebner basis computation by F4 algorithm (built-in functions)  \EG :: Groebner basis computation by F4 algorithm (built-in functions)
 @end table  @end table
Line 1966  Actual computation is controlled by various parameters
Line 2201  Actual computation is controlled by various parameters
 @item return  @item return
 \JP $B%j%9%H(B  \JP $B%j%9%H(B
 \EG list  \EG list
 @item plist, vlist  @item plist  vlist
 \JP $B%j%9%H(B  \JP $B%j%9%H(B
 \EG list  \EG list
 @item order  @item order
Line 1983  F4 $B%"%k%4%j%:%`$O(B, J.C. Faugere $B$K$h$jDs>'$5$
Line 2218  F4 $B%"%k%4%j%:%`$O(B, J.C. Faugere $B$K$h$jDs>'$5$
 $B;;K!$G$"$j(B, $BK\<BAu$O(B, $BCf9q>jM>DjM}$K$h$k@~7AJ}Dx<05a2r$rMQ$$$?(B  $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.  $B;n83E*$J<BAu$G$"$k(B.
 @item  @item
 $B0z?t$*$h$SF0:n$O$=$l$>$l(B @code{dp_gr_main()}, @code{dp_gr_mod_main()}  $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_weyl_gr_main()}, @code{dp_weyl_gr_mod_main()}
 $B$HF1MM$G$"$k(B.  $B$HF1MM$G$"$k(B.
 \E  \E
 \BEG  \BEG
Line 1995  invented by J.C. Faugere. The current implementation o
Line 2232  invented by J.C. Faugere. The current implementation o
 uses Chinese Remainder theorem and not highly optimized.  uses Chinese Remainder theorem and not highly optimized.
 @item  @item
 Arguments and actions are the same as those of  Arguments and actions are the same as those of
 @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()},
   except for lack of the argument for controlling homogenization.
 \E  \E
 @end itemize  @end itemize
   
Line 2017  Arguments and actions are the same as those of 
Line 2256  Arguments and actions are the same as those of 
   
 @table @t  @table @t
 @item dp_gr_flags([@var{list}])  @item dp_gr_flags([@var{list}])
 @itemx dp_gr_print([@var{0|1}])  @itemx dp_gr_print([@var{i}])
 \JP :: $B7W;;$*$h$SI=<(MQ%Q%i%a%?$N@_Dj(B, $B;2>H(B  \JP :: $B7W;;$*$h$SI=<(MQ%Q%i%a%?$N@_Dj(B, $B;2>H(B
 \BEG :: Set and show various parameters for cotrolling computations  \BEG :: Set and show various parameters for cotrolling computations
 and showing informations.  and showing informations.
Line 2031  and showing informations.
Line 2270  and showing informations.
 @item list  @item list
 \JP $B%j%9%H(B  \JP $B%j%9%H(B
 \EG list  \EG list
   @item i
   \JP $B@0?t(B
   \EG integer
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item  @item
 @code{dp_gr_main()}, @code{dp_gr_mod_main()} $B<B9T;~$K$*$1$k$5$^$6$^(B  @code{dp_gr_main()}, @code{dp_gr_mod_main()}, @code{dp_gr_f_main()}  $B<B9T;~$K$*$1$k$5$^$6$^(B
 $B$J%Q%i%a%?$r@_Dj(B, $B;2>H$9$k(B.  $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.  $B0z?t$,$J$$>l9g(B, $B8=:_$N@_Dj$,JV$5$l$k(B.
Line 2044  and showing informations.
Line 2286  and showing informations.
 $B0z?t$O(B, @code{["Print",1,"NoSugar",1,...]} $B$J$k7A$N%j%9%H$G(B, $B:8$+$i=g$K(B  $B0z?t$O(B, @code{["Print",1,"NoSugar",1,...]} $B$J$k7A$N%j%9%H$G(B, $B:8$+$i=g$K(B
 $B@_Dj$5$l$k(B. $B%Q%i%a%?L>$OJ8;zNs$GM?$($kI,MW$,$"$k(B.  $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} $B$NCM$rD>@\@_Dj(B, $B;2>H(B  @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
 $B$G$-$k(B. $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  $B$G$-$k(B. $B@_Dj$5$l$kCM$O<!$NDL$j$G$"$k!#(B
 $BH!?t$K$*$$$F(B, @code{Print} $B$NCM$r8+$F(B, $B$=$N%5%V%k!<%A%s$,Cf4V>pJs$NI=<((B  @table @var
   @item i=0
   @code{Print=0}, @code{PrintShort=0}
   @item i=1
   @code{Print=1}, @code{PrintShort=0}
   @item i=2
   @code{Print=0}, @code{PrintShort=1}
   @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
   $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.  $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
Line 2061  Arguments must be specified as a list such as
Line 2312  Arguments must be specified as a list such as
 strings.  strings.
 @item  @item
 @code{dp_gr_print()} is used to set and show the value of a parameter  @code{dp_gr_print()} is used to set and show the value of a parameter
 @code{Print}. This functions is prepared to get quickly the value of  @code{Print} and @code{PrintShort}.
 @code{Print} when a user defined function calling @code{dp_gr_main()} etc.  @table @var
   @item i=0
   @code{Print=0}, @code{PrintShort=0}
   @item i=1
   @code{Print=1}, @code{PrintShort=0}
   @item i=2
   @code{Print=0}, @code{PrintShort=1}
   @end table
   This functions is prepared to get quickly the value
   when a user defined function calling @code{dp_gr_main()} etc.
 uses the value as a flag for showing intermediate informations.  uses the value as a flag for showing intermediate informations.
 \E  \E
 @end itemize  @end itemize
Line 2212  the coefficient field.
Line 2472  the coefficient field.
 (1)*<<2,0,0>>+(2)*<<1,1,0>>+(1)*<<0,2,0>>+(2)*<<1,0,1>>+(2)*<<0,1,1>>  (1)*<<2,0,0>>+(2)*<<1,1,0>>+(1)*<<0,2,0>>+(2)*<<1,0,1>>+(2)*<<0,1,1>>
 +(1)*<<0,0,2>>  +(1)*<<0,0,2>>
 [52] dp_ptod((x+y+z)^2,[x,y]);  [52] dp_ptod((x+y+z)^2,[x,y]);
 (1)*<<2,0>>+(2)*<<1,1>>+(1)*<<0,2>>+(2*z)*<<1,0>>+(2*z)*<<0,1>>+(z^2)*<<0,0>>  (1)*<<2,0>>+(2)*<<1,1>>+(1)*<<0,2>>+(2*z)*<<1,0>>+(2*z)*<<0,1>>
   +(z^2)*<<0,0>>
 @end example  @end example
   
 @table @t  @table @t
Line 2264  variables of @var{dpoly}.
Line 2525  variables of @var{dpoly}.
   
 @example  @example
 [53] T=dp_ptod((x+y+z)^2,[x,y]);  [53] T=dp_ptod((x+y+z)^2,[x,y]);
 (1)*<<2,0>>+(2)*<<1,1>>+(1)*<<0,2>>+(2*z)*<<1,0>>+(2*z)*<<0,1>>+(z^2)*<<0,0>>  (1)*<<2,0>>+(2)*<<1,1>>+(1)*<<0,2>>+(2*z)*<<1,0>>+(2*z)*<<0,1>>
   +(z^2)*<<0,0>>
 [54] P=dp_dtop(T,[a,b]);  [54] P=dp_dtop(T,[a,b]);
 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
Line 2617  For single computation @code{p_nf} and @code{p_true_nf
Line 2879  For single computation @code{p_nf} and @code{p_true_nf
 [74] DP2=newvect(length(G),map(dp_ptod,G,V))$  [74] DP2=newvect(length(G),map(dp_ptod,G,V))$
 [75] T=dp_ptod((u0-u1+u2-u3+u4)^2,V)$  [75] T=dp_ptod((u0-u1+u2-u3+u4)^2,V)$
 [76] dp_dtop(dp_nf([0,1,2,3,4],T,DP1,1),V);  [76] dp_dtop(dp_nf([0,1,2,3,4],T,DP1,1),V);
 u4^2+(6*u3+2*u2+6*u1-2)*u4+9*u3^2+(6*u2+18*u1-6)*u3+u2^2+(6*u1-2)*u2+9*u1^2-6*u1+1  u4^2+(6*u3+2*u2+6*u1-2)*u4+9*u3^2+(6*u2+18*u1-6)*u3+u2^2
   +(6*u1-2)*u2+9*u1^2-6*u1+1
 [77] dp_dtop(dp_nf([4,3,2,1,0],T,DP1,1),V);  [77] dp_dtop(dp_nf([4,3,2,1,0],T,DP1,1),V);
 -5*u4^2+(-4*u3-4*u2-4*u1)*u4-u3^2-3*u3-u2^2+(2*u1-1)*u2-2*u1^2-3*u1+1  -5*u4^2+(-4*u3-4*u2-4*u1)*u4-u3^2-3*u3-u2^2+(2*u1-1)*u2-2*u1^2-3*u1+1
 [78] dp_dtop(dp_nf([0,1,2,3,4],T,DP2,1),V);  [78] dp_dtop(dp_nf([0,1,2,3,4],T,DP2,1),V);
 -1138087976845165778088612297273078520347097001020471455633353049221045677593  -11380879768451657780886122972730785203470970010204714556333530492210
 0005716505560062087150928400876150217079820311439477560587583488*u4^15+...  456775930005716505560062087150928400876150217079820311439477560587583
   488*u4^15+...
 [79] dp_dtop(dp_nf([4,3,2,1,0],T,DP2,1),V);  [79] dp_dtop(dp_nf([4,3,2,1,0],T,DP2,1),V);
 -1138087976845165778088612297273078520347097001020471455633353049221045677593  -11380879768451657780886122972730785203470970010204714556333530492210
 0005716505560062087150928400876150217079820311439477560587583488*u4^15+...  456775930005716505560062087150928400876150217079820311439477560587583
   488*u4^15+...
 [80] @@78==@@79;  [80] @@78==@@79;
 1  1
 @end example  @end example
Line 2791  selection strategy of critical pairs in Groebner basis
Line 3056  selection strategy of critical pairs in Groebner basis
 @item return  @item return
 \JP $BJ,;6I=8=B?9`<0(B  \JP $BJ,;6I=8=B?9`<0(B
 \EG distributed polynomial  \EG distributed polynomial
 @item dpoly1, dpoly2  @item dpoly1  dpoly2
 \JP $BJ,;6I=8=B?9`<0(B  \JP $BJ,;6I=8=B?9`<0(B
 \EG distributed polynomial  \EG distributed polynomial
 @end table  @end table
Line 2834  two polynomials, where coefficient is always set to 1.
Line 3099  two polynomials, where coefficient is always set to 1.
 @item return  @item return
 \JP $B@0?t(B  \JP $B@0?t(B
 \EG integer  \EG integer
 @item dpoly1, dpoly2  @item dpoly1  dpoly2
 \JP $BJ,;6I=8=B?9`<0(B  \JP $BJ,;6I=8=B?9`<0(B
 \EG distributed polynomial  \EG distributed polynomial
 @end table  @end table
Line 2889  Used for finding candidate terms at reduction of polyn
Line 3154  Used for finding candidate terms at reduction of polyn
 @item return  @item return
 \JP $BJ,;6I=8=B?9`<0(B  \JP $BJ,;6I=8=B?9`<0(B
 \EG distributed polynomial  \EG distributed polynomial
 @item dpoly1, dpoly2  @item dpoly1  dpoly2
 \JP $BJ,;6I=8=B?9`<0(B  \JP $BJ,;6I=8=B?9`<0(B
 \EG distributed polynomial  \EG distributed polynomial
 @end table  @end table
Line 3113  values of @code{dp_mag()} for intermediate basis eleme
Line 3378  values of @code{dp_mag()} for intermediate basis eleme
 @item return  @item return
 \JP $B%j%9%H(B  \JP $B%j%9%H(B
 \EG list  \EG list
 @item dpoly1, dpoly2, dpoly3  @item dpoly1  dpoly2  dpoly3
 \JP $BJ,;6I=8=B?9`<0(B  \JP $BJ,;6I=8=B?9`<0(B
 \EG distributed polynomial  \EG distributed polynomial
 @item vlist  @item vlist
Line 3137  values of @code{dp_mag()} for intermediate basis eleme
Line 3402  values of @code{dp_mag()} for intermediate basis eleme
 $B$J$i$J$$(B.  $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},  $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},
 $B9`(B @var{t} $B$K$h$j(B @var{a(dpoly1 + dpoly2)-bt dpoly3} $B$H$7$F7W;;$5$l$k(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.
 @item  @item
 $B7k2L$O(B, @code{[@var{a dpoly1},@var{a dpoly2 - bt dpoly3}]} $B$J$k%j%9%H$G$"$k(B.  $B7k2L$O(B, @code{[@var{a dpoly1},@var{a dpoly2 - bt dpoly3}]} $B$J$k%j%9%H$G$"$k(B.
 \E  \E
Line 3156  the divisibility of the head term of @var{dpoly2} by t
Line 3421  the divisibility of the head term of @var{dpoly2} by t
 When integral coefficients, computation is so carefully performed that  When integral coefficients, computation is so carefully performed that
 no rational operations appear in the reduction procedure.  no rational operations appear in the reduction procedure.
 It is computed for integers @var{a} and @var{b}, and a term @var{t} as:  It is computed for integers @var{a} and @var{b}, and a term @var{t} as:
 @var{a(dpoly1 + dpoly2)-bt dpoly3}.  @var{a}(@var{dpoly1} + @var{dpoly2})-@var{bt} @var{dpoly3}.
 @item  @item
 The result is a list @code{[@var{a dpoly1},@var{a dpoly2 - bt dpoly3}]}.  The result is a list @code{[@var{a dpoly1},@var{a dpoly2 - bt dpoly3}]}.
 \E  \E
Line 3170  The result is a list @code{[@var{a dpoly1},@var{a dpol
Line 3435  The result is a list @code{[@var{a dpoly1},@var{a dpol
 [159] C=12*<<1,1,1,0,0>>+(1)*<<0,1,1,1,0>>+(1)*<<1,1,0,0,1>>;  [159] C=12*<<1,1,1,0,0>>+(1)*<<0,1,1,1,0>>+(1)*<<1,1,0,0,1>>;
 (12)*<<1,1,1,0,0>>+(1)*<<0,1,1,1,0>>+(1)*<<1,1,0,0,1>>  (12)*<<1,1,1,0,0>>+(1)*<<0,1,1,1,0>>+(1)*<<1,1,0,0,1>>
 [160] dp_red(D,R,C);  [160] dp_red(D,R,C);
 [(6)*<<2,1,0,0,0>>+(6)*<<1,2,0,0,0>>+(2)*<<0,3,0,0,0>>,(-1)*<<0,1,1,1,0>>  [(6)*<<2,1,0,0,0>>+(6)*<<1,2,0,0,0>>+(2)*<<0,3,0,0,0>>,
 +(-1)*<<1,1,0,0,1>>]  (-1)*<<0,1,1,1,0>>+(-1)*<<1,1,0,0,1>>]
 @end example  @end example
   
 @table @t  @table @t
Line 3197  The result is a list @code{[@var{a dpoly1},@var{a dpol
Line 3462  The result is a list @code{[@var{a dpoly1},@var{a dpol
 @item return  @item return
 \JP $BJ,;6I=8=B?9`<0(B  \JP $BJ,;6I=8=B?9`<0(B
 \EG distributed polynomial  \EG distributed polynomial
 @item dpoly1, dpoly2  @item dpoly1  dpoly2
 \JP $BJ,;6I=8=B?9`<0(B  \JP $BJ,;6I=8=B?9`<0(B
 \EG distributed polynomial  \EG distributed polynomial
 @item mod  @item mod
Line 3273  as a form of @code{[numerator, denominator]})
Line 3538  as a form of @code{[numerator, denominator]})
 @item poly  @item poly
 \JP $BB?9`<0(B  \JP $BB?9`<0(B
 \EG polynomial  \EG polynomial
 @item plist,vlist  @item plist vlist
 \JP $B%j%9%H(B  \JP $B%j%9%H(B
 \EG list  \EG list
 @item order  @item order
Line 3409  exists.
Line 3674  exists.
 @example  @example
 [233] G=gr(katsura(5),[u5,u4,u3,u2,u1,u0],2)$  [233] G=gr(katsura(5),[u5,u4,u3,u2,u1,u0],2)$
 [234] p_terms(G[0],[u5,u4,u3,u2,u1,u0],2);  [234] p_terms(G[0],[u5,u4,u3,u2,u1,u0],2);
 [u5,u0^31,u0^30,u0^29,u0^28,u0^27,u0^26,u0^25,u0^24,u0^23,u0^22,u0^21,u0^20,  [u5,u0^31,u0^30,u0^29,u0^28,u0^27,u0^26,u0^25,u0^24,u0^23,u0^22,
 u0^19,u0^18,u0^17,u0^16,u0^15,u0^14,u0^13,u0^12,u0^11,u0^10,u0^9,u0^8,u0^7,  u0^21,u0^20,u0^19,u0^18,u0^17,u0^16,u0^15,u0^14,u0^13,u0^12,u0^11,
 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,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
Line 3428  u0^6,u0^5,u0^4,u0^3,u0^2,u0,1]
Line 3693  u0^6,u0^5,u0^4,u0^3,u0^2,u0,1]
 @table @var  @table @var
 \JP @item return 0 $B$^$?$O(B 1  \JP @item return 0 $B$^$?$O(B 1
 \EG @item return 0 or 1  \EG @item return 0 or 1
 @item plist1, plist2  @item plist1  plist2
 @end table  @end table
   
 @itemize @bullet  @itemize @bullet
Line 3519  Polynomial set @code{cyclic} is sometimes called by ot
Line 3784  Polynomial set @code{cyclic} is sometimes called by ot
 [79] load("cyclic")$  [79] load("cyclic")$
 [89] katsura(5);  [89] katsura(5);
 [u0+2*u4+2*u3+2*u2+2*u1+2*u5-1,2*u4*u0-u4+2*u1*u3+u2^2+2*u5*u1,  [u0+2*u4+2*u3+2*u2+2*u1+2*u5-1,2*u4*u0-u4+2*u1*u3+u2^2+2*u5*u1,
 2*u3*u0+2*u1*u4-u3+(2*u1+2*u5)*u2,2*u2*u0+2*u2*u4+(2*u1+2*u5)*u3-u2+u1^2,  2*u3*u0+2*u1*u4-u3+(2*u1+2*u5)*u2,2*u2*u0+2*u2*u4+(2*u1+2*u5)*u3
 2*u1*u0+(2*u3+2*u5)*u4+2*u2*u3+2*u1*u2-u1,  -u2+u1^2,2*u1*u0+(2*u3+2*u5)*u4+2*u2*u3+2*u1*u2-u1,
 u0^2-u0+2*u4^2+2*u3^2+2*u2^2+2*u1^2+2*u5^2]  u0^2-u0+2*u4^2+2*u3^2+2*u2^2+2*u1^2+2*u5^2]
 [90] hkatsura(5);  [90] hkatsura(5);
 [-t+u0+2*u4+2*u3+2*u2+2*u1+2*u5,  [-t+u0+2*u4+2*u3+2*u2+2*u1+2*u5,
Line 3642  if an input ideal is not radical.
Line 3907  if an input ideal is not radical.
 \JP @fref{$B9`=g=x$N@_Dj(B}.  \JP @fref{$B9`=g=x$N@_Dj(B}.
 \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
   \EG @node primedec_mod,,, Functions for Groebner basis computation
   @subsection @code{primedec_mod}
   @findex primedec_mod
   
   @table @t
   @item primedec_mod(@var{plist},@var{vlist},@var{ord},@var{mod},@var{strategy})
   \JP :: $B%$%G%"%k$NJ,2r(B
   \EG :: Computes decompositions of ideals over small finite fields.
   @end table
   
   @table @var
   @item return
   @itemx 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
   @item ord
   \JP $B?t(B, $B%j%9%H$^$?$O9TNs(B
   \EG number, list or matrix
   @item mod
   \JP $B@5@0?t(B
   \EG positive integer
   @item strategy
   \JP $B@0?t(B
   \EG integer
   @end table
   
   @itemize @bullet
   \BJP
   @item
   @code{primedec_mod()} $B$O(B @samp{primdec_mod}
   $B$GDj5A$5$l$F$$$k(B. @code{[Yokoyama]} $B$NAG%$%G%"%kJ,2r%"%k%4%j%:%`(B
   $B$r<BAu$7$F$$$k(B.
   @item
   @code{primedec_mod()} $B$OM-8BBN>e$G$N%$%G%"%k$N(B
   $B:,4p$NAG%$%G%"%kJ,2r$r9T$$(B, $BAG%$%G%"%k$N%j%9%H$rJV$9(B.
   @item
   @code{primedec_mod()} $B$O(B, GF(@var{mod}) $B>e$G$NJ,2r$rM?$($k(B.
   $B7k2L$N3F@.J,$N@8@.85$O(B, $B@0?t78?tB?9`<0$G$"$k(B.
   @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.
   @item
   @var{strategy} $B$,(B 0 $B$G$J$$$H$-(B, incremental $B$K(B component $B$N6&DL(B
   $BItJ,$r7W;;$9$k$3$H$K$h$k(B early termination $B$r9T$&(B. $B0lHL$K(B,
   $B%$%G%"%k$N<!85$,9b$$>l9g$KM-8z$@$,(B, 0 $B<!85$N>l9g$J$I(B, $B<!85$,>.$5$$(B
   $B>l9g$K$O(B overhead $B$,Bg$-$$>l9g$,$"$k(B.
   @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.
   \E
   \BEG
   @item
   Function @code{primedec_mod()}
   is defined in @samp{primdec_mod} and implements the prime decomposition
   algorithm in @code{[Yokoyama]}.
   @item
   @code{primedec_mod()}
   is the function for prime ideal decomposition
   of the radical of a polynomial ideal over small finite field,
   and they return a list of prime ideals, which are associated primes
   of the input ideal.
   @item
   @code{primedec_mod()} gives the decomposition over GF(@var{mod}).
   The generators of each resulting component consists of integral polynomials.
   @item
   Each resulting component is a Groebner basis with respect to
   a term order specified by [@var{vlist},@var{ord}].
   @item
   If @var{strategy} is non zero, then the early termination strategy
   is tried by computing the intersection of obtained components
   incrementally. In general, this strategy is useful when the krull
   dimension of the ideal is high, but it may add some overhead
   if the dimension is small.
   @item
   If you want to see internal information during the computation,
   execute @code{dp_gr_print(2)} in advance.
   \E
   @end itemize
   
   @example
   [0] load("primdec_mod")$
   [246] PP444=[x^8+x^2+t,y^8+y^2+t,z^8+z^2+t]$
   [247] primedec_mod(PP444,[x,y,z,t],0,2,1);
   [[y+z,x+z,z^8+z^2+t],[x+y,y^2+y+z^2+z+1,z^8+z^2+t],
   [y+z+1,x+z+1,z^8+z^2+t],[x+z,y^2+y+z^2+z+1,z^8+z^2+t],
   [y+z,x^2+x+z^2+z+1,z^8+z^2+t],[y+z+1,x^2+x+z^2+z+1,z^8+z^2+t],
   [x+z+1,y^2+y+z^2+z+1,z^8+z^2+t],[y+z+1,x+z,z^8+z^2+t],
   [x+y+1,y^2+y+z^2+z+1,z^8+z^2+t],[y+z,x+z+1,z^8+z^2+t]]
   [248]
   @end example
   
   @table @t
   \JP @item $B;2>H(B
   \EG @item References
   @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},
   \JP @fref{$B9`=g=x$N@_Dj(B}.
   \EG @fref{Setting term orderings},
   @fref{dp_gr_flags dp_gr_print}.
   @end table
   
   \JP @node bfunction bfct generic_bfct ann ann0,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
   \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}
   @findex bfunction
   @findex bfct
   @findex generic_bfct
   @findex ann
   @findex ann0
   
   @table @t
   @item bfunction(@var{f})
   @itemx bfct(@var{f})
   @itemx generic_bfct(@var{plist},@var{vlist},@var{dvlist},@var{weight})
   \JP :: @var{b} $B4X?t$N7W;;(B
   \EG :: Computes the global @var{b} function of a polynomial or an ideal
   @item ann(@var{f})
   @itemx ann0(@var{f})
   \JP :: $BB?9`<0$N%Y%-$N(B annihilator $B$N7W;;(B
   \EG :: Computes the annihilator of a power of polynomial
   @end table
   
   @table @var
   @item return
   \JP $BB?9`<0$^$?$O%j%9%H(B
   \EG polynomial or list
   @item f
   \JP $BB?9`<0(B
   \EG polynomial
   @item plist
   \JP $BB?9`<0%j%9%H(B
   \EG list of polynomials
   @item vlist dvlist
   \JP $BJQ?t%j%9%H(B
   \EG list of variables
   @end table
   
   @itemize @bullet
   \BJP
   @item @samp{bfct} $B$GDj5A$5$l$F$$$k(B.
   @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
   $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]}
   $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
   $BB?9`<0(B @code{b(s)} $B$NCf$G(B, $B<!?t$,:G$bDc$$$b$N$G$"$k(B.
   @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,
   $B%&%'%$%H(B @var{weight} $B$K4X$9$k(B global @var{b} $B4X?t$r7W;;$9$k(B.
   @var{vlist} $B$O(B @code{x}-$BJQ?t(B, @var{vlist} $B$OBP1~$9$k(B @code{D}-$BJQ?t(B
   $B$r=g$KJB$Y$k(B.
   @item @code{bfunction} $B$H(B @code{bfct} $B$G$OMQ$$$F$$$k%"%k%4%j%:%`$,(B
   $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
   $B$N@8@.7O$rJV$9(B. @code{ann(@var{f})} $B$O(B, @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{list} $B$O(B @code{ann(@var{f})} $B$N7k2L$N(B @code{s}$ $B$K(B, @var{a} $B$r(B
   $BBeF~$7$?$b$N$G$"$k(B.
   @item $B>\:Y$K$D$$$F$O(B, [Saito,Sturmfels,Takayama] $B$r8+$h(B.
   \E
   \BEG
   @item These functions are defined in @samp{bfct}.
   @item @code{bfunction(@var{f})} and @code{bfct(@var{f})} compute the global @var{b}-function @code{b(s)} of
   a polynomial @var{f}.
   @code{b(s)} is a polynomial of the minimal degree
   such that there exists @code{P(x,s)} in D[s], which is a polynomial
   ring over Weyl algebra @code{D}, and @code{P(x,s)f^(s+1)=b(s)f^s} holds.
   @item @code{generic_bfct(@var{f},@var{vlist},@var{dvlist},@var{weight})}
   computes the global @var{b}-function of a left ideal @code{I} in @code{D}
   generated by @var{plist}, with respect to @var{weight}.
   @var{vlist} is the list of @code{x}-variables,
   @var{vlist} is the list of corresponding @code{D}-variables.
   @item @code{bfunction(@var{f})} and @code{bfct(@var{f})} implement
   different algorithms and the efficiency depends on inputs.
   @item @code{ann(@var{f})} returns the generator set of the annihilator
   ideal of @code{@var{f}^s}.
   @code{ann(@var{f})} returns a list @code{[@var{a},@var{list}]},
   where @var{a} is the minimal integral root of the global @var{b}-function
   of @var{f}, and @var{list} is a list of polynomials obtained by
   substituting @code{s} in @code{ann(@var{f})} with @var{a}.
   @item See [Saito,Sturmfels,Takayama] for the details.
   \E
   @end itemize
   
   @example
   [0] load("bfct")$
   [216] bfunction(x^3+y^3+z^3+x^2*y^2*z^2+x*y*z);
   -9*s^5-63*s^4-173*s^3-233*s^2-154*s-40
   [217] fctr(@@);
   [[-1,1],[s+2,1],[3*s+4,1],[3*s+5,1],[s+1,2]]
   [218] F = [4*x^3*dt+y*z*dt+dx,x*z*dt+4*y^3*dt+dy,
   x*y*dt+5*z^4*dt+dz,-x^4-z*y*x-y^4-z^5+t]$
   [219] generic_bfct(F,[t,z,y,x],[dt,dz,dy,dx],[1,0,0,0]);
   20000*s^10-70000*s^9+101750*s^8-79375*s^7+35768*s^6-9277*s^5
   +1278*s^4-72*s^3
   [220] P=x^3-y^2$
   [221] ann(P);
   [2*dy*x+3*dx*y^2,-3*dx*x-2*dy*y+6*s]
   [222] ann0(P);
   [-1,[2*dy*x+3*dx*y^2,-3*dx*x-2*dy*y-6]]
   @end example
   
   @table @t
   \JP @item $B;2>H(B
   \EG @item References
   \JP @fref{Weyl $BBe?t(B}.
   \EG @fref{Weyl algebra}.
   @end table
   

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.13

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