
7.7.2.0. bfctIdeal
Procedure from library bfun.lib (see bfun_lib).
 Usage:
 bfctIdeal(I,w[,s,t]); I an ideal, w an intvec, s,t optional ints
 Return:
 list of ideal and intvec
 Purpose:
 computes the roots of the global bfunction of I w.r.t. the weight (w,w).
 Assume:
 The basering is the nth Weyl algebra in characteristic 0 and for all
1<=i<=n the identity var(i+n)*var(i)=var(i)*var(i+1)+1 holds, i.e. the
sequence of variables is given by x(1),...,x(n),D(1),...,D(n),
where D(i) is the differential operator belonging to x(i).
Further we assume that I is holonomic.
 Background:
 In this proc, the initial ideal of I is computed according to the
algorithm by Masayuki Noro and then a system of linear equations is
solved by linear reductions.
 Note:
 In the output list, say L,
 L[1] of type ideal contains all the rational roots of a bfunction,
 L[2] of type intvec contains the multiplicities of above roots,
 optional L[3] of type string is the part of bfunction without rational roots.
Note, that a bfunction of degree 0 is encoded via L[1][1]=0, L[2]=0 and
L[3] is 1 (for nonzero constant) or 0 (for zero bfunction).
If s<>0, std is used for GB computations in characteristic 0,
otherwise, and by default, slimgb is used.
If t<>0, a matrix ordering is used for GB computations, otherwise,
and by default, a block ordering is used.
 Display:
 If printlevel=1, progress debug messages will be printed,
if printlevel>=2, all the debug messages will be printed.
Example:
 LIB "bfun.lib";
ring @D = 0,(x,y,Dx,Dy),dp;
def D = Weyl();
setring D;
ideal I = 3*x^2*Dy+2*y*Dx,2*x*Dx+3*y*Dy+6; I = std(I);
intvec w1 = 0,1;
intvec w2 = 2,3;
bfctIdeal(I,w1);
==> [1]:
==> _[1]=0
==> _[2]=2/3
==> _[3]=4/3
==> [2]:
==> 1,1,1
bfctIdeal(I,w2,0,1);
==> [1]:
==> _[1]=6
==> [2]:
==> 1
ideal J = I[size(I)]; // J is not holonomic by construction
bfctIdeal(J,w1); // bfunction of D/J w.r.t. w1 is nonzero
==> WARNING: given ideal is not holonomic
==> ... setting bound for degree of bfunction to 10 and proceeding
==> [1]:
==> _[1]=0
==> _[2]=2/3
==> _[3]=4/3
==> [2]:
==> 1,1,1
bfctIdeal(J,w2); // bfunction of D/J w.r.t. w2 is zero
==> WARNING: given ideal is not holonomic
==> ... setting bound for degree of bfunction to 10 and proceeding
==> // Intersection is zero
==> [1]:
==> _[1]=0
==> [2]:
==> 0
==> [3]:
==> 0

