=================================================================== RCS file: /home/cvs/OpenXM/src/asir-doc/parts/groebner.texi,v retrieving revision 1.7 retrieving revision 1.13 diff -u -p -r1.7 -r1.13 --- OpenXM/src/asir-doc/parts/groebner.texi 2003/04/21 03:07:32 1.7 +++ OpenXM/src/asir-doc/parts/groebner.texi 2004/09/13 09:23:30 1.13 @@ -1,4 +1,4 @@ -@comment $OpenXM: OpenXM/src/asir-doc/parts/groebner.texi,v 1.6 2003/04/20 09:55:18 noro Exp $ +@comment $OpenXM: OpenXM/src/asir-doc/parts/groebner.texi,v 1.12 2003/12/27 11:52:07 takayama Exp $ \BJP @node $B%0%l%V%J4pDl$N7W;;(B,,, Top @chapter $B%0%l%V%J4pDl$N7W;;(B @@ -15,6 +15,7 @@ * $B4pK\E*$JH!?t(B:: * $B7W;;$*$h$SI=<($N@)8f(B:: * $B9`=g=x$N@_Dj(B:: +* Weight:: * $BM-M}<0$r78?t$H$9$k%0%l%V%J4pDl7W;;(B:: * $B4pDlJQ49(B:: * Weyl $BBe?t(B:: @@ -26,6 +27,7 @@ * Fundamental functions:: * Controlling Groebner basis computations:: * Setting term orderings:: +* Weight:: * Groebner basis computation with rational function coefficients:: * Change of ordering:: * Weyl algebra:: @@ -1055,6 +1057,84 @@ beforehand, and some heuristic trial may be inevitable \E \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$l(B 1,2,3 $B$H;XDj$7$F$$$k(B. $B$3$N$?$a(B, @code{<<1,1,1>>} +$B$NA4l9g$,$"$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$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 @section $BM-M}<0$r78?t$H$9$k%0%l%V%J4pDl7W;;(B \E @@ -1354,7 +1434,7 @@ Computation of the global b function is implemented as * lex_hensel_gsl tolex_gsl tolex_gsl_d:: * primadec primedec:: * primedec_mod:: -* bfunction generic_bfct:: +* bfunction bfct generic_bfct ann ann0:: @end menu \JP @node gr hgr gr_mod,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B @@ -1412,6 +1492,14 @@ CPU $B;~4V$G$"$j(B, $B$3$NH!?t$N>l9g$O$[$H$s$IDL?.$ @item @code{dgr()} $B$GI=<($5$l$k;~4V$O(B, $B$3$NH!?t$,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 \BEG @item @@ -1440,6 +1528,13 @@ for communication. 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 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 @end itemize @@ -1690,8 +1785,8 @@ processes. @item lex_hensel_gsl(@var{plist},@var{vlist1},@var{order},@var{vlist2},@var{homo}) \JP :: GSL $B7A<0$N%$%G%"%k4pDl$N7W;;(B \EG ::Computation of an GSL form ideal basis -@item tolex_gsl(@var{plist},@var{vlist1},@var{order},@var{vlist2},@var{homo}) -@itemx tolex_gsl_d(@var{plist},@var{vlist1},@var{order},@var{vlist2},@var{homo},@var{procs}) +@item tolex_gsl(@var{plist},@var{vlist1},@var{order},@var{vlist2}) +@itemx tolex_gsl_d(@var{plist},@var{vlist1},@var{order},@var{vlist2},@var{procs}) \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 @end table @@ -3918,21 +4013,32 @@ execute @code{dp_gr_print(2)} in advance. @fref{dp_gr_flags dp_gr_print}. @end table -\JP @node bfunction generic_bfct,,, $B%0%l%V%J4pDl$K4X$9$kH!?t(B -\EG @node bfunction generic_bfct,,, Functions for Groebner basis computation -@subsection @code{bfunction}, @code{generic_bfct} +\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}) -@item generic_bfct(@var{plist},@var{vlist},@var{dvlist},@var{weight}) -\JP :: b $B4X?t$N7W;;(B -\EG :: Computes the global b function of a polynomial or an ideal +@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 -@itemx f +\JP $BB?9`<0$^$?$O%j%9%H(B +\EG polynomial or list +@item f \JP $BB?9`<0(B \EG polynomial @item plist @@ -3946,29 +4052,44 @@ execute @code{dp_gr_print(2)} in advance. @itemize @bullet \BJP @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]} $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.@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})} 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}. @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 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}. @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 @@ -3984,6 +4105,11 @@ +1278*s^4-72*s^3 [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