Algorithms for Holonomic Functions

Manuel Kauers

Research Institute for Symbolic Computation Johannes Kepler University Austria Context Goal: Algorithms for dealing with functions: Goal: Algorithms for dealing with functions: ◮ proving formulas Goal: Algorithms for dealing with functions: ◮ proving formulas ◮ evaluating sums and Goal: Algorithms for dealing with functions: ◮ proving formulas ◮ evaluating sums and integrals ◮ computing series expansions Goal: Algorithms for dealing with functions: ◮ proving formulas ◮ evaluating sums and integrals ◮ computing series expansions ◮ determining singularities Goal: Algorithms for dealing with functions: ◮ proving formulas ◮ evaluating sums and integrals ◮ computing series expansions ◮ determining singularities ◮ approximating values Goal: Algorithms for dealing with functions: ◮ proving formulas ◮ evaluating sums and integrals ◮ computing series expansions ◮ determining singularities ◮ approximating function values ◮ plotting the graph Goal: Algorithms for dealing with functions: ◮ proving formulas ◮ evaluating sums and integrals ◮ computing series expansions ◮ determining singularities ◮ approximating function values ◮ plotting the graph ◮ estimating the growth Goal: Algorithms for dealing with functions: ◮ proving formulas ◮ evaluating sums and integrals ◮ computing series expansions ◮ determining singularities ◮ approximating function values ◮ plotting the graph ◮ estimating the growth

Want: Algorithms which take as input a function and produce answers to these questions as output. Goal: Algorithms for dealing with functions: ◮ proving formulas ◮ evaluating sums and integrals ◮ computing series expansions ◮ determining singularities ◮ approximating function values ◮ plotting the graph ◮ estimating the growth

Want: Algorithms which take as input a function and produce answers to these questions as output. Question: What does it mean to “take as input a function”? Question: What does it mean to “take as input a function”? Question: What does it mean to “take as input a function”? Answer: Question: What does it mean to “take as input a function”? Answer: NOTHING! Question: What does it mean to “take as input a function”? Answer: NOTHING! A real or complex function is an infinite object: Question: What does it mean to “take as input a function”? Answer: NOTHING! A real or complex function is an infinite object: ◮ For each of the infinitely many x, we must specify f(x) Question: What does it mean to “take as input a function”? Answer: NOTHING! A real or complex function is an infinite object: ◮ For each of the infinitely many x, we must specify f(x) ◮ For each value f(x) we must specify infinitely many decimal digits Question: What does it mean to “take as input a function”? Answer: NOTHING! A real or complex function is an infinite object: ◮ For each of the infinitely many x, we must specify f(x) ◮ For each value f(x) we must specify infinitely many decimal digits This is an infinite amount of information. Question: What does it mean to “take as input a function”? Answer: NOTHING! A real or complex function is an infinite object: ◮ For each of the infinitely many x, we must specify f(x) ◮ For each value f(x) we must specify infinitely many decimal digits This is an infinite amount of information. It is impossible to store this in a finite data structure. Question: What does it mean to “take as input a function”? Answer: NOTHING! A real or complex function is an infinite object: ◮ For each of the infinitely many x, we must specify f(x) ◮ For each value f(x) we must specify infinitely many decimal digits This is an infinite amount of information. It is impossible to store this in a finite data structure. But algorithms can only operate on finite data structures. Question: What does it mean to “take as input a function”? Answer: NOTHING! A real or complex function is an infinite object: ◮ For each of the infinitely many x, we must specify f(x) ◮ For each value f(x) we must specify infinitely many decimal digits This is an infinite amount of information. It is impossible to store this in a finite data structure. But algorithms can only operate on finite data structures. Solution: Consider algorithms for suitably defined classes of functions. Solution: Consider algorithms for suitably defined classes of functions. A suitably defined class of functions should be Solution: Consider algorithms for suitably defined classes of functions. A suitably defined class of functions should be ◮ not too big, because we want to be able to write down each function in the class with a finite amount of data only, and we want to compute with these. Solution: Consider algorithms for suitably defined classes of functions. A suitably defined class of functions should be ◮ not too big, because we want to be able to write down each function in the class with a finite amount of data only, and we want to compute with these. ◮ not too small, because we want the class to contain as many functions as possible of those which appear in applications (e.g. in particle physics). Solution: Consider algorithms for suitably defined classes of functions. A suitably defined class of functions should be ◮ not too big, because we want to be able to write down each function in the class with a finite amount of data only, and we want to compute with these. ◮ not too small, because we want the class to contain as many functions as possible of those which appear in applications (e.g. in particle physics).

Deciding on the right function class is the first step in algorithmic problem solving. Some common classes of functions: Some common classes of functions: Some common classes of functions: Some common classes of functions: Some common classes of functions: Some common classes of functions: Some common classes of functions: Commercial: A good reference for these classes of functions (and the corresponding algorithms) is Commercial: A good reference for these classes of functions (and the corresponding algorithms) is Holonomy: The Case of One Variable Definition (continuous case). A function f is called holonomic if there exists p0,...,pr, not all zero, such that

(r) p (x)f(x)+ p (x)f ′(x)+ p (x)f ′′(x)+ + p (x)f (x) = 0. 0 1 2 ··· r Definition (continuous case). A function f is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

(r) p (x)f(x)+ p (x)f ′(x)+ p (x)f ′′(x)+ + p (x)f (x) = 0. 0 1 2 ··· r

Examples: Definition (continuous case). A function f is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

(r) p (x)f(x)+ p (x)f ′(x)+ p (x)f ′′(x)+ + p (x)f (x) = 0. 0 1 2 ··· r

Examples: ◮ exp(x): Definition (continuous case). A function f is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

(r) p (x)f(x)+ p (x)f ′(x)+ p (x)f ′′(x)+ + p (x)f (x) = 0. 0 1 2 ··· r

Examples: ◮ exp(x): f (x) f(x) = 0 ′ − Definition (continuous case). A function f is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

(r) p (x)f(x)+ p (x)f ′(x)+ p (x)f ′′(x)+ + p (x)f (x) = 0. 0 1 2 ··· r

Examples: ◮ exp(x): f (x) f(x) = 0 ′ − ◮ log(1 x): − Definition (continuous case). A function f is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

(r) p (x)f(x)+ p (x)f ′(x)+ p (x)f ′′(x)+ + p (x)f (x) = 0. 0 1 2 ··· r

Examples: ◮ exp(x): f (x) f(x) = 0 ′ − ◮ log(1 x): (x 1)f (x) f (x) = 0 − − ′′ − ′ Definition (continuous case). A function f is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

(r) p (x)f(x)+ p (x)f ′(x)+ p (x)f ′′(x)+ + p (x)f (x) = 0. 0 1 2 ··· r

Examples: ◮ exp(x): f (x) f(x) = 0 ′ − ◮ log(1 x): (x 1)f (x) f (x) = 0 − − ′′ − ′ ◮ 1 : 1+√1 x2 − Definition (continuous case). A function f is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

(r) p (x)f(x)+ p (x)f ′(x)+ p (x)f ′′(x)+ + p (x)f (x) = 0. 0 1 2 ··· r

Examples: ◮ exp(x): f (x) f(x) = 0 ′ − ◮ log(1 x): (x 1)f (x) f (x) = 0 − − ′′ − ′ ◮ 1 : (x3 x)f (x)+(4x2 3)f (x) + 2xf(x) = 0 1+√1 x2 ′′ ′ − − − Definition (continuous case). A function f is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

(r) p (x)f(x)+ p (x)f ′(x)+ p (x)f ′′(x)+ + p (x)f (x) = 0. 0 1 2 ··· r

Examples: ◮ exp(x): f (x) f(x) = 0 ′ − ◮ log(1 x): (x 1)f (x) f (x) = 0 − − ′′ − ′ ◮ 1 : (x3 x)f (x)+(4x2 3)f (x) + 2xf(x) = 0 1+√1 x2 ′′ ′ − − − ◮ Bessel functions, Hankel functions, Struve functions, Airy functions, Polylogarithms, Elliptic integrals, the Error function, Kelvin functions, Mathieu functions, ... Definition (continuous case). A function f is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

(r) p (x)f(x)+ p (x)f ′(x)+ p (x)f ′′(x)+ + p (x)f (x) = 0. 0 1 2 ··· r

Examples: ◮ exp(x): f (x) f(x) = 0 ′ − ◮ log(1 x): (x 1)f (x) f (x) = 0 − − ′′ − ′ ◮ 1 : (x3 x)f (x)+(4x2 3)f (x) + 2xf(x) = 0 1+√1 x2 ′′ ′ − − − ◮ Bessel functions, Hankel functions, Struve functions, Airy functions, Polylogarithms, Elliptic integrals, the Error function, Kelvin functions, Mathieu functions, ... ◮ Many functions which have no name and no closed form. Definition (continuous case). A function f is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

(r) p (x)f(x)+ p (x)f ′(x)+ p (x)f ′′(x)+ + p (x)f (x) = 0. 0 1 2 ··· r

Not holonomic: Definition (continuous case). A function f is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

(r) p (x)f(x)+ p (x)f ′(x)+ p (x)f ′′(x)+ + p (x)f (x) = 0. 0 1 2 ··· r

Not holonomic: ◮ exp(exp(x) 1). − Definition (continuous case). A function f is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

(r) p (x)f(x)+ p (x)f ′(x)+ p (x)f ′′(x)+ + p (x)f (x) = 0. 0 1 2 ··· r

Not holonomic: ◮ exp(exp(x) 1). − ◮ The Riemann Zeta function. Definition (continuous case). A function f is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

(r) p (x)f(x)+ p (x)f ′(x)+ p (x)f ′′(x)+ + p (x)f (x) = 0. 0 1 2 ··· r

Not holonomic: ◮ exp(exp(x) 1). − ◮ The Riemann Zeta function. ◮ Many functions which have no name and no closed form. Definition (continuous case). A function f is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

(r) p (x)f(x)+ p (x)f ′(x)+ p (x)f ′′(x)+ + p (x)f (x) = 0. 0 1 2 ··· r

Not holonomic: ◮ exp(exp(x) 1). − ◮ The Riemann Zeta function. ◮ Many functions which have no name and no closed form. This means that these functions can (provably) not be viewed as so- lutions of a linear differential equation with coefficients. Definition (continuous case). A function f is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

(r) p (x)f(x)+ p (x)f ′(x)+ p (x)f ′′(x)+ + p (x)f (x) = 0. 0 1 2 ··· r

Approximately 60% of the functions in Abramowitz and Stegun’s handbook fall into this category. Theorem. The solution set of a linear differential equation of order r is a vector space of dimension r. Theorem. The solution set of a linear differential equation of order r is a vector space of dimension r. Consequence: A holonomic function f is uniquely determined by Theorem. The solution set of a linear differential equation of order r is a vector space of dimension r. Consequence: A holonomic function f is uniquely determined by ◮ The differential equation Theorem. The solution set of a linear differential equation of order r is a vector space of dimension r. Consequence: A holonomic function f is uniquely determined by ◮ The differential equation ◮ (k) A finite number of initial values f(0),f ′(0),f ′′(0),...,f (0) Theorem. The solution set of a linear differential equation of order r is a vector space of dimension r. Consequence: A holonomic function f is uniquely determined by ◮ The differential equation ◮ (k) A finite number of initial values f(0),f ′(0),f ′′(0),...,f (0) (Usually, k = r suffices.) Theorem. The solution set of a linear differential equation of order r is a vector space of dimension r. Consequence: A holonomic function f is uniquely determined by ◮ The differential equation ◮ (k) A finite number of initial values f(0),f ′(0),f ′′(0),...,f (0) (Usually, k = r suffices.) Consequence: A holonomic function can be represented exactly by a finite amount of data. Theorem. The solution set of a linear differential equation of order r is a vector space of dimension r. Consequence: A holonomic function f is uniquely determined by ◮ The differential equation ◮ (k) A finite number of initial values f(0),f ′(0),f ′′(0),...,f (0) (Usually, k = r suffices.) Consequence: A holonomic function can be represented exactly by a finite amount of data. (assuming that the constants appearing in equation and initial values belong to a suitable subfield of C, e.g., to Q.) Examples. Examples. ◮ f(x) = exp(x) Examples. ◮ f(x) = exp(x) f (x) f(x) = 0, f(0) = 1 ⇐⇒ ′ − Examples. ◮ f(x) = exp(x) f (x) f(x) = 0, f(0) = 1 ⇐⇒ ′ − ◮ f(x) = log(1 x) − Examples. ◮ f(x) = exp(x) f (x) f(x) = 0, f(0) = 1 ⇐⇒ ′ − ◮ f(x) = log(1 x) − (x 1)f (x) f (x) = 0, f(0) = 0,f (0) = 1 ⇐⇒ − ′′ − ′ ′ − Examples. ◮ f(x) = exp(x) f (x) f(x) = 0, f(0) = 1 ⇐⇒ ′ − ◮ f(x) = log(1 x) − (x 1)f (x) f (x) = 0, f(0) = 0,f (0) = 1 ⇐⇒ − ′′ − ′ ′ − ◮ f(x)= 1 1+√1 x2 − Examples. ◮ f(x) = exp(x) f (x) f(x) = 0, f(0) = 1 ⇐⇒ ′ − ◮ f(x) = log(1 x) − (x 1)f (x) f (x) = 0, f(0) = 0,f (0) = 1 ⇐⇒ − ′′ − ′ ′ − ◮ f(x)= 1 1+√1 x2 3 − 2 (x x)f ′′(x)+(4x 3)f ′(x) + 2xf(x) = 0, ⇐⇒ − 1 − f(0) = 2 ,f ′(0) = 0 Examples. ◮ f(x) = exp(x) f (x) f(x) = 0, f(0) = 1 ⇐⇒ ′ − ◮ f(x) = log(1 x) − (x 1)f (x) f (x) = 0, f(0) = 0,f (0) = 1 ⇐⇒ − ′′ − ′ ′ − ◮ f(x)= 1 1+√1 x2 3 − 2 (x x)f ′′(x)+(4x 3)f ′(x) + 2xf(x) = 0, ⇐⇒ − 1 − f(0) = 2 ,f ′(0) = 0 ◮ f(x)= the fifth modified of the first kind Examples. ◮ f(x) = exp(x) f (x) f(x) = 0, f(0) = 1 ⇐⇒ ′ − ◮ f(x) = log(1 x) − (x 1)f (x) f (x) = 0, f(0) = 0,f (0) = 1 ⇐⇒ − ′′ − ′ ′ − ◮ f(x)= 1 1+√1 x2 3 − 2 (x x)f ′′(x)+(4x 3)f ′(x) + 2xf(x) = 0, ⇐⇒ − 1 − f(0) = 2 ,f ′(0) = 0 ◮ f(x)= the fifth modified Bessel function of the first kind x2f (x)+ xf (x) (x2 + 25)f(x) = 0, ⇐⇒ ′′ ′ − f(0) = f (0) = = f (4)(0) = 0,f (5)(0) = 1 ′ ··· 32 Examples. ◮ f(x) = exp(x) f (x) f(x) = 0, f(0) = 1 ⇐⇒ ′ − ◮ f(x) = log(1 x) − (x 1)f (x) f (x) = 0, f(0) = 0,f (0) = 1 ⇐⇒ − ′′ − ′ ′ − ◮ f(x)= 1 1+√1 x2 3 − 2 (x x)f ′′(x)+(4x 3)f ′(x) + 2xf(x) = 0, ⇐⇒ − 1 − f(0) = 2 ,f ′(0) = 0 ◮ f(x)= the fifth modified Bessel function of the first kind x2f (x)+ xf (x) (x2 + 25)f(x) = 0, ⇐⇒ ′′ ′ − f(0) = f (0) = = f (4)(0) = 0,f (5)(0) = 1 ′ ··· 32 ◮ ... Definition (discrete case). A (an)n∞=0 is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

p (n)a + p (n)a + p (n)a + + p (n)a = 0. 0 n 1 n+1 2 n+2 ··· r n+r Definition (discrete case). A sequence (an)n∞=0 is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

p (n)a + p (n)a + p (n)a + + p (n)a = 0. 0 n 1 n+1 2 n+2 ··· r n+r

Examples: Definition (discrete case). A sequence (an)n∞=0 is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

p (n)a + p (n)a + p (n)a + + p (n)a = 0. 0 n 1 n+1 2 n+2 ··· r n+r

Examples: ◮ 2n: Definition (discrete case). A sequence (an)n∞=0 is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

p (n)a + p (n)a + p (n)a + + p (n)a = 0. 0 n 1 n+1 2 n+2 ··· r n+r

Examples: ◮ 2n: a 2a = 0 n+1 − n Definition (discrete case). A sequence (an)n∞=0 is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

p (n)a + p (n)a + p (n)a + + p (n)a = 0. 0 n 1 n+1 2 n+2 ··· r n+r

Examples: ◮ 2n: a 2a = 0 n+1 − n ◮ n!: Definition (discrete case). A sequence (an)n∞=0 is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

p (n)a + p (n)a + p (n)a + + p (n)a = 0. 0 n 1 n+1 2 n+2 ··· r n+r

Examples: ◮ 2n: a 2a = 0 n+1 − n ◮ n!: a (n + 1)a = 0 n+1 − n Definition (discrete case). A sequence (an)n∞=0 is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

p (n)a + p (n)a + p (n)a + + p (n)a = 0. 0 n 1 n+1 2 n+2 ··· r n+r

Examples: ◮ 2n: a 2a = 0 n+1 − n ◮ n!: an+1 (n + 1)an = 0 k − ◮ n ( 1) k=0 −k! : P Definition (discrete case). A sequence (an)n∞=0 is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

p (n)a + p (n)a + p (n)a + + p (n)a = 0. 0 n 1 n+1 2 n+2 ··· r n+r

Examples: ◮ 2n: a 2a = 0 n+1 − n ◮ n!: a (n + 1)a = 0 n+1 − n n ( 1)k ◮ − : (n + 2)a (n + 1)a a = 0 k=0 k! n+2 − n+1 − n P Definition (discrete case). A sequence (an)n∞=0 is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

p (n)a + p (n)a + p (n)a + + p (n)a = 0. 0 n 1 n+1 2 n+2 ··· r n+r

Examples: ◮ 2n: a 2a = 0 n+1 − n ◮ n!: a (n + 1)a = 0 n+1 − n n ( 1)k ◮ − : (n + 2)a (n + 1)a a = 0 k=0 k! n+2 − n+1 − n ◮ FibonacciP numbers, Harmonic numbers, Perrin numbers, diagonal Delannoy numbers, Motzkin numbers, Catalan numbers, Apery numbers, Schr¨oder numbers, ... Definition (discrete case). A sequence (an)n∞=0 is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

p (n)a + p (n)a + p (n)a + + p (n)a = 0. 0 n 1 n+1 2 n+2 ··· r n+r

Examples: ◮ 2n: a 2a = 0 n+1 − n ◮ n!: a (n + 1)a = 0 n+1 − n n ( 1)k ◮ − : (n + 2)a (n + 1)a a = 0 k=0 k! n+2 − n+1 − n ◮ FibonacciP numbers, Harmonic numbers, Perrin numbers, diagonal Delannoy numbers, Motzkin numbers, Catalan numbers, Apery numbers, Schr¨oder numbers, ... ◮ Many functions which have no name and no closed form. Definition (discrete case). A sequence (an)n∞=0 is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

p (n)a + p (n)a + p (n)a + + p (n)a = 0. 0 n 1 n+1 2 n+2 ··· r n+r

Not holonomic: Definition (discrete case). A sequence (an)n∞=0 is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

p (n)a + p (n)a + p (n)a + + p (n)a = 0. 0 n 1 n+1 2 n+2 ··· r n+r

Not holonomic: n ◮ 22 . Definition (discrete case). A sequence (an)n∞=0 is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

p (n)a + p (n)a + p (n)a + + p (n)a = 0. 0 n 1 n+1 2 n+2 ··· r n+r

Not holonomic: n ◮ 22 . ◮ The sequence of prime numbers. Definition (discrete case). A sequence (an)n∞=0 is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

p (n)a + p (n)a + p (n)a + + p (n)a = 0. 0 n 1 n+1 2 n+2 ··· r n+r

Not holonomic: n ◮ 22 . ◮ The sequence of prime numbers. ◮ Many which have no name and no closed form. Definition (discrete case). A sequence (an)n∞=0 is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

p (n)a + p (n)a + p (n)a + + p (n)a = 0. 0 n 1 n+1 2 n+2 ··· r n+r

Not holonomic: n ◮ 22 . ◮ The sequence of prime numbers. ◮ Many sequences which have no name and no closed form. This means that these sequences can (provably) not be viewed as solutions of a linear recurrence equation with polynomial coefficients. Definition (discrete case). A sequence (an)n∞=0 is called holonomic if there exists polynomials p0,...,pr, not all zero, such that

p (n)a + p (n)a + p (n)a + + p (n)a = 0. 0 n 1 n+1 2 n+2 ··· r n+r

Approximately 25% of the sequences in Sloane’s Online Encyclopedia of Integer Sequences fall into this category. Theorem. The solution set of a linear recurrence equation of order r whose leading coefficient has s integer roots greater than r is a vector space of dimension s + r. Theorem. The solution set of a linear recurrence equation of order r whose leading coefficient has s integer roots greater than r is a vector space of dimension s + r.

Consequence: A holonomic sequence (an)n∞=0 is uniquely determined by Theorem. The solution set of a linear recurrence equation of order r whose leading coefficient has s integer roots greater than r is a vector space of dimension s + r.

Consequence: A holonomic sequence (an)n∞=0 is uniquely determined by ◮ The recurrence equation Theorem. The solution set of a linear recurrence equation of order r whose leading coefficient has s integer roots greater than r is a vector space of dimension s + r.

Consequence: A holonomic sequence (an)n∞=0 is uniquely determined by ◮ The recurrence equation ◮ A finite number of initial values a0,a1,a2,...,ak Theorem. The solution set of a linear recurrence equation of order r whose leading coefficient has s integer roots greater than r is a vector space of dimension s + r.

Consequence: A holonomic sequence (an)n∞=0 is uniquely determined by ◮ The recurrence equation ◮ A finite number of initial values a0,a1,a2,...,ak (Usually, k = r suffices.) Theorem. The solution set of a linear recurrence equation of order r whose leading coefficient has s integer roots greater than r is a vector space of dimension s + r.

Consequence: A holonomic sequence (an)n∞=0 is uniquely determined by ◮ The recurrence equation ◮ A finite number of initial values a0,a1,a2,...,ak (Usually, k = r suffices.) Consequence: A holonomic sequence can be represented exactly by a finite amount of data. Theorem. The solution set of a linear recurrence equation of order r whose leading coefficient has s integer roots greater than r is a vector space of dimension s + r.

Consequence: A holonomic sequence (an)n∞=0 is uniquely determined by ◮ The recurrence equation ◮ A finite number of initial values a0,a1,a2,...,ak (Usually, k = r suffices.) Consequence: A holonomic sequence can be represented exactly by a finite amount of data. (assuming that the constants appearing in equation and initial values belong to a suitable subfield of C, e.g., to Q.) Examples. Examples. ◮ n an = 2 Examples. ◮ n an = 2 a 2a = 0, a = 1 ⇐⇒ n+1 − n 0 Examples. ◮ n an = 2 a 2a = 0, a = 1 ⇐⇒ n+1 − n 0 ◮ an = n! Examples. ◮ n an = 2 a 2a = 0, a = 1 ⇐⇒ n+1 − n 0 ◮ an = n! a (n + 1)a = 0, a = 1 ⇐⇒ n+1 − n 0 Examples. ◮ n an = 2 a 2a = 0, a = 1 ⇐⇒ n+1 − n 0 ◮ an = n! a (n + 1)a = 0, a = 1 ⇐⇒ n+1 − n 0 k ◮ n ( 1) an = k=0 −k! P Examples. ◮ n an = 2 a 2a = 0, a = 1 ⇐⇒ n+1 − n 0 ◮ an = n! a (n + 1)a = 0, a = 1 ⇐⇒ n+1 − n 0 k ◮ n ( 1) an = k=0 −k! P(n + 2)an+2 (n + 1)an+1 an = 0, ⇐⇒ − − a0 = 1,a1 = 0 Examples. ◮ n an = 2 a 2a = 0, a = 1 ⇐⇒ n+1 − n 0 ◮ an = n! a (n + 1)a = 0, a = 1 ⇐⇒ n+1 − n 0 k ◮ n ( 1) an = k=0 −k! P(n + 2)an+2 (n + 1)an+1 an = 0, ⇐⇒ − − a0 = 1,a1 = 0 ◮ an = the number of involutions of n letters Examples. ◮ n an = 2 a 2a = 0, a = 1 ⇐⇒ n+1 − n 0 ◮ an = n! a (n + 1)a = 0, a = 1 ⇐⇒ n+1 − n 0 k ◮ n ( 1) an = k=0 −k! P(n + 2)an+2 (n + 1)an+1 an = 0, ⇐⇒ − − a0 = 1,a1 = 0 ◮ an = the number of involutions of n letters a + na (3n + 6)a (n + 1)(n + 2)a = 0, ⇐⇒ n+3 n+2 − n+1 − n a0 = 1,a1 = 1,a2 = 2 Examples. ◮ n an = 2 a 2a = 0, a = 1 ⇐⇒ n+1 − n 0 ◮ an = n! a (n + 1)a = 0, a = 1 ⇐⇒ n+1 − n 0 k ◮ n ( 1) an = k=0 −k! P(n + 2)an+2 (n + 1)an+1 an = 0, ⇐⇒ − − a0 = 1,a1 = 0 ◮ an = the number of involutions of n letters a + na (3n + 6)a (n + 1)(n + 2)a = 0, ⇐⇒ n+3 n+2 − n+1 − n a0 = 1,a1 = 1,a2 = 2 ◮ ... Have: Have: ◮ Finite data structure for representing holonomic objects Have: ◮ Finite data structure for representing holonomic objects ◮ Coverage of many important examples Have: ◮ Finite data structure for representing holonomic objects ◮ Coverage of many important examples

Want: Have: ◮ Finite data structure for representing holonomic objects ◮ Coverage of many important examples

Want: ◮ Structural properties of the class of holonomic objects Have: ◮ Finite data structure for representing holonomic objects ◮ Coverage of many important examples

Want: ◮ Structural properties of the class of holonomic objects ◮ Algorithms for doing explicit computations with them ∞ n Theorem (Conversion). Let a(x)= anx . Then: nP=0 a(x) is holonomic as function

(a )∞ is holonomic as sequence. ⇐⇒ n n=0 ∞ n Theorem (Conversion). Let a(x)= anx . Then: nP=0 a(x) is holonomic as function

(a )∞ is holonomic as sequence. ⇐⇒ n n=0

The theorem is algorithmic: ∞ n Theorem (Conversion). Let a(x)= anx . Then: nP=0 a(x) is holonomic as function

(a )∞ is holonomic as sequence. ⇐⇒ n n=0

The theorem is algorithmic: ◮ Given a differential equation for a(x), we can compute a recurrence for (an)n∞=0. ∞ n Theorem (Conversion). Let a(x)= anx . Then: nP=0 a(x) is holonomic as function

(a )∞ is holonomic as sequence. ⇐⇒ n n=0

The theorem is algorithmic: ◮ Given a differential equation for a(x), we can compute a recurrence for (an)n∞=0. ◮ Given a recurrence for (an)n∞=0, we can compute a differential equation for a(x). ∞ n Theorem (Conversion). Let a(x)= anx . Then: nP=0 a(x) is holonomic as function

(a )∞ is holonomic as sequence. ⇐⇒ n n=0

Examples. ∞ n Theorem (Conversion). Let a(x)= anx . Then: nP=0 a(x) is holonomic as function

(a )∞ is holonomic as sequence. ⇐⇒ n n=0

Examples. INPUT: a (x) a(x) = 0,a(0) = 1 (i.e., a(x) = exp(x)) ′ − ∞ n Theorem (Conversion). Let a(x)= anx . Then: nP=0 a(x) is holonomic as function

(a )∞ is holonomic as sequence. ⇐⇒ n n=0

Examples. INPUT: a (x) a(x) = 0,a(0) = 1 (i.e., a(x) = exp(x)) ′ −

OUTPUT: (n + 1)a a = 0,a = 1 (i.e., a = 1 ) n+1 − n 0 n n! ∞ n Theorem (Conversion). Let a(x)= anx . Then: nP=0 a(x) is holonomic as function

(a )∞ is holonomic as sequence. ⇐⇒ n n=0

Examples. ∞ n Theorem (Conversion). Let a(x)= anx . Then: nP=0 a(x) is holonomic as function

(a )∞ is holonomic as sequence. ⇐⇒ n n=0

Examples. INPUT: 2a + na 3(n + 2)a (n + 1)(n + 2)a = 0 n+3 n+2 − n+1 − n ∞ n Theorem (Conversion). Let a(x)= anx . Then: nP=0 a(x) is holonomic as function

(a )∞ is holonomic as sequence. ⇐⇒ n n=0

Examples. INPUT: 2a + na 3(n + 2)a (n + 1)(n + 2)a = 0 n+3 n+2 − n+1 − n

OUTPUT: x5a(5)(x) + (19x2 + 3x 1)x2a(4)(x) − + 2(55x3 + 15x2 2x 1)a(3)(x) + 6(37x + 12)xa (x) − − ′′ + 12(11x + 3)a′(x) + 12a(x) = 0 Theorem (Asymptotics). Theorem (Asymptotics). ◮ If a(x) is holonomic and has a singularity at ζ, then

P ((ζ x)−1/r) α β a(x) c e − (ζ x) log(ζ x) (x ζ) ∼ − − → where c is a constant, P is a polynomial, r N, α is a ∈ constant, and β N. ∈ Theorem (Asymptotics). ◮ If a(x) is holonomic and has a singularity at ζ, then

P ((ζ x)−1/r) α β a(x) c e − (ζ x) log(ζ x) (x ζ) ∼ − − → where c is a constant, P is a polynomial, r N, α is a ∈ constant, and β N. ∈ ◮ If (an)n∞=0 is holonomic, then

1/r a c eP (n )nγnφnnα log(n)β (n ) n ∼ → ∞ where c is a constant, P is a polynomial, r N, φ,α,γ are ∈ constants, and β N. ∈ Algorithms. Algorithms. ◮ ζ,φ,P,r,α,β,γ can be computed exactly and explicitly. Algorithms. ◮ ζ,φ,P,r,α,β,γ can be computed exactly and explicitly. ◮ c can be computed approximately to any desired accurracy. Algorithms. ◮ ζ,φ,P,r,α,β,γ can be computed exactly and explicitly. ◮ c can be computed approximately to any desired accurracy. ◮ More terms of the asymptotic expansion can be computed. Algorithms. ◮ ζ,φ,P,r,α,β,γ can be computed exactly and explicitly. ◮ c can be computed approximately to any desired accurracy. ◮ More terms of the asymptotic expansion can be computed. Example. Algorithms. ◮ ζ,φ,P,r,α,β,γ can be computed exactly and explicitly. ◮ c can be computed approximately to any desired accurracy. ◮ More terms of the asymptotic expansion can be computed. Example. INPUT: 2a + na 3(n + 2)a (n +1)(n + 2)a = 0,a = a = 1 n+3 n+2 − n+1 − n 0 1 Algorithms. ◮ ζ,φ,P,r,α,β,γ can be computed exactly and explicitly. ◮ c can be computed approximately to any desired accurracy. ◮ More terms of the asymptotic expansion can be computed. Example. INPUT: 2a + na 3(n + 2)a (n +1)(n + 2)a = 0,a = a = 1 n+3 n+2 − n+1 − n 0 1

OUTPUT: √n n n/2 119 1 7 1/2 1967381 2 3/2 c e − 2 n 1 n + n + n + O(n ) − 1152 − 24 − 39813120 − − with c 0.55069531490318374761598106274964784671382 ...  ≈ Commercial: A good reference for modern techniques for computing asymptotic expansions is: Commercial: A good reference for modern techniques for computing asymptotic expansions is: Theorem (closure properties I). Let a(x) and b(x) be holonomic functions. Then: Theorem (closure properties I). Let a(x) and b(x) be holonomic functions. Then: ◮ a(x)+ b(x) is holonomic. Theorem (closure properties I). Let a(x) and b(x) be holonomic functions. Then: ◮ a(x)+ b(x) is holonomic. ◮ a(x)b(x) is holonomic. Theorem (closure properties I). Let a(x) and b(x) be holonomic functions. Then: ◮ a(x)+ b(x) is holonomic. ◮ a(x)b(x) is holonomic. ◮ a′(x) is holonomic. Theorem (closure properties I). Let a(x) and b(x) be holonomic functions. Then: ◮ a(x)+ b(x) is holonomic. ◮ a(x)b(x) is holonomic. ◮ a′(x) is holonomic. ◮ x 0 a(t)dt is holonomic. R Theorem (closure properties I). Let a(x) and b(x) be holonomic functions. Then: ◮ a(x)+ b(x) is holonomic. ◮ a(x)b(x) is holonomic. ◮ a′(x) is holonomic. ◮ x 0 a(t)dt is holonomic. ◮ ifR b(x) is algebraic and b(0) = 0, then a(b(x)) is holonomic. Theorem (closure properties I). Let a(x) and b(x) be holonomic functions. Then: ◮ a(x)+ b(x) is holonomic. ◮ a(x)b(x) is holonomic. ◮ a′(x) is holonomic. ◮ x 0 a(t)dt is holonomic. ◮ ifR b(x) is algebraic and b(0) = 0, then a(b(x)) is holonomic. The theorem is algorithmic: Theorem (closure properties I). Let a(x) and b(x) be holonomic functions. Then: ◮ a(x)+ b(x) is holonomic. ◮ a(x)b(x) is holonomic. ◮ a′(x) is holonomic. ◮ x 0 a(t)dt is holonomic. ◮ ifR b(x) is algebraic and b(0) = 0, then a(b(x)) is holonomic. The theorem is algorithmic: ◮ Differential equations for all these functions can be computed from given defining equations of a(x) and b(x). Theorem (closure properties II). Let (an)n∞=0 and (bn)n∞=0 be holonomic sequences. Then: Theorem (closure properties II). Let (an)n∞=0 and (bn)n∞=0 be holonomic sequences. Then: ◮ (an + bn)n∞=0 is holonomic. Theorem (closure properties II). Let (an)n∞=0 and (bn)n∞=0 be holonomic sequences. Then: ◮ (an + bn)n∞=0 is holonomic. ◮ (anbn)n∞=0 is holonomic. Theorem (closure properties II). Let (an)n∞=0 and (bn)n∞=0 be holonomic sequences. Then: ◮ (an + bn)n∞=0 is holonomic. ◮ (anbn)n∞=0 is holonomic. ◮ (an+1)n∞=0 is holonomic. Theorem (closure properties II). Let (an)n∞=0 and (bn)n∞=0 be holonomic sequences. Then: ◮ (an + bn)n∞=0 is holonomic. ◮ (anbn)n∞=0 is holonomic. ◮ (an+1)n∞=0 is holonomic. ◮ n ( k=0 ak)n∞=0 is holonomic. P Theorem (closure properties II). Let (an)n∞=0 and (bn)n∞=0 be holonomic sequences. Then: ◮ (an + bn)n∞=0 is holonomic. ◮ (anbn)n∞=0 is holonomic. ◮ (an+1)n∞=0 is holonomic. ◮ n ( k=0 ak)n∞=0 is holonomic. ◮ ifPu,v Q are positive, then (a un+v )n∞=0 is holonomic. ∈ ⌊ ⌋ Theorem (closure properties II). Let (an)n∞=0 and (bn)n∞=0 be holonomic sequences. Then: ◮ (an + bn)n∞=0 is holonomic. ◮ (anbn)n∞=0 is holonomic. ◮ (an+1)n∞=0 is holonomic. ◮ n ( k=0 ak)n∞=0 is holonomic. ◮ ifPu,v Q are positive, then (a un+v )n∞=0 is holonomic. ∈ ⌊ ⌋ The theorem is algorithmic: Theorem (closure properties II). Let (an)n∞=0 and (bn)n∞=0 be holonomic sequences. Then: ◮ (an + bn)n∞=0 is holonomic. ◮ (anbn)n∞=0 is holonomic. ◮ (an+1)n∞=0 is holonomic. ◮ n ( k=0 ak)n∞=0 is holonomic. ◮ ifPu,v Q are positive, then (a un+v )n∞=0 is holonomic. ∈ ⌊ ⌋ The theorem is algorithmic: ◮ Recurrence equations for all these sequences can be computed from given defining equations of (an)n∞=0 and (bn)n∞=0. Examples. Examples. INPUT: Examples. INPUT: a (x) a(x) = 0,a(0) = 1 (i.e., a(x) = exp(x)) ′ − Examples. INPUT: a (x) a(x) = 0,a(0) = 1 (i.e., a(x) = exp(x)) ′ − (1 x)b (x) b (x) = 0, b(0) = 0, b (0) = 1 − ′′ − ′ ′ − (i.e., b(x) = log(1 x)) − Examples. INPUT: a (x) a(x) = 0,a(0) = 1 (i.e., a(x) = exp(x)) ′ − (1 x)b (x) b (x) = 0, b(0) = 0, b (0) = 1 − ′′ − ′ ′ − (i.e., b(x) = log(1 x)) − (c(x)= a(x)b(x)) Examples. INPUT: a (x) a(x) = 0,a(0) = 1 (i.e., a(x) = exp(x)) ′ − (1 x)b (x) b (x) = 0, b(0) = 0, b (0) = 1 − ′′ − ′ ′ − (i.e., b(x) = log(1 x)) − (c(x)= a(x)b(x))

OUTPUT: (x 1)c (x)+(3 2x)c (x)+(x 2)c(x), c(0) = 0,c (0) = 1. − ′′ − ′ − ′ − Examples. INPUT: (n + 1)a na ,a = 1 (i.e., a = 1 ) n+1 − n 1 n n Examples. INPUT: (n + 1)a na ,a = 1 (i.e., a = 1 ) n+1 − n 1 n n n (cn = k=0 ak) P Examples. INPUT: (n + 1)a na ,a = 1 (i.e., a = 1 ) n+1 − n 1 n n n (cn = k=0 ak) P OUTPUT: (n + 2)c (2n + 3)c +(n + 1)c = 0,c = 1,c = 3 n+2 − n+1 n 1 2 2 Examples. INPUT: 3 (n + 2)an+2 (2n + 3)an+1 +(n + 1)an = 0,a1 = 1,a2 = 2 − n 1 (i.e., an = k=1 k ) P Examples. INPUT: 3 (n + 2)an+2 (2n + 3)an+1 +(n + 1)an = 0,a1 = 1,a2 = 2 − n 1 (i.e., an = k=1 k ) n P (cn = k=0 ak) P Examples. INPUT: 3 (n + 2)an+2 (2n + 3)an+1 +(n + 1)an = 0,a1 = 1,a2 = 2 − n 1 (i.e., an = k=1 k ) n P (cn = k=0 ak) P OUTPUT: 2 2 2 (n + 4n + 4)cn+2 (2n + 9n + 9)cn+1 +(n + 5n + 6)cn = 0, 9 − c0 = 2,c1 = 2 Examples. INPUT: a (x) a(x) = 0,a(0) = 1 (i.e. a(x) = exp(x)) ′ − Examples. INPUT: a (x) a(x) = 0,a(0) = 1 (i.e. a(x) = exp(x)) ′ − (1 4x)b(x)2 x2 = 0 (i.e. b(x)= x ) √1 4x − − − Examples. INPUT: a (x) a(x) = 0,a(0) = 1 (i.e. a(x) = exp(x)) ′ − (1 4x)b(x)2 x2 = 0 (i.e. b(x)= x ) √1 4x − − − (c(x)= a(b(x))) Examples. INPUT: a (x) a(x) = 0,a(0) = 1 (i.e. a(x) = exp(x)) ′ − (1 4x)b(x)2 x2 = 0 (i.e. b(x)= x ) √1 4x − − − (c(x)= a(b(x)))

OUTPUT: (4x 1)3(2x 1)c (x)+4(x 1)(4x 1)2c (x)+(2x 1)3c(x) = 0, − − ′′ − − ′ − c(0) = 1,c′(0) = 1 Implementations. Implementations. ◮ For : gfun by Salvy and Zimmermann, distributed together with Maple. Implementations. ◮ For Maple: gfun by Salvy and Zimmermann, distributed together with Maple. ◮ For Mathematica: GeneratingFunctions.m by Mallinger, available from the RISC combinatorics software website. Implementations. ◮ For Maple: gfun by Salvy and Zimmermann, distributed together with Maple. ◮ For Mathematica: GeneratingFunctions.m by Mallinger, available from the RISC combinatorics software website.

Example (for Mathematica) Implementations. ◮ For Maple: gfun by Salvy and Zimmermann, distributed together with Maple. ◮ For Mathematica: GeneratingFunctions.m by Mallinger, available from the RISC combinatorics software website.

Example (for Mathematica)

In[1]:= << GeneratingFunctions.m Implementations. ◮ For Maple: gfun by Salvy and Zimmermann, distributed together with Maple. ◮ For Mathematica: GeneratingFunctions.m by Mallinger, available from the RISC combinatorics software website.

Example (for Mathematica)

In[1]:= << GeneratingFunctions.m GeneratingFunctions Package by Christian Mallinger – (c) RISC Linz – V 0.68 (07/17/03) Implementations. ◮ For Maple: gfun by Salvy and Zimmermann, distributed together with Maple. ◮ For Mathematica: GeneratingFunctions.m by Mallinger, available from the RISC combinatorics software website.

Example (for Mathematica)

In[1]:= << GeneratingFunctions.m GeneratingFunctions Package by Christian Mallinger – (c) RISC Linz – V 0.68 (07/17/03) ′ ′ In[2]:= DEPlus[a [x] − a[x],a [x] + 2a[x],a[x]] Implementations. ◮ For Maple: gfun by Salvy and Zimmermann, distributed together with Maple. ◮ For Mathematica: GeneratingFunctions.m by Mallinger, available from the RISC combinatorics software website.

Example (for Mathematica)

In[1]:= << GeneratingFunctions.m GeneratingFunctions Package by Christian Mallinger – (c) RISC Linz – V 0.68 (07/17/03) ′ ′ In[2]:= DEPlus[a [x] − a[x],a [x] + 2a[x],a[x]]

2 2 ′ ′′ Out[2]= 2( 1+ x + 2x )a[x]+(4x 3)a [x]+(2x + 1)a [x]==0 − − − Implementations. ◮ For Maple: gfun by Salvy and Zimmermann, distributed together with Maple. ◮ For Mathematica: GeneratingFunctions.m by Mallinger, available from the RISC combinatorics software website.

Example (for Mathematica)

In[1]:= << GeneratingFunctions.m GeneratingFunctions Package by Christian Mallinger – (c) RISC Linz – V 0.68 (07/17/03) ′ ′ In[2]:= DEPlus[a [x] − a[x],a [x] + 2a[x],a[x]]

2 2 ′ ′′ Out[2]= 2( 1+ x + 2x )a[x]+(4x 3)a [x]+(2x + 1)a [x]==0 − − −

These packages are particularly useful for proving identities. n 2k + 1 (1, 1) 1 P − (x)= 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −   n 2k + 1 (1, 1) 1 P − (x)= 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

1.0 Legendre polynomials: 0.5

-1.0 -0.5 0.5 1.0

-0.5

-1.0 n 2k + 1 (1, 1) 1 P − (x)= 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

1.0 Legendre polynomials: 0.5 ◮ P0(x) = 1 -1.0 -0.5 0.5 1.0

-0.5

-1.0 n 2k + 1 (1, 1) 1 P − (x)= 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

1.0 Legendre polynomials: 0.5 ◮ P0(x) = 1 -1.0 -0.5 0.5 1.0 ◮ P1(x)= x -0.5

-1.0 n 2k + 1 (1, 1) 1 P − (x)= 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

1.0 Legendre polynomials: 0.5 ◮ P0(x) = 1 -1.0 -0.5 0.5 1.0 ◮ P1(x)= x -0.5 ◮ 1 2 P (x)= (3x 1) -1.0 2 2 − n 2k + 1 (1, 1) 1 P − (x)= 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

1.0 Legendre polynomials: 0.5 ◮ P0(x) = 1 -1.0 -0.5 0.5 1.0 ◮ P1(x)= x -0.5 ◮ 1 2 P (x)= (3x 1) -1.0 2 2 − ◮ P (x)= 1 (5x3 3x) 3 2 − n 2k + 1 (1, 1) 1 P − (x)= 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

1.0 Legendre polynomials: 0.5 ◮ P0(x) = 1 -1.0 -0.5 0.5 1.0 ◮ P1(x)= x -0.5 ◮ 1 2 P (x)= (3x 1) -1.0 2 2 − ◮ P (x)= 1 (5x3 3x) 3 2 − ◮ P (x)= 1 (35x4 30x2 + 3) 4 8 − n 2k + 1 (1, 1) 1 P − (x)= 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

1.0 Legendre polynomials: 0.5 ◮ P0(x) = 1 -1.0 -0.5 0.5 1.0 ◮ P1(x)= x -0.5 ◮ 1 2 P (x)= (3x 1) -1.0 2 2 − ◮ P (x)= 1 (5x3 3x) 3 2 − ◮ P (x)= 1 (35x4 30x2 + 3) 4 8 − ◮ P (x)= 1 (15x 70x3 + 63x5) 5 8 − ◮ ··· n 2k + 1 (1, 1) 1 P − (x)= 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

Legendre polynomials:

n + 1 2n + 3 P (x)= P (x)+ xP (x) n+2 −n + 2 n n + 2 n+1 n 2k + 1 (1, 1) 1 P − (x)= 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

Legendre polynomials:

n + 1 2n + 3 P (x)= P (x)+ xP (x) n+2 −n + 2 n n + 2 n+1 P0(x) = 1

P1(x)= x n 2k + 1 (1, 1) 1 P − (x) = 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

Jacobi polynomials: 3

2

1

-1.0 -0.5 0.5 1.0

-1 n 2k + 1 (1, 1) 1 P − (x) = 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

Jacobi polynomials: 3 (1, 1) 2 ◮ P − (x) = 1 0 1

-1.0 -0.5 0.5 1.0

-1 n 2k + 1 (1, 1) 1 P − (x) = 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

Jacobi polynomials: 3 (1, 1) 2 ◮ P − (x) = 1 0 1 ◮ (1, 1) P1 − (x)=1+ x -1.0 -0.5 0.5 1.0 -1 n 2k + 1 (1, 1) 1 P − (x) = 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

Jacobi polynomials: 3 (1, 1) 2 ◮ P − (x) = 1 0 1 ◮ (1, 1) P1 − (x)=1+ x -1.0 -0.5 0.5 1.0 -1 ◮ (1, 1) 3 2 P2 − (x)= 2 (x + x ) n 2k + 1 (1, 1) 1 P − (x) = 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

Jacobi polynomials: 3 (1, 1) 2 ◮ P − (x) = 1 0 1 ◮ (1, 1) P1 − (x)=1+ x -1.0 -0.5 0.5 1.0 -1 ◮ (1, 1) 3 2 P2 − (x)= 2 (x + x ) (1, 1) 1 ◮ P − (x)= ( 1 x + 5x2 + 5x3) 3 2 − − n 2k + 1 (1, 1) 1 P − (x) = 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

Jacobi polynomials: 3 (1, 1) 2 ◮ P − (x) = 1 0 1 ◮ (1, 1) P1 − (x)=1+ x -1.0 -0.5 0.5 1.0 -1 ◮ (1, 1) 3 2 P2 − (x)= 2 (x + x ) (1, 1) 1 ◮ P − (x)= ( 1 x + 5x2 + 5x3) 3 2 − − (1, 1) 5 ◮ P − (x)= ( 3x 3x2 + 7x3 + 7x4) 4 8 − − n 2k + 1 (1, 1) 1 P − (x) = 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

Jacobi polynomials: 3 (1, 1) 2 ◮ P − (x) = 1 0 1 ◮ (1, 1) P1 − (x)=1+ x -1.0 -0.5 0.5 1.0 -1 ◮ (1, 1) 3 2 P2 − (x)= 2 (x + x ) (1, 1) 1 ◮ P − (x)= ( 1 x + 5x2 + 5x3) 3 2 − − (1, 1) 5 ◮ P − (x)= ( 3x 3x2 + 7x3 + 7x4) 4 8 − − (1, 1) 3 ◮ P − (x)= (1 + x 14x2 14x3 + 21x4 + 21x5) 5 8 − − ◮ ··· n 2k + 1 (1, 1) 1 P − (x) = 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

Jacobi polynomials:

(1, 1) n (1, 1) 2n + 3 (1, 1) P − (x)= P − (x)+ xP − (x) n+2 −n + 1 n n + 2 n+1 n 2k + 1 (1, 1) 1 P − (x) = 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

Jacobi polynomials:

(1, 1) n (1, 1) 2n + 3 (1, 1) P − (x)= P − (x)+ xP − (x) n+2 −n + 1 n n + 2 n+1 (1, 1) P0 − (x) = 1 (1, 1) P1 − (x)=1+ x n 2k + 1 (1, 1) 1 P − (x)= 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

How to prove this identity? n 2k + 1 (1, 1) 1 P − (x)= 2 P (x) P (x) k + 1 k 1 x − n − n+1 Xk=0 −  

How to prove this identity? By induction! −→ n 2k + 1 (1, 1) 1 P − (x) 2 P (x) P (x) = 0 k + 1 k − 1 x − n − n+1 Xk=0 −  

How to prove this identity? By induction! −→ n 2k + 1 (1, 1) 1 P − (x) 2 P (x) P (x) = 0 k + 1 k − 1 x − n − n+1 Xk=0 −  

How to prove this identity? By induction! −→ Compute a recurrence for the left hand side from the defining equa- tions of its building blocks. n 2k + 1 (1, 1) 1 P − (x) 2 P (x) P (x) = 0 k + 1 k − 1 x − n − n+1 Xk=0 −   recurrence of order 1 | {z } n 2k + 1 (1, 1) 1 P − (x) 2 P (x) P (x) = 0 k + 1 k − 1 x − n − n+1 Xk=0 −   recurrence recurrence of order 1 of order 2 | {z } | {z } n 2k + 1 (1, 1) 1 P − (x) 2 P (x) P (x) = 0 k + 1 k − 1 x − n − n+1 Xk=0 −   recurrence recurrence of order 1 of order 2 | {z } | {z } recurrence of order 2 | {z } n 2k + 1 (1, 1) 1 P − (x) 2 P (x) P (x) = 0 k + 1 k − 1 x − n − n+1 Xk=0 −   recurrence recurrence of order 1 of order 2 | {z } | {z } recurrence of order 2 | {z } recurrence of order 5 | {z } n 2k + 1 (1, 1) 1 P − (x) 2 P (x) P (x) = 0 k + 1 k − 1 x − n − n+1 Xk=0 −   recurrence recurrence recurrence of order 1 of order 2 of order 2 | {z } | {z } | {z } recurrence of order 2 | {z } recurrence of order 5 | {z } n 2k + 1 (1, 1) 1 P − (x) 2 P (x) P (x) = 0 k + 1 k − 1 x − n − n+1 Xk=0 −   recurrence recurrence recurrence recurrence of order 1 of order 2 of order 2 of order 2 | {z } | {z } | {z } | {z } recurrence of order 2 | {z } recurrence of order 5 | {z } n 2k + 1 (1, 1) 1 P − (x) 2 P (x) P (x) = 0 k + 1 k − 1 x − n − n+1 Xk=0 −   recurrence recurrence recurrence recurrence of order 1 of order 2 of order 2 of order 2 | {z } | {z } | {z } | {z } recurrence of order 2 recurrence of order 4 | {z } | {z } recurrence of order 5 | {z } n 2k + 1 (1, 1) 1 P − (x) 2 P (x) P (x) = 0 k + 1 k − 1 x − n − n+1 Xk=0 −   recurrence recurrence recurrence recurrence of order 1 of order 2 of order 2 of order 2 | {z } | {z } | {z } | {z } recurrence of order 2 recurrence of order 4 | {z } | {z } recurrence of order 5 recurrence of order 3 | {z } | {z } n 2k + 1 (1, 1) 1 P − (x) 2 P (x) P (x) = 0 k + 1 k − 1 x − n − n+1 Xk=0 −   recurrence recurrence recurrence recurrence of order 1 of order 2 of order 2 of order 2 | {z } | {z } | {z } | {z } recurrence of order 2 recurrence of order 4 | {z } | {z } recurrence of order 5 recurrence of order 3 | {z } | {z } recurrence of order 7 | {z } n 2k + 1 (1, 1) 1 P − (x) 2 P (x) P (x) = 0 k + 1 k − 1 x − n − n+1 Xk=0 −  

lhs =( messy )lhs n+7 ··· ··· n+6 +( messy )lhs ··· ··· n+5 +( messy )lhs ··· ··· n+4 +( messy )lhs ··· ··· n+3 +( messy )lhs ··· ··· n+2 +( messy )lhs ··· ··· n+1 +( messy )lhs ··· ··· n n 2k + 1 (1, 1) 1 P − (x) 2 P (x) P (x) = 0 k + 1 k − 1 x − n − n+1 Xk=0 −  

lhs =( messy )lhs n+7 ··· ··· n+6 +( messy )lhs ··· ··· n+5 +( messy )lhs ··· ··· n+4 +( messy )lhs ··· ··· n+3 +( messy )lhs ··· ··· n+2 +( messy )lhs ··· ··· n+1 +( messy )lhs ··· ··· n Therefore the identity holds for all n N ∈ if and only if it holds for n = 0, 1, 2,..., 6. 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t = exp − 2 n! √1 4t2  1 4t  nX=0 − − 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t = exp − 2 n! √1 4t2  1 4t  nX=0 − −

100 Hermite polynomials: 50

-3 -2 -1 1 2 3

-50

-100 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t = exp − 2 n! √1 4t2  1 4t  nX=0 − −

100 Hermite polynomials: 50 ◮ H (x) = 1 0 -3 -2 -1 1 2 3

-50

-100 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t = exp − 2 n! √1 4t2  1 4t  nX=0 − −

100 Hermite polynomials: 50 ◮ H (x) = 1 0 -3 -2 -1 1 2 3 ◮ H1(x) = 2x -50

-100 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t = exp − 2 n! √1 4t2  1 4t  nX=0 − −

100 Hermite polynomials: 50 ◮ H (x) = 1 0 -3 -2 -1 1 2 3 ◮ H1(x) = 2x -50 ◮ 2 H (x) = 4x 2 -100 2 − 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t = exp − 2 n! √1 4t2  1 4t  nX=0 − −

100 Hermite polynomials: 50 ◮ H (x) = 1 0 -3 -2 -1 1 2 3 ◮ H1(x) = 2x -50 ◮ 2 H (x) = 4x 2 -100 2 − ◮ H (x) = 8x3 12x 3 − 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t = exp − 2 n! √1 4t2  1 4t  nX=0 − −

100 Hermite polynomials: 50 ◮ H (x) = 1 0 -3 -2 -1 1 2 3 ◮ H1(x) = 2x -50 ◮ 2 H (x) = 4x 2 -100 2 − ◮ H (x) = 8x3 12x 3 − ◮ H (x) = 16x4 48x2 + 12 4 − 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t = exp − 2 n! √1 4t2  1 4t  nX=0 − −

100 Hermite polynomials: 50 ◮ H (x) = 1 0 -3 -2 -1 1 2 3 ◮ H1(x) = 2x -50 ◮ 2 H (x) = 4x 2 -100 2 − ◮ H (x) = 8x3 12x 3 − ◮ H (x) = 16x4 48x2 + 12 4 − ◮ H (x) = 32x5 160x3 + 120x 5 − ◮ ··· 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t = exp − 2 n! √1 4t2  1 4t  nX=0 − −

Hermite polynomials:

H (x) = 2xH (x) 2(n + 1)H (x) n+2 n+1 − n 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t = exp − 2 n! √1 4t2  1 4t  nX=0 − −

Hermite polynomials:

H (x) = 2xH (x) 2(n + 1)H (x) n+2 n+1 − n H0(x) = 1

H1(x) = 2x 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t = exp − 2 n! √1 4t2  1 4t  nX=0 − −

This is an identity among analytic functions. 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t = exp − 2 n! √1 4t2  1 4t  nX=0 − −

This is an identity among analytic functions. Consider x and y as fixed parameters. ∞ 1 1 4t(xy t(x2 + y2)) H x H y tn n( ) n( ) = exp − 2 n! √1 4t2  1 4t  nX=0 − −

This is an identity among analytic functions. Consider x and y as fixed parameters. Then both sides are functions in t. 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t = exp − 2 n! √1 4t2  1 4t  nX=0 − −

This is an identity among analytic functions. Consider x and y as fixed parameters. Then both sides are functions in t. Idea: Compute a recurrence for the series coefficients of LHS RHS − 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − −

This is an identity among analytic functions. Consider x and y as fixed parameters. Then both sides are functions in t. Idea: Compute a recurrence for the series coefficients of LHS RHS − 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − −

This is an identity among analytic functions. Consider x and y as fixed parameters. Then both sides are functions in t. Idea: Compute a recurrence for the series coefficients of LHS RHS − Then prove by induction that they are all zero. 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − −

This is an identity among analytic functions. Consider x and y as fixed parameters. Then both sides are functions in t. Idea: Compute a recurrence for the series coefficients of LHS RHS − Then prove by induction that they are all zero. Then the function is identically zero. 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − − 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − − rec. of ord. 2 | {z } 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − − rec. of rec. of ord. 2 ord. 2 | {z }| {z } 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − − rec. of rec. of ord. 2 ord. 2 | {z }| {z } rec. of order 4 | {z } 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − − rec. of rec. of rec. of ord. 2 ord. 2 ord. 1 | {z }| {z }|{z} rec. of order 4 | {z } 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − − rec. of rec. of rec. of ord. 2 ord. 2 ord. 1 | {z }| {z }|{z} rec. of order 4 | {z } recurrence of order 4 | {z } 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − − rec. of rec. of rec. of ord. 2 ord. 2 ord. 1 | {z }| {z }|{z} rec. of order 4 | {z } recurrence of order 4 | {z } differential equation of order 5 | {z } 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − − rec. of rec. of rec. of diff.eq. ord. 2 ord. 2 ord. 1 of ord. 1 | {z }| {z }|{z} | {z } rec. of order 4 | {z } recurrence of order 4 | {z } differential equation of order 5 | {z } 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − − rec. of rec. of rec. of diff.eq. diff.eq. of order 1 ord. 2 ord. 2 ord. 1 of ord. 1 | {z }| {z }|{z} | {z } | {z } rec. of order 4 | {z } recurrence of order 4 | {z } differential equation of order 5 | {z } 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − − rec. of rec. of rec. of diff.eq. diff.eq. diff.eq. of order 1 ord. 2 ord. 2 ord. 1 of ord. 1 of ord. 1 | {z }| {z }|{z} | {z }|{z}| {z } rec. of order 4 | {z } recurrence of order 4 | {z } differential equation of order 5 | {z } 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − − rec. of rec. of rec. of diff.eq. diff.eq. diff.eq. of order 1 ord. 2 ord. 2 ord. 1 of ord. 1 of ord. 1 | {z }| {z }|{z} | {z }|{z}| {z } rec. of order 4 differential equation of order 1 | {z } | {z } recurrence of order 4 | {z } differential equation of order 5 | {z } 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − − rec. of rec. of rec. of diff.eq. diff.eq. diff.eq. of order 1 ord. 2 ord. 2 ord. 1 of ord. 1 of ord. 1 | {z }| {z }|{z} | {z }|{z}| {z } rec. of order 4 differential equation of order 1 | {z } | {z } recurrence of order 4 differential equation of order 1 | {z } | {z } differential equation of order 5 | {z } 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − − rec. of rec. of rec. of diff.eq. diff.eq. diff.eq. of order 1 ord. 2 ord. 2 ord. 1 of ord. 1 of ord. 1 | {z }| {z }|{z} | {z }|{z}| {z } rec. of order 4 differential equation of order 1 | {z } | {z } recurrence of order 4 differential equation of order 1 | {z } | {z } differential equation of order 5 | {z } differential equation of order 5 | {z } 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − − rec. of rec. of rec. of diff.eq. diff.eq. diff.eq. of order 1 ord. 2 ord. 2 ord. 1 of ord. 1 of ord. 1 | {z }| {z }|{z} | {z }|{z}| {z } rec. of order 4 differential equation of order 1 | {z } | {z } recurrence of order 4 differential equation of order 1 | {z } | {z } differential equation of order 5 | {z } differential equation of order 5

| recurrence{z equation of order 4 } 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − −

n If we write lhs(t)= n∞=0 lhsn t , then

P 2 2 4xy 4(2n 2x 2y +5) lhsn+4 = n+4 lhsn+3 + − n+4− lhsn+2 + 16xy lhs 16(n+1) lhs . n+4 n+1 − n+4 n 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − −

n If we write lhs(t)= n∞=0 lhsn t , then

P 2 2 4xy 4(2n 2x 2y +5) lhsn+4 = n+4 lhsn+3 + − n+4− lhsn+2 + 16xy lhs 16(n+1) lhs . n+4 n+1 − n+4 n

Because of lhs0 = lhs1 = lhs2 = lhs3 = 0, we have lhsn = 0 for all n. 2 2 ∞ 1 n 1 4t(xy t(x + y )) Hn(x)Hn(y) t exp − 2 = 0 n! − √1 4t2  1 4t  nX=0 − −

n If we write lhs(t)= n∞=0 lhsn t , then

P 2 2 4xy 4(2n 2x 2y +5) lhsn+4 = n+4 lhsn+3 + − n+4− lhsn+2 + 16xy lhs 16(n+1) lhs . n+4 n+1 − n+4 n

Because of lhs0 = lhs1 = lhs2 = lhs3 = 0, we have lhsn = 0 for all n. This completes the proof. n k 2k n n 2n ( 4)− = 4− −  k k  n  Xk=0 n k 2k n n 2n ( 4)− = 4− −  k k  n  Xk=0

n Problem: depends on two variables. k n k 2k n n 2n ( 4)− = 4− −  k k  n  Xk=0

n Problem: depends on two variables. k The summation closure closure property is not directly applicable. n k 2k n n 2n ( 4)− = 4− −  k k  n  Xk=0

n Problem: depends on two variables. k The summation closure closure property is not directly applicable. Trick: Switch to the function level! n k 2k n! n 2n ( 4)− = 4− −  k k!(n k)!  n  Xk=0 −

n Problem: depends on two variables. k The summation closure closure property is not directly applicable. Trick: Switch to the function level! n k 2k 1 1 n 2n n! ( 4)− = 4− −  k k! (n k)!  n  Xk=0 −

n Problem: depends on two variables. k The summation closure closure property is not directly applicable. Trick: Switch to the function level! n k 2k 1 1 n 2n 1 ( 4)− = 4− −  k k! (n k)!  n n! Xk=0 −

n Problem: depends on two variables. k The summation closure closure property is not directly applicable. Trick: Switch to the function level! n k 2k 1 1 n 2n 1 ( 4)− = 4− −  k k! (n k)!  n n! Xk=0 −

n Problem: depends on two variables. k The summation closure closure property is not directly applicable. Trick: Switch to the function level!

n akbn k − Xk=0 n k 2k 1 1 n 2n 1 ( 4)− = 4− −  k k! (n k)!  n n! Xk=0 −

n Problem: depends on two variables. k The summation closure closure property is not directly applicable. Trick: Switch to the function level!

n ∞ n akbn k x  −  nX=0 Xk=0 n k 2k 1 1 n 2n 1 ( 4)− = 4− −  k k! (n k)!  n n! Xk=0 −

n Problem: depends on two variables. k The summation closure closure property is not directly applicable. Trick: Switch to the function level!

n ∞ n ∞ n ∞ n akbn k x = anx bnx  −     nX=0 Xk=0 nX=0 nX=0 n ∞ k 2k 1 1 n ∞ n 2n 1 n ( 4)− x = 4− x  −  k k! (n k)!  n n! nX=0 Xk=0 − nX=0

n Problem: depends on two variables. k The summation closure closure property is not directly applicable. Trick: Switch to the function level!

n ∞ n ∞ n ∞ n akbn k x = anx bnx  −     nX=0 Xk=0 nX=0 nX=0 n ∞ k 2k 1 1 n ∞ n 2n 1 n ( 4)− x = 4− x  −  k k! (n k)!  n n! nX=0 Xk=0 − nX=0 n ∞ k 2k 1 1 n ∞ n 2n 1 n ( 4)− x 4− x = 0  −  k k! (n k)! −  n n! nX=0 Xk=0 − nX=0 n ∞ k 2k 1 1 n ∞ n 2n 1 n ( 4)− x 4− x = 0  −  k k! (n k)! −  n n! nX=0 Xk=0 − nX=0

∞ ( 4) n 2n ∞ 1 =| − − {z xn xn}  n!  n   n!  nX=0 nX=0 n ∞ k 2k 1 1 n ∞ n 2n 1 n ( 4)− x 4− x = 0  −  k k! (n k)! −  n n! nX=0 Xk=0 − nX=0

∞ ( 4) n 2n ∞ 1 =| − − {z xn xn}  n!  n   n!  nX=0 nX=0 rec. of order 1 | {z } n ∞ k 2k 1 1 n ∞ n 2n 1 n ( 4)− x 4− x = 0  −  k k! (n k)! −  n n! nX=0 Xk=0 − nX=0

∞ ( 4) n 2n ∞ 1 =| − − {z xn xn}  n!  n   n!  nX=0 nX=0 rec. of order 1 | {z } differential equation of order 3 | {z } n ∞ k 2k 1 1 n ∞ n 2n 1 n ( 4)− x 4− x = 0  −  k k! (n k)! −  n n! nX=0 Xk=0 − nX=0

∞ ( 4) n 2n ∞ 1 =| − − {z xn xn}  n!  n   n!  nX=0 nX=0 rec. of order 1 diff.eq. of ord. 1 | {z } | {z } differential equation of order 3 | {z } n ∞ k 2k 1 1 n ∞ n 2n 1 n ( 4)− x 4− x = 0  −  k k! (n k)! −  n n! nX=0 Xk=0 − nX=0

∞ ( 4) n 2n ∞ 1 =| − − {z xn xn}  n!  n   n!  nX=0 nX=0 rec. of order 1 diff.eq. of ord. 1 | {z } | {z } differential equation of order 3 | {z } differential equation of order 3 | {z } n ∞ k 2k 1 1 n ∞ n 2n 1 n ( 4)− x 4− x = 0  −  k k! (n k)! −  n n! nX=0 Xk=0 − nX=0 rec. of order 1 ∞ ( 4) n 2n ∞ 1 =| − − {z xn xn} | {z }  n!  n   n!  nX=0 nX=0 rec. of order 1 diff.eq. of ord. 1 | {z } | {z } differential equation of order 3 | {z } differential equation of order 3 | {z } n ∞ k 2k 1 1 n ∞ n 2n 1 n ( 4)− x 4− x = 0  −  k k! (n k)! −  n n! nX=0 Xk=0 − nX=0 rec. of order 1 ∞ ( 4) n 2n ∞ 1 =| − − {z xn xn} | {z }  n!  n   n!  nX=0 nX=0 diff.eq. of order 3 rec. of order 1 diff.eq. of ord. 1 | {z } | {z } | {z } differential equation of order 3 | {z } differential equation of order 3 | {z } n ∞ k 2k 1 1 n ∞ n 2n 1 n ( 4)− x 4− x = 0  −  k k! (n k)! −  n n! nX=0 Xk=0 − nX=0 rec. of order 1 ∞ ( 4) n 2n ∞ 1 =| − − {z xn xn} | {z }  n!  n   n!  nX=0 nX=0 diff.eq. of order 3 rec. of order 1 diff.eq. of ord. 1 | {z } | {z } | {z } differential equation of order 3 | {z } differential equation of order 3 | {z } differential equation of order 5 | {z } n ∞ k 2k 1 1 n ∞ n 2n 1 n ( 4)− x 4− x = 0  −  k k! (n k)! −  n n! nX=0 Xk=0 − nX=0 rec. of order 1 ∞ ( 4) n 2n ∞ 1 =| − − {z xn xn} | {z }  n!  n   n!  nX=0 nX=0 diff.eq. of order 3 rec. of order 1 diff.eq. of ord. 1 | {z } | {z } | {z } differential equation of order 3 | {z } differential equation of order 3 | {z } differential equation of order 5

| recurrence{z equation of order 7 } n ∞ k 2k 1 1 n ∞ n 2n 1 n ( 4)− x 4− x = 0  −  k k! (n k)! −  n n! nX=0 Xk=0 − nX=0 rec. of order 1 ∞ ( 4) n 2n ∞ 1 =| − − {z xn xn} | {z }  n!  n   n!  nX=0 nX=0 diff.eq. of order 3 rec. of order 1 diff.eq. of ord. 1 | {z } | {z } | {z } differential equation of order 3 | {z } differential equation of order 3 | {z } differential equation of order 5

| recurrence{z equation of order 7 } The identity is proved as soon as it is checked for the first 7 terms. n k 2k n n 2n ( 4)− = 4− −  k k  n  Xk=0 n k 2k n n 2n ( 4)− = 4− −  k k  n  Xk=0

◮ Of course, this particular example can be done easily with Zeilberger’s algorithm. n k 2k n n 2n ( 4)− = 4− −  k k  n  Xk=0

◮ Of course, this particular example can be done easily with Zeilberger’s algorithm.

◮ Of course, the the holonomic machinary is more general than the hypergeometric one. n k 2k n n 2n ( 4)− = 4− −  k k  n  Xk=0

◮ Of course, this particular example can be done easily with Zeilberger’s algorithm.

◮ Of course, the the holonomic machinary is more general than the hypergeometric one.

◮ Of course, a good implementation will do the whole computation in one stroke. Algorithms for executing closure properties are rigorous. Algorithms for executing closure properties are rigorous. Their output constitutes a formal mathematical proof. Algorithms for executing closure properties are rigorous. Their output constitutes a formal mathematical proof. The prize is that the computations sometimes take long. Algorithms for executing closure properties are rigorous. Their output constitutes a formal mathematical proof. The prize is that the computations sometimes take long. It can be faster to compute only experimental results. Algorithms for executing closure properties are rigorous. Their output constitutes a formal mathematical proof. The prize is that the computations sometimes take long. It can be faster to compute only experimental results. Or to combine experimental computations with rigorous ones. Algorithms for executing closure properties are rigorous. Their output constitutes a formal mathematical proof. The prize is that the computations sometimes take long. It can be faster to compute only experimental results. Or to combine experimental computations with rigorous ones. In practice, experimental results are as reliable as rigorous ones. Algorithms for executing closure properties are rigorous. Their output constitutes a formal mathematical proof. The prize is that the computations sometimes take long. It can be faster to compute only experimental results. Or to combine experimental computations with rigorous ones. In practice, experimental results are as reliable as rigorous ones.

Idea: In order to find a recurrence for (an)n∞=0, Algorithms for executing closure properties are rigorous. Their output constitutes a formal mathematical proof. The prize is that the computations sometimes take long. It can be faster to compute only experimental results. Or to combine experimental computations with rigorous ones. In practice, experimental results are as reliable as rigorous ones.

Idea: In order to find a recurrence for (an)n∞=0, ◮ Compute a finite (but large) number N of sequence terms. Algorithms for executing closure properties are rigorous. Their output constitutes a formal mathematical proof. The prize is that the computations sometimes take long. It can be faster to compute only experimental results. Or to combine experimental computations with rigorous ones. In practice, experimental results are as reliable as rigorous ones.

Idea: In order to find a recurrence for (an)n∞=0, ◮ Compute a finite (but large) number N of sequence terms. ◮ Compute recurrences which match a0,a1,...,aN . Algorithms for executing closure properties are rigorous. Their output constitutes a formal mathematical proof. The prize is that the computations sometimes take long. It can be faster to compute only experimental results. Or to combine experimental computations with rigorous ones. In practice, experimental results are as reliable as rigorous ones.

Idea: In order to find a recurrence for (an)n∞=0, ◮ Compute a finite (but large) number N of sequence terms. ◮ Compute recurrences which match a0,a1,...,aN . ◮ Guess that these recurrences continue to hold for n N. ≥ Algorithms for executing closure properties are rigorous. Their output constitutes a formal mathematical proof. The prize is that the computations sometimes take long. It can be faster to compute only experimental results. Or to combine experimental computations with rigorous ones. In practice, experimental results are as reliable as rigorous ones.

Idea: In order to find a recurrence for (an)n∞=0, ◮ Compute a finite (but large) number N of sequence terms. ◮ Compute recurrences which match a0,a1,...,aN . ◮ Guess that these recurrences continue to hold for n N. ≥ ◮ If desired, prove this by an independent argument. Example: What’s next? Example: What’s next?

1, 1, 2, 5, 14, 42, 132, 429, 1430, ??? Example: What’s next?

1, 1, 2, 5, 14, 42, 132, 429, 1430, ???

We have (2 + n)a (4n + 2)a = 0 for n = 0,..., 7 n+1 − n Example: What’s next?

1, 1, 2, 5, 14, 42, 132, 429, 1430, ???

We have (2 + n)a (4n + 2)a = 0 for n = 0,..., 7 n+1 − n A program can find this. Example: What’s next?

1, 1, 2, 5, 14, 42, 132, 429, 1430, ???

We have (2 + n)a (4n + 2)a = 0 for n = 0,..., 7 n+1 − n A program can find this. If the recurrence is also true for n> 7, then the next terms should be 4862, 16796,... Example: What’s next?

1, 1, 2, 5, 14, 42, 132, 429, 1430, ???

We have (2 + n)a (4n + 2)a = 0 for n = 0,..., 7 n+1 − n A program can find this. If the recurrence is also true for n> 7, then the next terms should be 4862, 16796,... Whether the recurrence is also true for n> 7, this cannot be judged by looking at any finite amount of data. Example: What’s next?

1, 1, 2, 5, 14, 42, 132, 429, 1430, ???

We have (2 + n)a (4n + 2)a = 0 for n = 0,..., 7 n+1 − n A program can find this. If the recurrence is also true for n> 7, then the next terms should be 4862, 16796,... Whether the recurrence is also true for n> 7, this cannot be judged by looking at any finite amount of data. But the more data we check, the more “likely” it becomes. Example: What’s the recurrence for

n k k 3k k 10 k i10 ?  k  i i Xk=0 Xi=0 Xi=0 Example: What’s the recurrence for

n k k 3k k 10 k i10 ?  k  i i Xk=0 Xi=0 Xi=0

◮ It is clear by closure properties that a recurrence exist. Example: What’s the recurrence for

n k k 3k k 10 k i10 ?  k  i i Xk=0 Xi=0 Xi=0

◮ It is clear by closure properties that a recurrence exist. ◮ It might still be hard to actually compute it. Example: What’s the recurrence for

n k k 3k k 10 k i10 ?  k  i i Xk=0 Xi=0 Xi=0

◮ It is clear by closure properties that a recurrence exist. ◮ It might still be hard to actually compute it. ◮ Efficient shortcut: Evaluate the sum for n = 0,..., 500, say, and compute a recurrence from this data. Example: What’s the recurrence for

n k k 3k k 10 k i10 ?  k  i i Xk=0 Xi=0 Xi=0

◮ It is clear by closure properties that a recurrence exist. ◮ It might still be hard to actually compute it. ◮ Efficient shortcut: Evaluate the sum for n = 0,..., 500, say, and compute a recurrence from this data. ◮ Result (with high probability): A recurrence of order 6 with polynomial coefficients of degree 94. Summary ◮ Holonomic means to satisfy a linear differential/recurrence equation with polynomial coefficients. ◮ Holonomic means to satisfy a linear differential/recurrence equation with polynomial coefficients. ◮ Equation plus initial values characterize a holonomic function/sequence uniquely by a finite amount of data. ◮ Holonomic means to satisfy a linear differential/recurrence equation with polynomial coefficients. ◮ Equation plus initial values characterize a holonomic function/sequence uniquely by a finite amount of data. ◮ Many functions and sequences arising in physics (and elsewhere) turn out to be holonomic. ◮ Holonomic means to satisfy a linear differential/recurrence equation with polynomial coefficients. ◮ Equation plus initial values characterize a holonomic function/sequence uniquely by a finite amount of data. ◮ Many functions and sequences arising in physics (and elsewhere) turn out to be holonomic. ◮ Many more can be composed out of known ones by applying holonomic closure properties. ◮ Holonomic means to satisfy a linear differential/recurrence equation with polynomial coefficients. ◮ Equation plus initial values characterize a holonomic function/sequence uniquely by a finite amount of data. ◮ Many functions and sequences arising in physics (and elsewhere) turn out to be holonomic. ◮ Many more can be composed out of known ones by applying holonomic closure properties. ◮ Many questions about holonomic functions can be answered computationally (rigorously or not). ◮ Holonomic means to satisfy a linear differential/recurrence equation with polynomial coefficients. ◮ Equation plus initial values characterize a holonomic function/sequence uniquely by a finite amount of data. ◮ Many functions and sequences arising in physics (and elsewhere) turn out to be holonomic. ◮ Many more can be composed out of known ones by applying holonomic closure properties. ◮ Many questions about holonomic functions can be answered computationally (rigorously or not). ◮ Software packages for Maple and Mathematical are available for these tasks.

Algorithms for Holonomic Functions

Manuel Kauers

Research Institute for Symbolic Computation Johannes Kepler University Austria Recall: The Case of One Variable ◮ Holonomic means to satisfy a linear differential/recurrence equation with polynomial coefficients. ◮ Holonomic means to satisfy a linear differential/recurrence equation with polynomial coefficients. ◮ Equation plus initial values characterize a holonomic function/sequence uniquely by a finite amount of data. ◮ Holonomic means to satisfy a linear differential/recurrence equation with polynomial coefficients. ◮ Equation plus initial values characterize a holonomic function/sequence uniquely by a finite amount of data. ◮ Many functions and sequences arising in physics (and elsewhere) turn out to be holonomic. ◮ Holonomic means to satisfy a linear differential/recurrence equation with polynomial coefficients. ◮ Equation plus initial values characterize a holonomic function/sequence uniquely by a finite amount of data. ◮ Many functions and sequences arising in physics (and elsewhere) turn out to be holonomic. ◮ Many more can be composed out of known ones by applying holonomic closure properties. ◮ Holonomic means to satisfy a linear differential/recurrence equation with polynomial coefficients. ◮ Equation plus initial values characterize a holonomic function/sequence uniquely by a finite amount of data. ◮ Many functions and sequences arising in physics (and elsewhere) turn out to be holonomic. ◮ Many more can be composed out of known ones by applying holonomic closure properties. ◮ Many questions about holonomic functions can be answered computationally (rigorously or not). ◮ Holonomic means to satisfy a linear differential/recurrence equation with polynomial coefficients. ◮ Equation plus initial values characterize a holonomic function/sequence uniquely by a finite amount of data. ◮ Many functions and sequences arising in physics (and elsewhere) turn out to be holonomic. ◮ Many more can be composed out of known ones by applying holonomic closure properties. ◮ Many questions about holonomic functions can be answered computationally (rigorously or not). ◮ Software packages for Maple and Mathematical are available for these tasks. Holonomy: The Case of Several Variables We now consider functions f(x1,...,xp,n1,...,nq) where We now consider functions f(x1,...,xp,n1,...,nq) where ◮ x ,...,x are continuous variables (p N fixed), and 1 p ∈ We now consider functions f(x1,...,xp,n1,...,nq) where ◮ x ,...,x are continuous variables (p N fixed), and 1 p ∈ ◮ n ,...,n are discrete variables (q N fixed). 1 q ∈ We now consider functions f(x1,...,xp,n1,...,nq) where ◮ x ,...,x are continuous variables (p N fixed), and 1 p ∈ ◮ n ,...,n are discrete variables (q N fixed). 1 q ∈ Examples. We now consider functions f(x1,...,xp,n1,...,nq) where ◮ x ,...,x are continuous variables (p N fixed), and 1 p ∈ ◮ n ,...,n are discrete variables (q N fixed). 1 q ∈ Examples. ◮ exp(x y): 2 continuous and 0 discrete variables. − We now consider functions f(x1,...,xp,n1,...,nq) where ◮ x ,...,x are continuous variables (p N fixed), and 1 p ∈ ◮ n ,...,n are discrete variables (q N fixed). 1 q ∈ Examples. ◮ exp(x y): 2 continuous and 0 discrete variables. − ◮ n k : 0continuousand2discretevariables.  We now consider functions f(x1,...,xp,n1,...,nq) where ◮ x ,...,x are continuous variables (p N fixed), and 1 p ∈ ◮ n ,...,n are discrete variables (q N fixed). 1 q ∈ Examples. ◮ exp(x y): 2 continuous and 0 discrete variables. − ◮ n k : 0continuousand2discretevariables. ◮ P n(x) 1 continuous and 1 discrete variable. We now consider functions f(x1,...,xp,n1,...,nq) where ◮ x ,...,x are continuous variables (p N fixed), and 1 p ∈ ◮ n ,...,n are discrete variables (q N fixed). 1 q ∈ We want to differentiate the xi and to shift the nj:

∂5 ∂3 f(x,y,n + 4,k + 23) ∂x5 ∂y3 We now consider functions f(x1,...,xp,n1,...,nq) where ◮ x ,...,x are continuous variables (p N fixed), and 1 p ∈ ◮ n ,...,n are discrete variables (q N fixed). 1 q ∈ We want to differentiate the xi and to shift the nj:

∂5 ∂3 f(x,y,n + 4,k + 23) ∂x5 ∂y3

Compact notation: 5 3 4 23 DxDySnSk f Definition. A function f(x1,...,xp,n1,...,nq) is called holonomic, if Definition. A function f(x1,...,xp,n1,...,nq) is called holonomic, if ◮ For every k = 1,...,p there exist polynomials p0,...,pr in the variables x1,...,xp,n1,...,nq, not all zero, such that

p f + p D f + p D2 f + + p Dr f = 0. 0 1 xk 2 xk ··· r xk Definition. A function f(x1,...,xp,n1,...,nq) is called holonomic, if ◮ For every k = 1,...,p there exist polynomials p0,...,pr in the variables x1,...,xp,n1,...,nq, not all zero, such that

p f + p D f + p D2 f + + p Dr f = 0. 0 1 xk 2 xk ··· r xk ◮ For every k = 1,...,p there exist polynomials p0,...,pr in the variables x1,...,xp,n1,...,nq, not all zero, such that

p f + p S f + p S2 f + + p Sr f = 0. 0 1 nk 2 nk ··· r nk Definition. A function f(x1,...,xp,n1,...,nq) is called holonomic, if ◮ For every k = 1,...,p there exist polynomials p0,...,pr in the variables x1,...,xp,n1,...,nq, not all zero, such that

p f + p D f + p D2 f + + p Dr f = 0. 0 1 xk 2 xk ··· r xk ◮ For every k = 1,...,p there exist polynomials p0,...,pr in the variables x1,...,xp,n1,...,nq, not all zero, such that

p f + p S f + p S2 f + + p Sr f = 0. 0 1 nk 2 nk ··· r nk

Warning! This is just a somewhat oversimplified approximation to the official definition Examples. Examples. ◮ f(x,y) = exp(x y) is holonomic because − D f f = 0 and D f + f = 0. x − y Examples. ◮ f(x,y) = exp(x y) is holonomic because − D f f = 0 and D f + f = 0. x − y ◮ n f(n,k)= k is holonomic because  (1 k+n)S f (n+1)f = 0 and (k+1)S f +(k n)f = 0. − n − k − Examples. ◮ f(x,y) = exp(x y) is holonomic because − D f f = 0 and D f + f = 0. x − y ◮ n f(n,k)= k is holonomic because  (1 k+n)S f (n+1)f = 0 and (k+1)S f +(k n)f = 0. − n − k − ◮ f(x,n)= Pn(x) is holonomic because

(x2 1)D2f + 2xD f n(n + 1)f = 0 and − x x − (n + 2)S2f (2nx 3x)S f +(n + 1)f = 0 n − − n Counterexamples. Counterexamples. ◮ f(x,n)= √x + n is not holonomic. Counterexamples. ◮ f(x,n)= √x + n is not holonomic. It satisfies a differential equation in x, but no recurrence in n. Counterexamples. ◮ f(x,n)= √x + n is not holonomic. It satisfies a differential equation in x, but no recurrence in n. ◮ x f(x,n)= n is not holonomic.  Counterexamples. ◮ f(x,n)= √x + n is not holonomic. It satisfies a differential equation in x, but no recurrence in n. ◮ x f(x,n)= n is not holonomic. It satisfies a recurrence in n, but no differential equation in x. Counterexamples. ◮ f(x,n)= √x + n is not holonomic. It satisfies a differential equation in x, but no recurrence in n. ◮ x f(x,n)= n is not holonomic. It satisfies a recurrence in n, but no differential equation in x. ◮ f(n,k)= S1(n,k) [Stirling numbers] is not holonomic. Counterexamples. ◮ f(x,n)= √x + n is not holonomic. It satisfies a differential equation in x, but no recurrence in n. ◮ x f(x,n)= n is not holonomic. It satisfies a recurrence in n, but no differential equation in x. ◮ f(n,k)= S1(n,k) [Stirling numbers] is not holonomic. It satisfies the recurrence

S S f + nS f f = 0, n k n −

but no “pure” recurrence in Sk or Sn. Theorem. A holonomic function is uniquely determined by a holonomic system of equations and a finite number of initial values. Theorem. A holonomic function is uniquely determined by a holonomic system of equations and a finite number of initial values. Example. ◮ Consider the equations

2 (... )Snf +(... )Snf +(... )f = 0 3 2 (... )Skf +(... )Skf +(... )Skf +(... )f = 0 Theorem. A holonomic function is uniquely determined by a holonomic system of equations and a finite number of initial values. Example. ◮ Consider the equations

2 (... )Snf +(... )Snf +(... )f = 0 3 2 (... )Skf +(... )Skf +(... )Skf +(... )f = 0 Theorem. A holonomic function is uniquely determined by a holonomic system of equations and a finite number of initial values. Example. ◮ Consider the equations

2 (... )Snf +(... )Snf +(... )f = 0 3 2 (... )Skf +(... )Skf +(... )Skf +(... )f = 0 Theorem. A holonomic function is uniquely determined by a holonomic system of equations and a finite number of initial values. Example. ◮ Consider the equations

2 (... )Snf +(... )Snf +(... )f = 0 3 2 (... )Skf +(... )Skf +(... )Skf +(... )f = 0 Theorem. A holonomic function is uniquely determined by a holonomic system of equations and a finite number of initial values. Example. ◮ Consider the equations

2 (... )Snf +(... )Snf +(... )f = 0 3 2 (... )Skf +(... )Skf +(... )Skf +(... )f = 0 Theorem. A holonomic function is uniquely determined by a holonomic system of equations and a finite number of initial values. Example. ◮ Consider the equations

2 (... )Snf +(... )Snf +(... )f = 0 3 2 (... )Skf +(... )Skf +(... )Skf +(... )f = 0 Theorem. A holonomic function is uniquely determined by a holonomic system of equations and a finite number of initial values. Example. ◮ Consider the equations

2 (... )Snf +(... )Snf +(... )f = 0 3 2 (... )Skf +(... )Skf +(... )Skf +(... )f = 0

The solution is uniquely determined by

f(0, 0),f(1, 0),f(2, 0),f(1, 0),f(1, 1),f(2, 1). Theorem. A holonomic function is uniquely determined by a holonomic system of equations and a finite number of initial values. Example. ◮ Consider the equations

2 (... )Snf +(... )Snf +(... )f = 0 3 2 (... )Skf +(... )Skf +(... )Skf +(... )f = 0

The solution is uniquely determined by

f(0, 0),f(1, 0),f(2, 0),f(1, 0),f(1, 1),f(2, 1).

Simiarly for differential equations and for systems containing mixed equations. Holonomy requires for every variable a pure equation. Holonomy requires for every variable a pure equation. But if there are mixed equations in addition, they are welcome. Holonomy requires for every variable a pure equation. But if there are mixed equations in addition, they are welcome. Example. ◮ f(x,n)= Pn(x) satisfies

(x2 1)D2f + 2xD f n(n + 1)f = 0 and − x x − (n + 2)S2f (2nx 3x)S f +(n + 1)f = 0 n − − n Holonomy requires for every variable a pure equation. But if there are mixed equations in addition, they are welcome. Example. ◮ f(x,n)= Pn(x) satisfies

(x2 1)D2f + 2xD f n(n + 1)f = 0 and − x x − (n + 2)S2f (2nx 3x)S f +(n + 1)f = 0 and n − − n (x2 1)D f (n + 1)S f +(n + 1)xf = 0. − x − n Holonomy requires for every variable a pure equation. But if there are mixed equations in addition, they are welcome. Example. ◮ f(x,n)= Pn(x) satisfies

(x2 1)D2f + 2xD f n(n + 1)f = 0 and − x x − (n + 2)S2f (2nx 3x)S f +(n + 1)f = 0 and n − − n (x2 1)D f (n + 1)S f +(n + 1)xf = 0. − x − n In this case, any two equations imply the other. Holonomy requires for every variable a pure equation. But if there are mixed equations in addition, they are welcome. Example. ◮ f(x,n)= Pn(x) satisfies

(x2 1)D2f + 2xD f n(n + 1)f = 0 and − x x − (n + 2)S2f (2nx 3x)S f +(n + 1)f = 0 and n − − n (x2 1)D f (n + 1)S f +(n + 1)xf = 0. − x − n In this case, any two equations imply the other. In general, mixed equations may contain additional information. Holonomy requires for every variable a pure equation. But if there are mixed equations in addition, they are welcome. Example. ◮ f(x,n)= Pn(x) satisfies

(x2 1)D2f + 2xD f n(n + 1)f = 0 and − x x − (n + 2)S2f (2nx 3x)S f +(n + 1)f = 0 and n − − n (x2 1)D f (n + 1)S f +(n + 1)xf = 0. − x − n In this case, any two equations imply the other. In general, mixed equations may contain additional information. A system of equations is called holonomic if it implies for every variable a pure equation. Have: Have: ◮ Finite data structure for representing holonomic objects Have: ◮ Finite data structure for representing holonomic objects ◮ Coverage of many important examples Have: ◮ Finite data structure for representing holonomic objects ◮ Coverage of many important examples

Want: Have: ◮ Finite data structure for representing holonomic objects ◮ Coverage of many important examples

Want: ◮ Structural properties of the class of holonomic objects Have: ◮ Finite data structure for representing holonomic objects ◮ Coverage of many important examples

Want: ◮ Structural properties of the class of holonomic objects ◮ Algorithms for doing explicit computations with them Theorem (closure properties). Let f and g be holonomic functions. Then: Theorem (closure properties). Let f and g be holonomic functions. Then: ◮ f + g is holonomic Theorem (closure properties). Let f and g be holonomic functions. Then: ◮ f + g is holonomic ◮ fg is holonomic Theorem (closure properties). Let f and g be holonomic functions. Then: ◮ f + g is holonomic ◮ fg is holonomic ◮ Dxf is holonomic for every continuous variable x Theorem (closure properties). Let f and g be holonomic functions. Then: ◮ f + g is holonomic ◮ fg is holonomic ◮ Dxf is holonomic for every continuous variable x ◮ x f is holonomic for every continuous variable x R Theorem (closure properties). Let f and g be holonomic functions. Then: ◮ f + g is holonomic ◮ fg is holonomic ◮ Dxf is holonomic for every continuous variable x ◮ x f is holonomic for every continuous variable x ◮ SR nf is holonomic for every discrete variable n Theorem (closure properties). Let f and g be holonomic functions. Then: ◮ f + g is holonomic ◮ fg is holonomic ◮ Dxf is holonomic for every continuous variable x ◮ x f is holonomic for every continuous variable x ◮ SR nf is holonomic for every discrete variable n ◮ n k=0 f(...,k,... ) is holonomic for every discrete variable n P Theorem (closure properties). Let f and g be holonomic functions. Then: ◮ f + g is holonomic ◮ fg is holonomic ◮ Dxf is holonomic for every continuous variable x ◮ x f is holonomic for every continuous variable x ◮ SR nf is holonomic for every discrete variable n ◮ n k=0 f(...,k,... ) is holonomic for every discrete variable n ◮ IfPh1,...,hp are algebraic functions in x1,...,xp, free of n1,...,nq, then f(h1,...,hp,n1,...,nq) is holonomic. Theorem (closure properties). Let f and g be holonomic functions. Then: ◮ f + g is holonomic ◮ fg is holonomic ◮ Dxf is holonomic for every continuous variable x ◮ x f is holonomic for every continuous variable x ◮ SR nf is holonomic for every discrete variable n ◮ n k=0 f(...,k,... ) is holonomic for every discrete variable n ◮ IfPh1,...,hp are algebraic functions in x1,...,xp, free of n1,...,nq, then f(h1,...,hp,n1,...,nq) is holonomic. ◮ If h1,...,hq are integer-linear functions in n1,...,nq, free of x1,...,xp, then f(x1,...,xp, h1,...,hq) is holonomic. The theorem is algorithmic: The theorem is algorithmic: ◮ Holonomic systems for all these functions can be computed from given holonomic systems of f and g. The theorem is algorithmic: ◮ Holonomic systems for all these functions can be computed from given holonomic systems of f and g.

There is software available for this. The theorem is algorithmic: ◮ Holonomic systems for all these functions can be computed from given holonomic systems of f and g.

There is software available for this. ◮ For Maple: mgfun by Chyzak, distributed together with Maple. The theorem is algorithmic: ◮ Holonomic systems for all these functions can be computed from given holonomic systems of f and g.

There is software available for this. ◮ For Maple: mgfun by Chyzak, distributed together with Maple. ◮ For Mathematica: HolonomicFunctions.m by Koutschan, available from the RISC combinatorics software website. Example. Example.

◮ f(x,n)= n!xn exp(x)P (√1 x2) 2n+3 − Example.

◮ f(x,n)= n!xn exp(x)P (√1 x2) 2n+3 − In[1]:= << HolonomicFunctions.m Example.

◮ f(x,n)= n!xn exp(x)P (√1 x2) 2n+3 − In[1]:= << HolonomicFunctions.m HolonomicFunctions package by Christoph Koutschan, RISC-Linz, Version 1.4 (10.11.2010) –> Type ?HolonomicFunctions for help Example.

◮ f(x,n)= n!xn exp(x)P (√1 x2) 2n+3 − In[1]:= << HolonomicFunctions.m HolonomicFunctions package by Christoph Koutschan, RISC-Linz, Version 1.4 (10.11.2010) –> Type ?HolonomicFunctions for help n 2 In[2]:= Annihilator[n!x Exp[x]LegendreP[2n + 3, Sqrt[1 − x ]], {Der[x],S[n]}] Example.

◮ f(x,n)= n!xn exp(x)P (√1 x2) 2n+3 − In[1]:= << HolonomicFunctions.m HolonomicFunctions package by Christoph Koutschan, RISC-Linz, Version 1.4 (10.11.2010) –> Type ?HolonomicFunctions for help n 2 In[2]:= Annihilator[n!x Exp[x]LegendreP[2n + 3, Sqrt[1 − x ]], {Der[x],S[n]}]

2 2 4 Out[2]= ( 9x ... )Dx + (4n + ... )Sn + (13nx + ... ), n − − 3 2 4 3 5 2 (16n + )Sn + (64n x + ... )Sn + (16n x + ) ··· ··· o Example.

◮ n n 1 f(n,k)= k + k=0 k!  P Example.

◮ n n 1 f(n,k)= k + k=0 k! In[3]:= Annihilator[Binomial[  P n,k]+ Sum[1/k!, {k, 0,n}], {S[n],S[k]}] Example.

◮ n n 1 f(n,k)= k + k=0 k! In[3]:= Annihilator[Binomial[  P n,k]+ Sum[1/k!, {k, 0,n}], {S[n],S[k]}]

2 2 2 Out[3]= (2k + ... )S +(n + )Sk + (3kn + ), k ··· ··· n 2 2 (n + )SnSk + (3kn + )Sn + (2kn + )Sk +(n + ), ··· ··· ··· ··· 3 2 4 2 2 3 (4kn + )Sn +(n + )Sn +(k n + )Sk (n + ) ··· ··· ··· − ··· o Example.

◮ x f(x,n)= 0 Pn(t)dt R Example.

◮ x f(x,n)= 0 Pn(t)dt In[4]:= Annihilator[Integrate[LegendreP[R n,t], {t, 0,x}], {Der[x],S[n]}] Example.

◮ x f(x,n)= 0 Pn(t)dt In[4]:= Annihilator[Integrate[LegendreP[R n,t], {t, 0,x}], {Der[x],S[n]}]

5 2 3 3 2 Out[4]= (2n x + )Sn + , (2n x + )DxSn + , n ··· ······ ··· ······ 2 5 2 7 3 (2n x + )DxSn + , (nx + )Dx + ··· ······ ··· ······ o Low-level commands for executing closure properties “by hand”: Low-level commands for executing closure properties “by hand”: ◮ DFinitePlus Low-level commands for executing closure properties “by hand”: ◮ DFinitePlus ◮ DFiniteTimes Low-level commands for executing closure properties “by hand”: ◮ DFinitePlus ◮ DFiniteTimes ◮ DFiniteSubstitute Low-level commands for executing closure properties “by hand”: ◮ DFinitePlus ◮ DFiniteTimes ◮ DFiniteSubstitute ◮ DFiniteOreAction Low-level commands for executing closure properties “by hand”: ◮ DFinitePlus ◮ DFiniteTimes ◮ DFiniteSubstitute ◮ DFiniteOreAction ◮ DFiniteDE2RE Low-level commands for executing closure properties “by hand”: ◮ DFinitePlus ◮ DFiniteTimes ◮ DFiniteSubstitute ◮ DFiniteOreAction ◮ DFiniteDE2RE ◮ DFiniteRE2DE Low-level commands for executing closure properties “by hand”: ◮ DFinitePlus ◮ DFiniteTimes ◮ DFiniteSubstitute ◮ DFiniteOreAction ◮ DFiniteDE2RE ◮ DFiniteRE2DE Use this commands for functions whose definition is not known to Annihilator or for expressions where the Annihilator command takes a long time. Example. ◮ n Pn(x)+ x exp(x) Example. ◮ n Pn(x)+ x exp(x) 2 In[5]:= annP = OreGroebnerBasis[{(x − 1)Der[x] − (n + 1)S[n] 2 +(x + nx), (n + 2)S[n] − (2nx + 3x)S[n]+(n + 1)}, OreAlgebra[Der[x],S[n]]]; Example. ◮ n Pn(x)+ x exp(x) 2 In[5]:= annP = OreGroebnerBasis[{(x − 1)Der[x] − (n + 1)S[n] 2 +(x + nx), (n + 2)S[n] − (2nx + 3x)S[n]+(n + 1)}, OreAlgebra[Der[x],S[n]]]; In[6]:= annE = OreGroebnerBasis[{xDer[x] − (n + x), S[n] − x}, OreAlgebra[Der[x],S[n]]]; Example. ◮ n Pn(x)+ x exp(x) 2 In[5]:= annP = OreGroebnerBasis[{(x − 1)Der[x] − (n + 1)S[n] 2 +(x + nx), (n + 2)S[n] − (2nx + 3x)S[n]+(n + 1)}, OreAlgebra[Der[x],S[n]]]; In[6]:= annE = OreGroebnerBasis[{xDer[x] − (n + x), S[n] − x}, OreAlgebra[Der[x],S[n]]]; In[7]:= DFinitePlus[annP, annE] Example. ◮ n Pn(x)+ x exp(x) 2 In[5]:= annP = OreGroebnerBasis[{(x − 1)Der[x] − (n + 1)S[n] 2 +(x + nx), (n + 2)S[n] − (2nx + 3x)S[n]+(n + 1)}, OreAlgebra[Der[x],S[n]]]; In[6]:= annE = OreGroebnerBasis[{xDer[x] − (n + x), S[n] − x}, OreAlgebra[Der[x],S[n]]]; In[7]:= DFinitePlus[annP, annE]

3 3 2 2 2 2 2 Out[7]= {Dx(nx −nx+x −x)+Sn(−3n x−2nx −5nx−3x −x)+Sn(n +nx+2n+2x)+ 2 2 2 2 2 2 3 2 4 2 n x +n +2nx +nx+n+x +x,DxSn(nx −n+x −x)+(x −x )Dx+Sn(n (−x)− 2 3 3 2 2 2 5 4 3 2 nx)+n −nx +nx+n−x +x,Dx(n x −n −2nx +2nx +4nx −3nx −2nx+n− 6 4 2 2 5 3 6 4 2 3 3 3 2 4 2 3 x +2x −x )+Dx(nx −2nx +nx+x −2x +x )−n x +2n x−3n x −n x + 2 2 2 3 2 3 2 4 3 2 4 3 2 3n x +n x+Sn(−n +2n x −2n x+nx +4nx −nx −2nx+n+x +2x −x )− 5 4 3 2 5 4 3 nx −5nx +nx +3nx −nx−x −2x +x } Theorem (Summation/Integration). Theorem (Summation/Integration). ◮ If f is holonomic, then so is

∞ f(t,x2,...,xp,n1,...,nq)dt, Z −∞ provided that this exists. Theorem (Summation/Integration). ◮ If f is holonomic, then so is

∞ f(t,x2,...,xp,n1,...,nq)dt, Z −∞ provided that this integral exists. ◮ If f is holonomic, then so is

∞ f(x1,...,xp,k,n2,...,nq), k=X −∞ provided that this sum exists. Theorem (Summation/Integration). ◮ If f is holonomic, then so is

∞ f(t,x2,...,xp,n1,...,nq)dt, Z −∞ provided that this integral exists. ◮ If f is holonomic, then so is

∞ f(x1,...,xp,k,n2,...,nq), k=X −∞ provided that this sum exists. Warning! Strictly speaking, this item only holds for the official definition of holonomic. Note the difference between indefinite and definite summation and integration: Note the difference between indefinite and definite summation and integration: Indefinite: Definite: Note the difference between indefinite and definite summation and integration: Indefinite: Definite: n g(n, m)= f(k, m). Xk=0 Note the difference between indefinite and definite summation and integration: Indefinite: Definite: n ∞ g(n, m)= f(k, m). g(m)= f(k, m). Xk=0 k=X −∞ Note the difference between indefinite and definite summation and integration: Indefinite: Definite: n ∞ g(n, m)= f(k, m). g(m)= f(k, m). Xk=0 k=X −∞ Sum and summand have the same number of variables. Note the difference between indefinite and definite summation and integration: Indefinite: Definite: n ∞ g(n, m)= f(k, m). g(m)= f(k, m). Xk=0 k=X −∞ Sum and summand have the The sum has one variable less same number of variables. than the summand. Note the difference between indefinite and definite summation and integration: Indefinite: Definite: n ∞ g(n, m)= f(k, m). g(m)= f(k, m). Xk=0 k=X −∞ Sum and summand have the The sum has one variable less same number of variables. than the summand.

w easy Note the difference between indefinite and definite summation and integration: Indefinite: Definite: n ∞ g(n, m)= f(k, m). g(m)= f(k, m). Xk=0 k=X −∞ Sum and summand have the The sum has one variable less same number of variables. than the summand.

w w easy hard Note the difference between indefinite and definite summation and integration: Indefinite: Definite:

x g(x, y)= f(t, y) dt. g(y)= ∞ f(t, y) dt. Z0 Z −∞ Sum and summand have the The sum has one variable less same number of variables. than the summand.

w w easy hard

The situation for integration is fully analogous. Examples. Examples.

◮ n k n 2 f(n)= k=0 4 k satisfies P  (n + 2)S2f (10n + 15)S f + (9n + 9)f = 0. n − n Examples.

◮ n k n 2 f(n)= k=0 4 k satisfies P  (n + 2)S2f (10n + 15)S f + (9n + 9)f = 0. n − n ◮ f(x)= ∞ t2√t + 1exp( xt2)dt satisfies 0 − R 2 3 2 2 16x Dxf + (16x + 96x)Dxf + (72x + 99)Dxf + 48f = 0. Examples.

◮ n k n 2 f(n)= k=0 4 k satisfies P  (n + 2)S2f (10n + 15)S f + (9n + 9)f = 0. n − n ◮ f(x)= ∞ t2√t + 1exp( xt2)dt satisfies 0 − R 2 3 2 2 16x Dxf + (16x + 96x)Dxf + (72x + 99)Dxf + 48f = 0.

◮ n f(x,t)= n∞=0 Pn(t)x satisfies P (x2 2tx+1)D f xf=0 and (x2 2tx+1)D f +(x t)f=0. − t − − x − Examples.

−1−ǫ/2 ǫ/2 −ǫ/2 ◮ 1 1 w (1 z) z n+1 n+1 f(n)= − 1− (1 w (1 w) )dw dz 0 0 (z+w wz) ǫ − − − satisfiesR R −

(8ǫn7 + )S3f (24ǫn7 + )S2f ··· n − ··· n (24ǫn7 + )S f + (8ǫn7 + )f = 0. − ··· n ··· Examples.

−1−ǫ/2 ǫ/2 −ǫ/2 ◮ 1 1 w (1 z) z n+1 n+1 f(n)= − 1− (1 w (1 w) )dw dz 0 0 (z+w wz) ǫ − − − satisfiesR R −

(8ǫn7 + )S3f (24ǫn7 + )S2f ··· n − ··· n (24ǫn7 + )S f + (8ǫn7 + )f = 0. − ··· n ··· 1 ◮ 2 2 a b f(x)= t (1 t) 2F1 xt dt satisfies Z0 −  c 

x2(x 1)D3f +(... )D2f +(... )D f + 3abf = 0. − x x x How does this work? How does this work? Basic principle: Assume we have f(x, 0) = f(x, 1) = 0 and we 1 want to find an equation for F (x)= 0 f(x,y)dy. R How does this work? Basic principle: Assume we have f(x, 0) = f(x, 1) = 0 and we 1 want to find an equation for F (x)= 0 f(x,y)dy. Suppose f satisfies an equation of theR form

2 a(x)f + b(x)Dxf + c(x)Dxf = Dy h(x,y)f  How does this work? Basic principle: Assume we have f(x, 0) = f(x, 1) = 0 and we 1 want to find an equation for F (x)= 0 f(x,y)dy. Suppose f satisfies an equation of theR form

2 a(x)f + b(x)Dxf + c(x)Dxf = Dy h(x,y)f  Then integrating both sides gives How does this work? Basic principle: Assume we have f(x, 0) = f(x, 1) = 0 and we 1 want to find an equation for F (x)= 0 f(x,y)dy. Suppose f satisfies an equation of theR form

2 a(x)f + b(x)Dxf + c(x)Dxf = Dy h(x,y)f  Then integrating both sides gives

2 a(x)F (x)+ b(x)DxF (x)+ c(x)DxF (x) = 0 Example. ◮ f(t,x)= t2√t + 1exp( xt2). − Example. ◮ f(t,x)= t2√t + 1exp( xt2). − 2t(t + 1)D f + (4t3x + 4t2x 5t 4)f = 0, t − − 2 Dxf + t f = 0. Example. ◮ f(t,x)= t2√t + 1exp( xt2). − 2t(t + 1)D f + (4t3x + 4t2x 5t 4)f = 0, t − − 2 Dxf + t f = 0.

= ⇒ Example. ◮ f(t,x)= t2√t + 1exp( xt2). − 2t(t + 1)D f + (4t3x + 4t2x 5t 4)f = 0, t − − 2 Dxf + t f = 0.

= 16x2D3f + (16x2 + 96x)D2f + (72x + 99)D f + 48f ⇒ x x x = D 2(4t5x 4t3x 9t3 t2 + 8t)f t − − − −  Example. ◮ f(t,x)= t2√t + 1exp( xt2). − 2t(t + 1)D f + (4t3x + 4t2x 5t 4)f = 0, t − − 2 Dxf + t f = 0. “Telescoper”: free of t 2 3 2 2 = 16x Dxf + (16x + 96x)Dxf + (72x + 99)Dxf + 48f ⇒ z }| { = D 2(4t5x 4t3x 9t3 t2 + 8t)f t − − − −  Example. ◮ f(t,x)= t2√t + 1exp( xt2). − 2t(t + 1)D f + (4t3x + 4t2x 5t 4)f = 0, t − − 2 Dxf + t f = 0. “Telescoper”: free of t 2 3 2 2 = 16x Dxf + (16x + 96x)Dxf + (72x + 99)Dxf + 48f ⇒ z }| { = D 2(4t5x 4t3x 9t3 t2 + 8t)f t − − − − “Certificate”  | {z } Example. ◮ f(t,x)= t2√t + 1exp( xt2). F (x)= ∞ f(x,t)dt − 0 R 2t(t + 1)D f + (4t3x + 4t2x 5t 4)f = 0, t − − 2 Dxf + t f = 0. “Telescoper”: free of t 2 3 2 2 = 16x Dxf + (16x + 96x)Dxf + (72x + 99)Dxf + 48f ⇒ z }| { = D 2(4t5x 4t3x 9t3 t2 + 8t)f t − − − − “Certificate”  | {z } Example. ◮ f(t,x)= t2√t + 1exp( xt2). F (x)= ∞ f(x,t)dt − 0 R 2t(t + 1)D f + (4t3x + 4t2x 5t 4)f = 0, t − − 2 Dxf + t f = 0. “Telescoper”: free of t 2 3 2 2 = 16x Dxf + (16x + 96x)Dxf + (72x + 99)Dxf + 48f ⇒ z }| { = D 2(4t5x 4t3x 9t3 t2 + 8t)f t − − − − “Certificate”  | {z } = ⇒ Example. ◮ f(t,x)= t2√t + 1exp( xt2). F (x)= ∞ f(x,t)dt − 0 R 2t(t + 1)D f + (4t3x + 4t2x 5t 4)f = 0, t − − 2 Dxf + t f = 0. “Telescoper”: free of t 2 3 2 2 = 16x Dxf + (16x + 96x)Dxf + (72x + 99)Dxf + 48f ⇒ z }| { = D 2(4t5x 4t3x 9t3 t2 + 8t)f t − − − − “Certificate”  | {z } = 16x2D3F + (16x2 + 96x)D2F + (72x + 99)D F + 48F = 0 ⇒ x x x How to construct a creative telescoping relation? How to construct a creative telescoping relation? There are algorithms for this task. How to construct a creative telescoping relation? There are algorithms for this task. ◮ Algorithms based on Gr¨obner basis technology How to construct a creative telescoping relation? There are algorithms for this task. ◮ Algorithms based on Gr¨obner basis technology ◮ Algorithms based on linear algebra How to construct a creative telescoping relation? There are algorithms for this task. ◮ Algorithms based on Gr¨obner basis technology ◮ Algorithms based on linear algebra ◮ Chyzak’s algorithm (generalizing Zeilberger’s algorithm) How to construct a creative telescoping relation? There are algorithms for this task. ◮ Algorithms based on Gr¨obner basis technology ◮ Algorithms based on linear algebra ◮ Chyzak’s algorithm (generalizing Zeilberger’s algorithm) ◮ Takayama’s algorithm How to construct a creative telescoping relation? There are algorithms for this task. ◮ Algorithms based on Gr¨obner basis technology ◮ Algorithms based on linear algebra ◮ Chyzak’s algorithm (generalizing Zeilberger’s algorithm) ◮ Takayama’s algorithm Depending on the problem at hand, any of these algorithms may be much more efficient than the others. Koutschan’s package provides the command FindCreativeTelescoping. Koutschan’s package provides the command FindCreativeTelescoping. Examples Koutschan’s package provides the command FindCreativeTelescoping. Examples

◮ F (x)= ∞ t2√t + 1exp( xt2) 0 − R Koutschan’s package provides the command FindCreativeTelescoping. Examples

◮ F (x)= ∞ t2√t + 1exp( xt2) 0 − In[1]:= << HolonomicFunctionsR .m Koutschan’s package provides the command FindCreativeTelescoping. Examples

◮ F (x)= ∞ t2√t + 1exp( xt2) 0 − In[1]:= << HolonomicFunctionsR .m HolonomicFunctions package by Christoph Koutschan, RISC-Linz, Version 1.4 (10.11.2010) –> Type ?HolonomicFunctions for help Koutschan’s package provides the command FindCreativeTelescoping. Examples

◮ F (x)= ∞ t2√t + 1exp( xt2) 0 − In[1]:= << HolonomicFunctionsR .m HolonomicFunctions package by Christoph Koutschan, RISC-Linz, Version 1.4 (10.11.2010) –> Type ?HolonomicFunctions for help 2 2 In[2]:= FindCreativeTelescoping[t Sqrt[t + 1]Exp[−xt ], {Der[t]}, {Der[x]}] Koutschan’s package provides the command FindCreativeTelescoping. Examples

◮ F (x)= ∞ t2√t + 1exp( xt2) 0 − In[1]:= << HolonomicFunctionsR .m HolonomicFunctions package by Christoph Koutschan, RISC-Linz, Version 1.4 (10.11.2010) –> Type ?HolonomicFunctions for help 2 2 In[2]:= FindCreativeTelescoping[t Sqrt[t + 1]Exp[−xt ], {Der[t]}, {Der[x]}]

2 3 2 2 Out[2]= 16x Dx + (16x + 96x)Dx + (72x + 99)Dxf + 48 , n 2(4t5x 4t3x 9t3 t2 + 8t) {− − − − }  o Koutschan’s package provides the command FindCreativeTelescoping. Examples

◮ n F (x,t)= n∞=0 Pn(x)t P Koutschan’s package provides the command FindCreativeTelescoping. Examples

◮ n F (x,t)= n∞=0 Pn(x)t n In[3]:= FindCreativeTelescoping[LegendreP[P n,x]t , {S[n] − 1}, {Der[x], Der[t]}] Koutschan’s package provides the command FindCreativeTelescoping. Examples

◮ n F (x,t)= n∞=0 Pn(x)t n In[3]:= FindCreativeTelescoping[LegendreP[P n,x]t , {S[n] − 1}, {Der[x], Der[t]}]

2 2 Out[3]= (1 + t 2tx)Dt +(t x), ( 1 t + 2tx)Dx + t , n − − − −  2 n(tx−1) ( 1+ x )Dx , ( 1+ tx)Dx nt { − − t } { − − }  o Summary ◮ Holonomic means to satisfy a holonomic system of linear differential/recurrence equations with polynomial coefficients. ◮ Holonomic means to satisfy a holonomic system of linear differential/recurrence equations with polynomial coefficients. ◮ A holonomic system is one which implies a pure relation for every variable. ◮ Holonomic means to satisfy a holonomic system of linear differential/recurrence equations with polynomial coefficients. ◮ A holonomic system is one which implies a pure relation for every variable. ◮ Holonomic system plus initial values characterize a holonomic function uniquely by a finite amount of data. ◮ Holonomic means to satisfy a holonomic system of linear differential/recurrence equations with polynomial coefficients. ◮ A holonomic system is one which implies a pure relation for every variable. ◮ Holonomic system plus initial values characterize a holonomic function uniquely by a finite amount of data. ◮ Many functions and sequences arising in physics (and elsewhere) turn out to be holonomic. ◮ Holonomic means to satisfy a holonomic system of linear differential/recurrence equations with polynomial coefficients. ◮ A holonomic system is one which implies a pure relation for every variable. ◮ Holonomic system plus initial values characterize a holonomic function uniquely by a finite amount of data. ◮ Many functions and sequences arising in physics (and elsewhere) turn out to be holonomic. ◮ Many more can be composed out of known ones by applying holonomic closure properties. ◮ Holonomic means to satisfy a holonomic system of linear differential/recurrence equations with polynomial coefficients. ◮ A holonomic system is one which implies a pure relation for every variable. ◮ Holonomic system plus initial values characterize a holonomic function uniquely by a finite amount of data. ◮ Many functions and sequences arising in physics (and elsewhere) turn out to be holonomic. ◮ Many more can be composed out of known ones by applying holonomic closure properties. ◮ In particular, summation and integration preserves holonomy. ◮ Holonomic means to satisfy a holonomic system of linear differential/recurrence equations with polynomial coefficients. ◮ A holonomic system is one which implies a pure relation for every variable. ◮ Holonomic system plus initial values characterize a holonomic function uniquely by a finite amount of data. ◮ Many functions and sequences arising in physics (and elsewhere) turn out to be holonomic. ◮ Many more can be composed out of known ones by applying holonomic closure properties. ◮ In particular, summation and integration preserves holonomy. ◮ Software packages for Maple and Mathematical are available for computing with holonomic functions.