# Singular

##### 7.7.4.0. SannfsBFCT
Procedure from library `dmod.lib` (see dmod_lib).

Usage:
SannfsBFCT(f [,a,b,c]); f a poly, a,b,c optional ints

Return:
ring

Purpose:
compute a Groebner basis either of Ann(f^s)+<f> or of
Ann(f^s)+<f,f_1,...,f_n> in D[s]

Note:
Activate the output ring with the `setring` command.
This procedure, unlike SannfsBM, returns the ring D[s] with an anti-
elimination ordering for s.
The output ring contains an ideal `LD`, being a Groebner basis
either of Ann(f^s)+<f>, if a=0 (and by default), or of
Ann(f^s)+<f,f_1,...,f_n>, otherwise.
Here, f_i stands for the i-th partial derivative of f.
If b<>0, `std` is used for Groebner basis computations,
otherwise, and by default `slimgb` is used.
If c<>0, `std` is used for Groebner basis computations of
ideals <I+J> when I is already a Groebner basis of <I>.
Otherwise, and by default the engine determined by the switch b is
used. Note that in the case c<>0, the choice for b will be
overwritten only for the types of ideals mentioned above.
This means that if b<>0, specifying c has no effect.

Display:
If printlevel=1, progress debug messages will be printed,
if printlevel>=2, all the debug messages will be printed.

Example:
 ```LIB "dmod.lib"; ring r = 0,(x,y,z,w),Dp; poly F = x^3+y^3+z^3*w; // compute Ann(F^s)+ using slimgb only def A = SannfsBFCT(F); setring A; A; ==> // coefficients: QQ ==> // number of vars : 9 ==> // block 1 : ordering dp ==> // : names s ==> // block 2 : ordering dp ==> // : names x y z w Dx Dy Dz Dw ==> // block 3 : ordering C ==> // noncommutative relations: ==> // Dxx=x*Dx+1 ==> // Dyy=y*Dy+1 ==> // Dzz=z*Dz+1 ==> // Dww=w*Dw+1 LD; ==> LD[1]=z*Dz-3*w*Dw ==> LD[2]=3*s-x*Dx-y*Dy-3*w*Dw ==> LD[3]=y^2*Dx-x^2*Dy ==> LD[4]=z^2*w*Dy-y^2*Dz ==> LD[5]=z^3*Dy-3*y^2*Dw ==> LD[6]=z^2*w*Dx-x^2*Dz ==> LD[7]=z^3*Dx-3*x^2*Dw ==> LD[8]=z^3*w+x^3+y^3 ==> LD[9]=x^3*Dy+y^3*Dy+3*y^2*w*Dw+3*y^2 ==> LD[10]=x^3*Dx+x^2*y*Dy+3*x^2*w*Dw+3*x^2 ==> LD[11]=3*z*w^2*Dy*Dw-y^2*Dz^2+2*z*w*Dy ==> LD[12]=3*z*w^2*Dx*Dw-x^2*Dz^2+2*z*w*Dx ==> LD[13]=3*z^2*w^2*Dw+x^3*Dz+y^3*Dz+3*z^2*w ==> LD[14]=9*w^3*Dy*Dw^2-y^2*Dz^3+18*w^2*Dy*Dw+2*w*Dy ==> LD[15]=9*w^3*Dx*Dw^2-x^2*Dz^3+18*w^2*Dx*Dw+2*w*Dx ==> LD[16]=9*z*w^3*Dw^2+x^3*Dz^2+y^3*Dz^2+24*z*w^2*Dw+6*z*w ==> LD[17]=27*w^4*Dw^3+x^3*Dz^3+y^3*Dz^3+135*w^3*Dw^2+114*w^2*Dw+6*w // the Bernstein-Sato poly of F: vec2poly(pIntersect(s,LD)); ==> s^6+28/3*s^5+320/9*s^4+1910/27*s^3+2093/27*s^2+1198/27*s+280/27 // a fancier example: def R = reiffen(4,5); setring R; RC; // the Reiffen curve in 4,5 ==> xy4+y5+x4 // compute Ann(RC^s)+ // using std for GB computations of ideals // where I is already a GB of // and slimgb for other ideals def B = SannfsBFCT(RC,1,0,1); setring B; // the Bernstein-Sato poly of RC: (s-1)*vec2poly(pIntersect(s,LD)); ==> s^13+10*s^12+44*s^11+44099/400*s^10+13355001/80000*s^9+22138611/160000*s^\ 8+1747493/160000*s^7-7874303503/64000000*s^6-4244944536107/25600000000*s^\ 5-3066298289417/25600000000*s^4-2787777479229/51200000000*s^3-19980507461\ 787/1280000000000*s^2-663659243177931/256000000000000*s-48839201079669/25\ 6000000000000 ```