# Singular          ##### 7.5.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 b-function of I w.r.t. the weight (-w,w).

Assume:
The basering is the n-th 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 of type ideal contains all the rational roots of a b-function,
- L of type intvec contains the multiplicities of above roots,
- optional L of type string is the part of b-function without rational roots.
Note, that a b-function of degree 0 is encoded via L=0, L=0 and
L is 1 (for nonzero constant) or 0 (for zero b-function).
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); ==> : ==> _=0 ==> _=-2/3 ==> _=-4/3 ==> : ==> 1,1,1 bfctIdeal(I,w2,0,1); ==> : ==> _=-6 ==> : ==> 1 ideal J = I[size(I)]; // J is not holonomic by construction bfctIdeal(J,w1); // b-function of D/J w.r.t. w1 is non-zero ==> WARNING: given ideal is not holonomic ==> ... setting bound for degree of b-function to 10 and proceeding ==> : ==> _=0 ==> _=-2/3 ==> _=-4/3 ==> : ==> 1,1,1 bfctIdeal(J,w2); // b-function of D/J w.r.t. w2 is zero ==> WARNING: given ideal is not holonomic ==> ... setting bound for degree of b-function to 10 and proceeding ==> // Intersection is zero ==> : ==> _=0 ==> : ==> 0 ==> : ==> 0 ```

### Misc 