Database of annihilators

Database for annihilating operators, i.e. elements of certain OreAlgebras, for various discrete and differentiable symbolic functions.

The following discrete functions are supported:
  • binomial(an+b, cn+d) where a,b,c,d are fixed rational numbers and n is the variable
  • factorial(n)
  • harmonic_number(n)
The follwing differentiable functions are supported:
  • Trigonometric functions: sin(x), cos(x), arcsin(x), arccos(x), arctan(x), arccsc(x), arcsec(x)
  • Hyperbolic functions: sinh(x), cosh(x), arcsinh(x), arctanh(x), arccsch(x)
  • Logarithmic funcions: exp(x), log(x), dilog(x)
  • Airy functions: airy_ai(x), airy_bi(x), airy_ai_prime(x), airy_bi_prime(x)
  • Bessel functions: bessel_I(k,x), bessel_J(k,x), bessel_K(k,x), bessel_Y(k,x), spherical_bessel_J(k,x) where k is a fixed rational number and x is the variable
  • Error functions: erf(x), erfc(x), erfi(x)
  • Integrals: exp_integral_e(k,x), exp_integral_ei(x), sin_integral(x), cos_integral(x), sinh_integral(x), cosh_integral(x)
  • Other: sqrt(x), elliptic_ec(x), elliptic_kc(x)


  • Clemens Hofstadler (2018-03-01)


symbolic_database(A, f[, inner, k]) Tries to return an annihilating operator of a symbolic operator f, i.e.
ore_algebra.dfinite_symbolic.symbolic_database(A, f, inner=None, k=0)

Tries to return an annihilating operator of a symbolic operator f, i.e. an element from a (suitable) OreAlgebra A that represents a differential/recurrence equation for the symoblic epxression f(x)


  • A – an OreAlgebra from which the annihilating operator for f should come from
  • f - a symbolic operator. It is important that not the symbolic expression itself is handled to this method but only
    the operator (which can be accessed via the command .operator()
  • inner (default None) – for differentiable functions an inner function can be handed over. Then not an operator
    for f(x) but for f(inner) is returned. However inner has to be a linear function, i.e. of the form u*x + v for u,v in QQ. For discrete functions inner does not have any impact.
  • k (default 0) – a rational number that has to be handed over if the symolic operator f depends on two variables (such as binomial(k,n) or bessel_I(k,x) ) because only operators for univariate functions can be returned and
    therefore one variable has to be assigned with a certain value k


An element from the OreAlgebra A, that represents a differential/recurrence equation which annihilates f(x) or if
inner is not None an element from A which annihilates f(inner).


#discrete case
sage: from ore_algebra import *
sage: from ore_algebra.dfinite_symbolic import symbolic_database
sage: A = OreAlgebra(QQ['n'],'Sn')
sage: n = var('n')
sage: f = harmonic_number(n).operator()
sage: symbolic_database(A,f)
(n + 2)*Sn^2 + (-2*n - 3)*Sn + n + 1
sage: g = binomial(5,n).operator()
sage: symbolic_database(A,g,None,5)
(n + 1)*Sn + n - 5

#differential case
sage: B = OreAlgebra(QQ['x'],'Dx')
sage: x = var('x')
sage: f = sin(x).operator()
sage: symbolic_database(B,f)
Dx^2 + 1
sage: g = log(3*x+4).operator()
sage: symbolic_database(B,g,3*x+4)
(3*x + 4)*Dx^2 + 3*Dx
sage: h = bessel_I(4,2*x+1).operator()
sage: symbolic_database(B,h,2*x+1,4)
(4*x^2 + 4*x + 1)*Dx^2 + (4*x + 2)*Dx - 16*x^2 - 16*x - 68