# Singular

##### 7.7.22.0. bfctBound
Procedure from library `dmodloc.lib` (see dmodloc_lib).

Usage:
bfctBound (I,f[,primdec]); I ideal, f poly, primdec optional string

Assume:
The basering is the n-th Weyl algebra W over a field of 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).
Moreover, assume that I is holonomic.

Return:
list of roots (of type ideal) and multiplicities (of type intvec) of a multiple of the b-function for f^s*u at a generic root of f. Here, u stands for [1] in D/I.

Remarks:
Reference: (OTT), Algorithm 3.4

Note:
This procedure requires to compute a primary decomposition in a commutative ring. The optional string primdec can be used to specify the algorithm to do so. It may either be `GTZ' (Gianni, Trager, Zacharias) or `SY' (Shimoyama, Yokoyama). By default, `GTZ' is used.
If printlevel=1, progress debug messages will be printed, if printlevel>=2, all the debug messages will be printed.

Example:
 ```LIB "dmodloc.lib"; ring r = 0,(x,y,Dx,Dy),dp; def W = Weyl(); setring W; poly tx,ty = x*Dx, y*Dy; ideal I = // Appel F1 with parameters (2,-3,-2,5) tx*(tx+ty+4)-x*(tx+ty+2)*(tx-3), ty*(tx+ty+4)-y*(tx+ty+2)*(ty-2), (x-y)*Dx*Dy+2*Dx-3*Dy; kill tx,ty; poly f = x-1; bfctBound(I,f); ==> [1]: ==> _[1]=-1 ==> _[2]=-7 ==> [2]: ==> 1,1 ```