# Singular          ### 7.5.4 dmod_lib

Library:
dmod.lib
Purpose:
Algorithms for algebraic D-modules
Authors:
Viktor Levandovskyy, levandov@math.rwth-aachen.de
Jorge Martin Morales, jorge@unizar.es

Overview:
Let K be a field of characteristic 0. Given a polynomial ring
R = K[x_1,...,x_n] and a polynomial F in R,
one is interested in the R[1/F]-module of rank one, generated by
the symbol F^s for a symbolic discrete variable s.
In fact, the module R[1/F]*F^s has a structure of a D(R)[s]-module, where D(R)
is an n-th Weyl algebra K<x_1,...,x_n,d_1,...,d_n | d_j x_j = x_j d_j +1> and
D(R)[s] = D(R) tensored with K[s] over K.
Constructively, one needs to find a left ideal I = I(F^s) in D(R), such
that K[x_1,...,x_n,1/F]*F^s is isomorphic to D(R)/I as a D(R)-module.
We often write just D for D(R) and D[s] for D(R)[s].
One is interested in the following data:
- Ann F^s = I = I(F^s) in D(R)[s], denoted by LD in the output
- global Bernstein polynomial in K[s], denoted by bs,
- its minimal integer root s0, the list of all roots of bs, which are known
to be rational, with their multiplicities, which is denoted by BS
- Ann F^s0 = I(F^s0) in D(R), denoted by LD0 in the output
(LD0 is a holonomic ideal in D(R))
- Ann^(1) F^s in D(R)[s], denoted by LD1 (logarithmic derivations)
- an operator in D(R)[s], denoted by PS, such that the functional equality
PS*F^(s+1) = bs*F^s holds in K[x_1,...,x_n,1/F]*F^s.

References:

We provide the following implementations of algorithms:
(OT) the classical Ann F^s algorithm from Oaku and Takayama (Journal of
Pure and Applied Math., 1999),
(LOT) Levandovskyy's modification of the Oaku-Takayama algorithm (ISSAC 2007)
(BM) the Ann F^s algorithm by Briancon and Maisonobe (Remarques sur
l'ideal de Bernstein associe a des polynomes, preprint, 2002)
(LM08) V. Levandovskyy and J. Martin-Morales, ISSAC 2008
(C) Countinho, A Primer of Algebraic D-Modules,
(SST) Saito, Sturmfels, Takayama 'Groebner Deformations of Hypergeometric
Differential Equations', Springer, 2000

Guide:
- Ann F^s = I(F^s) = LD in D(R)[s] can be computed by Sannfs [BM, OT, LOT]
- Ann^(1) F^s in D(R)[s] can be computed by Sannfslog
- global Bernstein polynomial bs in K[s] can be computed by bernsteinBM
- Ann F^s0 = I(F^s0) = LD0 in D(R) can be computed by annfs0, annfs, annfsBM,
annfsOT, annfsLOT, annfs2, annfsRB etc.
- all the relevant data to F^s (LD, LD0, bs, PS) are computed by operatorBM
- operator PS can be computed via operatorModulo or operatorBM

- annihilator of F^{s1} for a number s1 is computed with annfspecial
- annihilator of F_1^s_1 * ... * F_p^s_p is computed with annfsBMI
- computing the multiplicity of a rational number r in the Bernstein poly
of a given ideal goes with checkRoot
- check, whether a given univariate polynomial divides the Bernstein poly
goes with checkFactor

Procedures:

 7.5.4.0. annfs compute Ann F^s0 in D and Bernstein polynomial for a poly F 7.5.4.0. annfspecial compute Ann F^n from Ann F^s for a polynomial F and a number n 7.5.4.0. Sannfs compute Ann F^s in D[s] for a polynomial F 7.5.4.0. Sannfslog compute Ann^(1) F^s in D[s] for a polynomial F 7.5.4.0. bernsteinBM compute global Bernstein polynomial for a polynomial F (algorithm of Briancon-Maisonobe) 7.5.4.0. bernsteinLift compute a possible multiple of Bernstein polynomial via lift-like procedure 7.5.4.0. operatorBM compute Ann F^s, Ann F^s0, BS and PS for a polynomial F (algorithm of Briancon-Maisonobe) 7.5.4.0. operatorModulo compute PS via the modulo approach 7.5.4.0. annfsParamBM compute the generic Ann F^s (algorithm by Briancon and Maisonobe) and exceptional parametric constellations for a polynomial F with parametric coefficients 7.5.4.0. annfsBMI compute Ann F^s and Bernstein ideal for a polynomial F=f1*..*fP (multivariate algorithm of Briancon-Maisonobe) 7.5.4.0. checkRoot check if a given rational is a root of the global Bernstein polynomial of F and compute its multiplicity 7.5.4.0. SannfsBFCT compute Ann F^s in D[s] for a polynomial F (algorithm of Briancon-Maisonobe, other output ordering) 7.5.4.0. annfs0 compute Ann F^s0 in D and Bernstein polynomial from the known Ann F^s in D[s] 7.5.4.0. annfs2 compute Ann F^s0 in D and Bernstein polynomial from the known Ann F^s in D[s] by using a trick of Noro 7.5.4.0. annfsRB compute Ann F^s0 in D and Bernstein polynomial from the known Ann F^s in D[s] by using Jacobian ideal 7.5.4.0. checkFactor check whether a polynomial q in K[s] is a factor of the global Bernstein polynomial of F from the known Ann F^s in D[s] 7.5.4.0. arrange create a poly, describing a full hyperplane arrangement 7.5.4.0. reiffen create a poly, describing a Reiffen curve 7.5.4.0. isHolonomic check whether a module is holonomic 7.5.4.0. convloc replace global orderings with local in the ringlist L 7.5.4.0. minIntRoot minimal integer root among the roots of a maximal ideal P 7.5.4.0. isRational check whether n is a rational number 