[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.6 and 1.22

version 1.6, 2003/04/20 09:55:18 version 1.22, 2019/03/29 04:54:25
Line 1 
Line 1 
 @comment $OpenXM: OpenXM/src/asir-doc/parts/groebner.texi,v 1.5 2003/04/20 08:01:25 noro Exp $  @comment $OpenXM: OpenXM/src/asir-doc/parts/groebner.texi,v 1.21 2018/09/06 05:42:43 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::  * Weyl $BBe?t(B::
Line 26 
Line 27 
 * Fundamental functions::  * Fundamental functions::
 * Controlling Groebner basis computations::  * Controlling Groebner basis computations::
 * Setting term orderings::  * Setting term orderings::
   * Weight::
 * Groebner basis computation with rational function coefficients::  * Groebner basis computation with rational function coefficients::
 * Change of ordering::  * Change of ordering::
 * Weyl algebra::  * Weyl algebra::
Line 199  In an @b{Asir} session, it is displayed in the form li
Line 201  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 220  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 449  If `on', various informations during a Groebner basis 
Line 489  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 471  is shown after every normal computation.  After comlet
Line 518  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 1044  beforehand, and some heuristic trial may be inevitable
Line 1095  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 1318  Computation of the global b function is implemented as
Line 1502  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::
 * dp_td dp_sugar::  * dp_td dp_sugar::
 * dp_lcm::  * dp_lcm::
Line 1343  Computation of the global b function is implemented as
Line 1530  Computation of the global b function is implemented as
 * lex_hensel_gsl tolex_gsl tolex_gsl_d::  * lex_hensel_gsl tolex_gsl tolex_gsl_d::
 * primadec primedec::  * primadec primedec::
 * primedec_mod::  * primedec_mod::
 * bfunction generic_bfct::  * 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 1383  Computation of the global b function is implemented as
Line 1570  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 1394  Computation of the global b function is implemented as
Line 1583  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.
 @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
 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 1429  Therefore this function is useful to reduce the actual
Line 1629  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 1679  processes.
Line 1886  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 2142  except for lack of the argument for controlling homoge
Line 2349  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})
   @itemx nd_gr_trace(@var{plist},@var{vlist},@var{homo},@var{p},@var{order})
   @itemx nd_f4(@var{plist},@var{vlist},@var{modular},@var{order})
   @itemx nd_f4_trace(@var{plist},@var{vlist},@var{homo},@var{p},@var{order})
   @itemx nd_weyl_gr(@var{plist},@var{vlist},@var{p},@var{order})
   @itemx nd_weyl_gr_trace(@var{plist},@var{vlist},@var{homo},@var{p},@var{order})
   \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.
   @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.
   @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 2150  except for lack of the argument for controlling homoge
Line 2564  except for lack of the argument for controlling homoge
   
 @table @t  @table @t
 @item dp_gr_flags([@var{list}])  @item dp_gr_flags([@var{list}])
 @itemx dp_gr_print([@var{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 2164  and showing informations.
Line 2578  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
Line 2177  and showing informations.
Line 2594  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 2194  Arguments must be specified as a list such as
Line 2620  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 2297  when functions other than top level functions are call
Line 2732  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 2479  converting the coefficients into elements of a finite 
Line 2987  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 2570  These are used internally in @code{hgr()} etc.
Line 3078  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 2623  polynomial contents included in the coefficients are n
Line 3131  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 2675  is returned in such a list as @code{[numerator, denomi
Line 3187  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 2707  is returned in such a list as @code{[numerator, denomi
Line 3221  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 3488  refer to @code{dp_true_nf()} and @code{dp_true_nf_mod(
Line 4005  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
Line 3831  if an input ideal is not radical.
Line 4348  if an input ideal is not radical.
 $BItJ,$r7W;;$9$k$3$H$K$h$k(B early termination $B$r9T$&(B. $B0lHL$K(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%$%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.  $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  \E
 \BEG  \BEG
 @item  @item
Line 3855  is tried by computing the intersection of obtained com
Line 4375  is tried by computing the intersection of obtained com
 incrementally. In general, this strategy is useful when the krull  incrementally. In general, this strategy is useful when the krull
 dimension of the ideal is high, but it may add some overhead  dimension of the ideal is high, but it may add some overhead
 if the dimension is small.  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  \E
 @end itemize  @end itemize
   
Line 3876  if the dimension is small.
Line 4399  if the dimension is small.
 @fref{modfctr},  @fref{modfctr},
 @fref{dp_gr_main dp_gr_mod_main dp_gr_f_main dp_weyl_gr_main dp_weyl_gr_mod_main dp_weyl_gr_f_main},  @fref{dp_gr_main dp_gr_mod_main dp_gr_f_main dp_weyl_gr_main dp_weyl_gr_mod_main dp_weyl_gr_f_main},
 \JP @fref{$B9`=g=x$N@_Dj(B}.  \JP @fref{$B9`=g=x$N@_Dj(B}.
 \EG @fref{Setting term orderings}.  \EG @fref{Setting term orderings},
   @fref{dp_gr_flags dp_gr_print}.
 @end table  @end table
   
 \JP @node bfunction generic_bfct,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B  \JP @node bfunction bfct generic_bfct ann ann0,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B
 \EG @node bfunction generic_bfct,,, Functions for Groebner basis computation  \EG @node bfunction bfct generic_bfct ann ann0,,, Functions for Groebner basis computation
 @subsection @code{bfunction}, @code{generic_bfct}  @subsection @code{bfunction}, @code{bfct}, @code{generic_bfct}, @code{ann}, @code{ann0}
 @findex bfunction  @findex bfunction
   @findex bfct
 @findex generic_bfct  @findex generic_bfct
   @findex ann
   @findex ann0
   
 @table @t  @table @t
 @item bfunction(@var{f})  @item bfunction(@var{f})
 @item generic_bfct(@var{plist},@var{vlist},@var{dvlist},@var{weight})  @itemx bfct(@var{f})
 \JP :: b $B4X?t$N7W;;(B  @itemx generic_bfct(@var{plist},@var{vlist},@var{dvlist},@var{weight})
 \EG :: Computes the global b function of a polynomial or an ideal  \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  @end table
   
 @table @var  @table @var
 @item return  @item return
 @itemx f  \JP $BB?9`<0$^$?$O%j%9%H(B
   \EG polynomial or list
   @item f
 \JP $BB?9`<0(B  \JP $BB?9`<0(B
 \EG polynomial  \EG polynomial
 @item plist  @item plist
Line 3907  if the dimension is small.
Line 4442  if the dimension is small.
 @itemize @bullet  @itemize @bullet
 \BJP  \BJP
 @item @samp{bfct} $B$GDj5A$5$l$F$$$k(B.  @item @samp{bfct} $B$GDj5A$5$l$F$$$k(B.
 @item @code{bfunction(@var{f})} $B$OB?9`<0(B @var{f} $B$N(B global b $B4X?t(B @code{b(s)} $B$r(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]}  $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  $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.  $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})}  @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$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 b $B4X?t$r7W;;$9$k(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  @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.  $B$r=g$KJB$Y$k(B.
 @item $B>\:Y$K$D$$$F$O(B, [SST] $B$r8+$h(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  \E
 \BEG  \BEG
 @item These functions are defined in @samp{bfct}.  @item These functions are defined in @samp{bfct}.
 @item @code{bfunction(@var{f})} computes the global b-function @code{b(s)} of  @item @code{bfunction(@var{f})} and @code{bfct(@var{f})} compute the global @var{b}-function @code{b(s)} of
 a polynomial @var{f}.  a polynomial @var{f}.
 @code{b(s)} is a polynomial of the minimal degree  @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  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.  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})}  @item @code{generic_bfct(@var{f},@var{vlist},@var{dvlist},@var{weight})}
 computes the global b-function of a left ideal @code{I} in @code{D}  computes the global @var{b}-function of a left ideal @code{I} in @code{D}
 generated by @var{plist}, with respect to @var{weight}.  generated by @var{plist}, with respect to @var{weight}.
 @var{vlist} is the list of @code{x}-variables,  @var{vlist} is the list of @code{x}-variables,
 @var{vlist} is the list of corresponding @code{D}-variables.  @var{vlist} is the list of corresponding @code{D}-variables.
 @item See [SST] for the details.  @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  \E
 @end itemize  @end itemize
   
Line 3945  x*y*dt+5*z^4*dt+dz,-x^4-z*y*x-y^4-z^5+t]$
Line 4495  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]);  [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  20000*s^10-70000*s^9+101750*s^8-79375*s^7+35768*s^6-9277*s^5
 +1278*s^4-72*s^3  +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  @end example
   
 @table @t  @table @t

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.22

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