Computing Bernstein–Sato ideals and s-parametric annihilators

First, we need to load the D-module library “dmod_lib”.

[1]:
LIB "dmod.lib";
[1]:
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/dmod.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/polylib.lib (4.2.0.0,Dec_2020)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/ring.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/primdec.lib (4.2.0.0,Mar_2021)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/absfact.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/triang.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/random.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/inout.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/general.lib (4.1.2.0,Feb_2019)
// ** loaded dmodideal.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/ncpreim.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/ncalg.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/toric.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/dmodloc.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/bfun.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/presolve.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/dmodapp.lib (4.1.3.0,Mar_2020)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/ncModslimgb.lib (4.1.3.0,Apr_2020)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/resources.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/parallel.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/tasks.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/sing.lib (4.2.0.2,May_2021)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/control.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/homolog.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/deform.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/gmssing.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/linalg.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/gkdim.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/qhmoduli.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/rinvar.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/zeroset.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/primitiv.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/elim.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/nctools.lib (4.1.2.0,Feb_2019)
// ** loaded /usr/local/bin/../Cellar/singular/4.2.1_1/bin/../share/singular/LIB/matrix.lib (4.1.2.0,Feb_2019)

Example 3.7

The following code computes the \(s\)-parametric annihilator \(\hbox{Ann}_{D_n[s]}(f^s)\) of the polynomial \(f = (x-1)(x-2).\)

[2]:
ring r = 0,x,dp;
poly f = (x-1)*(x-2);
def A = operatorBM(f); setring A;

The ideal LD of the ring \(A\) is the \(s\)-parametric annihilator of \(f.\)

[3]:
LD; // s-parametric annihilator of f
[3]:
LD[1]=x^2*Dx-3*x*Dx-2*x*s+2*Dx+3*s

We also obtain the Bernstein-Sato polynomial \(b_f\) of \(f\) as well as its roots with multiplicities.

[4]:
bs; // the Bernstein-Sato polynomial of f
BS; // roots of the Bernstein-Sato polynomial of f and their multiplicities
[4]:
s+1
[1]:
   _[1]=-1
[2]:
   1

We now compute a Bernstein-Sato operator of \(f\). Note that Bernstein-Sato operators are unique only modulo \(\hbox{Ann}_{D_n[s]}(f^{s+1}).\)

[5]:
PS; // a Bernstein-Sato operator of f
[5]:
2*x*Dx-3*Dx-4*s-4