Bernstein-Sato polynomial of a hypersurface is an important object with numerous applications. It is known, that it is complicated to obtain it computationally, as a number of open questions and challenges indicate. In this paper we propose a family of algorithms called checkRoot for optimized check of whether a given rational number is a root of Bernstein-Sato polynomial and the computations of its multiplicity. This algorithms are used in the new approach to compute the whole global or local Bernstein-Sato polynomial and b-function of a holonomic ideal with respect to weights. They are applied in numerous situations, where there is a possibility to compute an upper bound for the polynomial. Namely, it can be achieved by means of embedded resolution, for topologically equivalent singularities or using the formula of A'Campo and spectral numbers. We also present approaches to the logarithmic comparison problem and the intersection homology D-module. Several applications are presented as well as solutions to some challenges which were intractable with the classical methods. One of the main applications consists of computing of a stratification of affine space with the local b-function being constant on each stratum. Notably, the algorithm we propose does not employ primary decomposition. Also we apply our results for the computation of Bernstein-Sato polynomials for varieties. The methods from this paper have been implemented in Singular:Plural as libraries dmod.lib and bfun.lib. All the examples from the paper have been computed with this implementation. (−α), . . . P k (−α), f . Since J = D[s] ⇐⇒ J ∩ K[s] = K[s] ⇐⇒ K = D n , and gcd(b f (s), s + α) = 1 if and only if b f (−α) = 0, the result follows from applying Theorem 2.1 using q(s) = s + α.Once we know a system of generators of the annihilator of f s in D n [s], the last corollary provides an algorithm for checking whether a given rational number is a root of the b-function of f , using Gröbner bases in the Weyl algebra.a system of generators of Ann Dn[s] (f s ); Input 2: f , a polynomial in R n ; α, a number in Q >0 ; Output: true, if α is a root of b f (−s); false, otherwise; K := P 1 (−α), . . . , P k (−α), f ; K = J ∩ D n ⊆ D n G := reduced Gröbner basis of K w.r.t. ANY term ordering; return (G = {1});
MultiplicitiesTwo approaches to deal with multiplicities are presented. We start with a natural generalization of Corollary 2.3. Corollary 2.4. Let m α be the multiplicity of α as a root of b f (−s) and let us consider the ideals J i = Ann Dn[s] (f s ) + f, (s + α) i+1 ⊆ D n [s], i = 0, . . . , n. The following conditions are equivalent:Moreover if D n [s] J 0 J 1 · · · J m−1 = J m , then m α = m. In particular, m ≤ n and J m−1 = J m = · · · = J n .Proof. 1 ⇐⇒ 2. Since m α > i if and only if gcd(b f (s), (s+α) i+1 ) = (s+α) i+1 , the equivalence follows by applying Theorem 2.1 (1) using q(s) = (s + α) i+1 . 2 =⇒ 3. If (s + α) i ∈ J i ∩ K[s], then clearly J i ∩ K[s] (s + α) i+1 .