% Fichier  : article.tex
% Format   : LaTeX file
% Auteur   : Bruno Gauthier
% A propos : HYPERG
% Version  : 
% Date     : Thu Jul  8 17:27:17 METDST 1999
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[11pt]{article}

\usepackage{a4wide}

\newcommand{\Ga}{\Gamma}


   \title{HYPERG~: a Maple package\\ for manipulating hypergeometric series}

   \author{Bruno Gauthier
           \thanks{ \texttt{Bruno.Gauthier@univ-mlv.fr},
           Universit\'e Marne-la-Vall\'ee, Institut Gaspard Monge,
           Cit\'e Descartes, 5~bd~Descartes,
           Champs sur marne, 77454 Marne-la-Vall\'ee Cedex 2, France.}
          }
  \date{}

\begin{document}

\maketitle

\begin{abstract}
This article describes a Maple package for the manipulation of generalized
hypergeometric series. This package provides tools for automatic proofs
of identities. The aim of this article is to present the package
and to give some results obtained with it. It can be obtained by either
e-mail~({\tt Bruno.Gauthier@univ-mlv.fr}) or on the web
site~({\tt http://www-igm.univ-mlv.fr/\char'176 gauthier/HYPERG.html}).
\end{abstract}

\maketitle


\section*{Introduction}

{\bf HYPERG} is a Maple package for the manipulation and
identification of hypergeometric series and identities.
It provides several tools for:
\begin{itemize}
\item transforming sums into hypergeometric notation\,;
\item manipulating factorial expressions\,;
\item applying summation and transformation formulas\,;
\item applying contiguous relations\,;
\item computing formal limits of hypergeometric expressions\,;
\item manipulating linear recurrence equations\,;
\item finding polynomial, rational and hypergeometric solutions
      of recurrences\,;
\item using the Gosper and Zeilberger algorithms.
\end{itemize}

In the following sections, we describe Maple basic objects, principal
features and applications.


\section*{Basic objects}

First, we recall that a sequence~$(U_k)$ is \textbf{hypergeometric}
if the ratio of two consecutive terms is a rational function
of the summation index~$k$:
\begin{equation}
 \frac{ U_{k+1} }{ U_{k} } = \frac{p(k)}{q(k)} \ \mbox{,}
\end{equation}
where~$p$ and~$q$ are polynomials in~$k$.\\
Then we define two new hypergeometric objects in Maple:
the rising factorial (also known as \textit{Pochhammer} symbol)
\verb!RF[a,k]!:
$$ (a)_k := \left\{
   \begin{array}{ll}
    a \: (a+1) \ldots (a+k-1)          & k>0,\\
    1                                  & k=0,\\
    \left[(a-1) \: (a-2)
              \ldots (a+k)\right]^{-1} & k<0,\\
   \end{array}
   \right.
$$
and also the hypergeometric series\\
\verb!HYP[[a_1,...,a_r],[b_1,...,b_s],z]!:
$$
   {}_rF_s\left[{a_1,\ldots,a_r \atop b_1,\ldots,b_s};z\right] 
   = \sum_{k=0}^\infty \frac{(a_1)_k \ldots (a_r)_k}
                            {(b_1)_k \ldots (b_s)_k}
                       \frac{z^k}{k!} \ \mbox{.}
$$
The hypergeometric series were already defined in the Maple 
computer algebra system
by \verb!hypergeom([a_1,...,a_r],[b_1,...,b_s],z)!, but
we prefered redefine them to avoid Maple automatic simplifications.

It is important to recognize when a given series is
hypergeometric, because the general theory of hypergeometric
functions is very powerful. So, what we want to do is to show 
how one may identify a given hypergeometric series with a
particular~${}_rF_s$~:
\begin{verbatim}
> SumToHyp( Sum(x^k/k!,k) ); # exponential series

                                 HYP[[], [], x]

> SumToHyp( Sum(1/(2*k-1)/(2*k+1)!,k=0..infinity) );

                         - HYP[[-1/2], [3/2, 1/2], 1/4]

> SumToHyp( Sum(4*k^2+1,k) ); # hypergeometric series with complex parameters

              HYP[[1 - 1/2 I, 1 + 1/2 I, 1], [- 1/2 I, 1/2 I], 1]

> SumToHyp( Sum(k^2+k!,k) );

Error, (in SumToHyp) Not a hypergeometric series
\end{verbatim}

\section*{Database of formulas}

This package contains a lot of summation, transformation
and contiguous formulas involving hypergeometric series.
(The numbering of these formulas is similar as for the
Krattenthaler's Mathematica package~\texttt{HYP}~\cite{b-kratt}.)
Here, we give examples showing how these classical hypergeometric
formulas can be used.

\medskip
\noindent From Watson's theorem, we derive Gauss's second theorem~:
{\small
\begin{verbatim}
> eg := HypSumPrint( HYP[[a,b,c],[d,e],z], 33 );
# z must be equal to 1
# 1/2+1/2*a+1/2*b must be equal to d
# 2*c must be equal to e

eg := HYP[[a, b, c], [d, e], z] =

   1/2
 Pi    GAMMA(1/2 + c) GAMMA(1/2 + 1/2 a + 1/2 b) GAMMA(1/2 - 1/2 a - 1/2 b + c)

    /
   /  (GAMMA(1/2 + 1/2 a) GAMMA(1/2 + 1/2 b) GAMMA(1/2 - 1/2 a + c)
  /

 GAMMA(1/2 - 1/2 b + c))

> eg := subs( z=1, d=1/2+1/2*a+1/2*b, e=2*c, eg );

eg := HYP[[a, b, c], [1/2 + 1/2 a + 1/2 b, 2 c], 1] =

   1/2
 Pi    GAMMA(1/2 + c) GAMMA(1/2 + 1/2 a + 1/2 b) GAMMA(1/2 - 1/2 a - 1/2 b + c)

    /
   /  (GAMMA(1/2 + 1/2 a) GAMMA(1/2 + 1/2 b) GAMMA(1/2 - 1/2 a + c)
  /

 GAMMA(1/2 - 1/2 b + c))

> eg := Lim( eg, c=infinity );

eg :=

                                               1/2
                                             Pi    GAMMA(1/2 + 1/2 a + 1/2 b)
HYP[[a, b], [1/2 + 1/2 a + 1/2 b], 1/2] = -------------------------------------
                                          GAMMA(1/2 + 1/2 a) GAMMA(1/2 + 1/2 b)
\end{verbatim} }
\noindent Ramanujan hypergeometric identity
\begin{eqnarray*}
 &   & 1 - \left({\frac{1}{2}}\right)^3
       + \left({\frac{1/2 \: 3/2}{2}}\right)^3 + \cdots \\
 & = & {}_3F_2\left[{1/2,1/2,1/2 \atop 1,1};-1\right]  \\
 & = & \frac{\Gamma(\frac{9}{8})^2}
            {\Gamma(\frac{5}{4})^2 \: \Gamma(\frac{7}{8})^2} \ \mbox{.}
\end{eqnarray*}
{\small
\begin{verbatim}
> H := HYP[[1/2,1/2,1/2],[1,1],-1]:
> Ht := HypTransf( H, 34 );

                                                      2
                        Ht := HYP[[1/4, 1/4], [1], -1]

> HypSum( Ht, 4 ); # Kummer's theorem

                                     1/2            2
                               (2 + 2   ) GAMMA(3/4)
                           1/4 ----------------------
                                               4
                                     GAMMA(7/8)
\end{verbatim} }

\section*{Formal limits}

This section deals with formal limits of hypergeometrc expression.
{\small
\begin{verbatim}
> #obviously
> expr := RF[-n,r]/RF[1+a+b-c-n,r];

                                       RF[- n, r]
                        expr := ------------------------
                                RF[1 + a + b - c - n, r]

> Lim( expr, n=infinity );

                                       1

> #confluent principle
> Lim( HYP[[a,2*b],[c],z/b], b=infinity );

                              HYP[[a], [c], 2 z]

> # From Wilson polynomials, we get Continuous dual Hahn polynomials
> W(n):= HYP[[-n,n+a+b+c+d-1,a+I*x,a-I*x],[a+b,a+c,a+d],1]
         * RF[a+b,n] * RF[a+c,n] * RF[a+d,n]:
> Lim( W(n)/RF[a+d,n], d=infinity );

GAMMA(a + b + n) GAMMA(a + c + n)

    HYP[[- n, a + I x, a - I x], [a + b, a + c], 1]/(GAMMA(a + b) GAMMA(a + c))
\end{verbatim} }


\section*{Manipulating recurrence equations}



The package~\texttt{HYPERG} is fully compatible
with~\texttt{gfun}~\cite{b-gfun}, therefor we need to add
\texttt{gfun}'s features.
In fact we are interested in the tools handling recurrence equations
and differential equations.
We state the existence of the~\texttt{rectodiffeq} and~\texttt{diffeqtorec}
functions which compute the recurrence associated with the differential
equation and vice versa. For instance:
{\small
\begin{verbatim}
> with(gfun):
> rectodiffeq( {(5*n+10)*u(n)+k*u(n+1)-u(n+2),u(0)=0,u(1)=0}, u(n), f(t) );

                           2                      3
                    (- 10 t  - k t + 1) f(t) - 5 t  D(f)(t)
\end{verbatim} }
The others important tools are closure operations such as:
\begin{verbatim}
  borel            cauchyproduct    invborel         rec+rec          rec*rec
  diffeq+diffeq    diffeq*diffeq    hadamardproduct
\end{verbatim}

In this example we biuld from holonomic recurrences of~$2^n$ and~$n!$ the
recurrence satisfied by~$2^n+n!$ using two methodes~:
closure by addition and the computation of the following casoratian determinant
$$
   \left| \matrix{y(n)   & n!     & 2^n     \cr
                  y(n+1) & (n+1)! & 2^{n+1} \cr
                  y(n+2) & (n+2)! & 2^{n+2} \cr}\right| \ \mbox{.}
$$
{\small
\begin{verbatim}
> with(HYPERG):
> with(gfun):
> rec1 := HypergToRec( 2^n, U(n) );

                         rec1 := 2 U(n) - U(n + 1) = 0

> rec2 := HypergToRec( n!, U(n) );

                      rec2 := U(n) (n + 1) - U(n + 1) = 0

> `rec+rec`( rec1, rec2, U(n) ); # closure by addition

        2                             2
   {(2 n  + 2 n) U(n) + (- 3 n + 2 - n ) U(n + 1) + (n - 1) U(n + 2),

       U(0) = _C[0], U(1) = _C[1], U(2) = 2 _C[1], U(3) = 4 _C[0] + 2 _C[1]}

> GenRec( {2^n,n!}, U(n) );      # casoratian determinant

                                       2
      2 n (n + 1) U(n) + (- 3 n + 2 - n ) U(n + 1) + (n - 1) U(n + 2) = 0
\end{verbatim} }


\section*{Solving recurrence relation}

It is possible to manipulate and find polynomial~\cite{b-a=b},
rational~\cite{b-abra} and hypergeometric~\cite{b-petko} solutions
of linear recurrence relation
{\small
\begin{verbatim}
> PolySolRec( 3*U(n+2)-n*U(n+1)+(n-1)*U(n)=0, U(n) );

                                                2
                              _x2 (27 - 11 n + n )

> PolySolRec( r(n+2)-2*r(n+1)+r(n)=2, r(n), {r(0)=-1,r(1)=m} );

                                              2
                                 - 1 + m n + n

> RatioSolRec( (n+4)*(2*n+1)*(n+2)*U(n+3)-(2*n+3)*(n+3)*(n+1)*U(n+2)
>           +n*(n+2)*(2*n-3)*U(n+1)-(n-1)*(2*n-1)*(n+1)*U(n)=0, U(n) );

                                   _x2 (2 n - 3)
                              1/2 ---------------
                                  (n + 1) (n - 1)
\end{verbatim} }
The following \texttt{HypSolRec} function doesn't return the hypergeometric
solution but the ratio of two consecutive terms:
{\small
\begin{verbatim}
> HypSolRec( (n+4)*a(n+2)+a(n+1)-(n+1)*a(n)=0,a(n) );

                             (n + 1) (2 n + 5)  n + 1
                          {- -----------------, -----}
                             (n + 3) (2 n + 3)  n + 3
\end{verbatim} }
Here, we verify that the recurrence of the previous section is satisfied
by~$2^n$ and~$n!$:
{\small
\begin{verbatim}
> HypSolRec( 2*n*(n+1)*U(n)+(-n^2-3*n+2)*U(n+1)+(n-1)*U(n+2) = 0, U(n) );

                                   {2, n + 1}
\end{verbatim} }


\section*{Finding a recurrence}

\subsection*{Gosper algorithm}

The Gosper algorithm~\cite{b-gosper} deals with the question of
finding an \textit{upward} antidifference $ T(k) $ for given $ U(k) $, 
i.e. a sequence $ T(k) $ for which
$$ T(k+1)-T(k) = U(k) \ \mbox{,} $$ in the particular case
when $ U(k) $ is a hypergeometric term.

{\small
\begin{verbatim}
> T := Gosper( k^2, k );

                                               2        3
                       T := _x0 + 1/6 k - 1/2 k  + 1/3 k 

> U := subs(k=k+1,T) - T;

                                  2              3        2        3
            U := 1/6 - 1/2 (k + 1)  + 1/3 (k + 1)  + 1/2 k  - 1/3 k

> simplify( U );

                                        2
                                       k
> Gosper( k*k!, k );

                                       k!

> Gosper( (k/2)!, k );
Error, (in Gosper) (1/2*k)!, is not hypergeometric in, k
\end{verbatim} }

\noindent \textit{Remark:} Gosper's algorithm is in the computational heart of
Zeilberger's fast algorithm described in the next section.

\subsection*{Zeilberger algorithm}

The (fast) Zeilberger algorithm~\cite{b-zeilb,b-three} deals with the definite
summation of hypergeometric terms. It is a direct application of
the Gosper algorithm. It finds a linear homogeneous recurrence relation
for the sum
$$ s(n) := \sum_{k} F(n,k) \ \mbox{,} $$
where~$F(n,k)$ is a hypergeometric term in~$n$ and~$k$.

The first step is finding a recurrence relation for the 
summand~$F(n,k)$. It is an extension of the Gosper algorithm
which finds polynomials~$a_j(n)$ and~$G(n,k)$ such that:
\begin{equation} \label{e:ext_gosper}
\sum_{j=0}^{J} a_j(n) \: F(n+j,k) = G(n,k+1) - G(n,k) \ \mbox{,} 
\end{equation}
ith $ G(n,k) = R(n,k) \: F(n,k) $ where $ R(n,k) $ is a rational
function called ``certificate''.

Summing~(\ref{e:ext_gosper}) over all integers~$k$, we get
by creative telescoping~\cite{b-telesc}
\begin{equation}
\sum_{j=0}^{J} a_j(n) \: s(n+j) = G(n,\infty) - G(n,-\infty) \ \mbox{,}
\end{equation}
and checking that $ G(n,\pm \infty)=0 $, the recurrence over the initial
sum $ s(n) $ is proved:
\begin{equation}
 a_0(n) \: s(n) + a_1(n) \: s(n+1) + \cdots + a_J(n) \: s(n+J) = 0 \ \mbox{.}
\end{equation}

\begin{verbatim}
> SummandToRec( binomial(n,k), k, n, F, G, 'cert' );

               - 2 F(n, k) + F(n + 1, k) = G(n, k + 1) - G(n, k)

> cert;

                                       k
                                  -----------
                                  - n - 1 + k
\end{verbatim}


\section*{Applications}

\subsection*{Sum of binomial coefficients}

This is a first trivial example which evals the sum of binomial coefficients:
{\small
\begin{verbatim}
> rec := SumToRec( Sum(binomial(n,k),k), n, S );

                         rec := - 2 S(n) + S(n + 1) = 0

> HypSolRec( rec, S(n) );

                                      {2}
\end{verbatim} }

\subsection*{Terminating hypergeometric series}

Following suggestions of~Koornwinder~\cite{b-tom}, we
give a new proof of Kummer's theorem involving Zeilberger's
algorithm, the WZ method and asymptotic estimates.

In the following Kummer's theorem
\begin{equation} \label{e:kummerth}
 {}_2F_1\left[{a,b \atop 1+a-b};-1\right]
     = \frac{ \Ga(1+\frac{a}{2}) \: \Ga(1+a-b) }
            { \Ga(1+a) \: \Ga(1+\frac{a}{2}-b) } \ \mbox{,}
\end{equation}
let us replace $a$ by $a+2\:n$
where $n$ is a new variable that stands for a nonnegative integer.
The resulting formula
\begin{equation} \label{e:kummervar}
 {}_2F_1\left[{a+2\:n,b \atop 1+a+2\:n-b};-1\right]
     = \frac{ \Ga(1+\frac{a}{2}+n) \: \Ga(1+a+2\:n-b) }
            { \Ga(1+a+2\:n) \: \Ga(1+\frac{a}{2}+n-b) }
\end{equation}
is clearly equivalent to (\ref{e:kummerth}).\\
The introduction of the free parameter $n$ is the key to this new
computer-assisted proof.

Formula (\ref{e:kummervar}) can be written as:
\begin{equation} \label{e:p1}
    \frac{\sum_k f(n,k)}{S(n)} = 1 \ \mbox{,}
\end{equation}
where \[ \displaystyle f(n,k) = \frac{(a+2\:n)_k \: (b)_k}{(1+a+2\:n-b)_k}
                  \: \frac{(-1)^k}{k!} \]
and   \[ \displaystyle S(n) = \frac{\Ga(1+\frac{a}{2}+n) \: \Ga(1+a+2\:n-b)}
                    {\Ga(1+a+2\:n) \: \Ga(1+\frac{a}{2}+n-b)} \ \mbox{.} \]
(The coefficient $2$ in the substitution $a \rightarrow a+2\:n$ makes $S(n)$
hypergeometric in $n$.)\\
Formula (\ref{e:p1}) can be rewritten as:
\begin{equation} \label{e:p2}
\sum_k F(n,k) = 1 \qquad \mbox{where }
F(n,k) = \frac{f(n,k)}{S(n)} \mbox{.}
\end{equation}

We shall actually prove this last formula. Using~\texttt{HYPERG},
we apply Zeilberger's algorithm to obtain:
\begin{equation} \label{e:kummerWZ}
F(n,k) - F(n+1,k) = G(n,k+1) - G(n,k) \ \mbox{,}
\end{equation}
with $ G(n,k) = F(n,k) \: C(n,k) $ and $ \displaystyle C(n,k)
= -\frac{(b-1)\:k}{(1+a+2\:n-b+k) \: (a+2\:n)} $.\\
This $C(n,k)$ is the so-called certificate of the WZ-pair $(F,G)$.\\
After summing (\ref{e:kummerWZ}) for $ k $ from $ 0 $ to $K$,
the right-hand side telescopes:
\begin{eqnarray}
 \sum_{k=0}^{K} F(n,k) - \sum_{k=0}^{K} F(n+1,k)
 & = & \sum_{k=0}^{K} G(n,k+1) - \sum_{k=0}^{K} G(n,k) \\
 & = & G(n,K+1) - G(n,0) \\
 \label{e:WZsum}
 & = & F(n,K+1) \: C(n,K+1) \ \mbox{.}
\end{eqnarray}
We now let $K$ tend to infinity. Clearly,
\[ \lim_{K \rightarrow +\infty} C(n,K+1) = -\frac{b-1}{a+2\:n} \ \mbox{.} \]
To determine $ \displaystyle \lim_{K\rightarrow+\infty} F(n,K+1) $, we use
the well-known estimate (see e.g. \cite{b-tom}):
       \begin{equation} \label{e:lim}
       \frac{\Ga(a+k)}{\Ga(b+k)} \sim k^{a-b}
       \quad \mbox{as } k \rightarrow \infty \ \mbox{.}
       \end{equation}
First,
\begin{eqnarray*}
 F(n,k) & = & \frac{(a+2\:n)_k \: (b)_k}{(1+a+2\:n-b)_k}
              \: \frac{(-1)^k}{k!} \: \frac{1}{S(n)} \ \mbox{,} \\
        & = & \frac{\Ga(a+2\:n+k) \: \Ga(b+k) \: (-1)^k}
                   {\Ga(1+a+2\:n-b+k) \: \Ga(k+1)}
              \: T(n) \ \mbox{,}
\end{eqnarray*}
where
$\displaystyle T(n)=\frac{(a+2\:n)\:\Ga(1+\frac{a}{2}+n-b)}
                         {\Ga(b)\:\Ga(1+\frac{a}{2}+n)}$
does not depend on $k$.\\
Then,
\begin{eqnarray*}
 |F(n,k)| & \sim & k^{a+2n-(1+a+2n-b)} \: k^{b-1} \: T(n) \ \mbox{,} \\
          & \sim & k^{2b-2} \: T(n) \ \mbox{.}
\end{eqnarray*}
We know that $ Re(b)<1 $ (necessary condition for the convergence
of the series in (\ref{e:kummerth})).\\
Therefore
\[ \lim_{K \rightarrow +\infty} F(n,K+1) = 0 \ \mbox{.} \]

By a dominated convergence argument~\cite{b-kummer}, we can let~$K$ 
to infinity in~(\ref{e:WZsum}) to obtain~:
\[
   \sum_{k=0}^{\infty} F(n,k) - \sum_{k=0}^{\infty} F(n+1,k) = 0 \ \mbox{.}
\]
Hence, the sum $\sum_{k=0}^{\infty} F(n,k) $ is independent of $n$. Then
\begin{eqnarray*}
\sum_{k=0}^{\infty} F(n,k)
   & = & \lim_{n \rightarrow +\infty} \sum_{k=0}^{\infty} F(n,k) \ \mbox{,} \\
   & = & \sum_{k=0}^{\infty} \lim_{n \rightarrow +\infty} F(n,k) \ \mbox{,}
\end{eqnarray*}
where the last equality is justified by dominated convergence.
Moreover,
\begin{eqnarray*}
\sum_{k=0}^{\infty} F(n,k)
   & = & \sum_{k=0}^{\infty}
         \lim_{n \rightarrow +\infty} (F(n,k) \ \mbox{,} \\
   & = & \sum_{k=0}^{\infty} 2^b \:  \frac{(b)_k \: (-1)^k}{(k)!} \\
   & = & 2^b \: \sum_{k=0}^{\infty} \: \frac{(b)_{k} \: (-1)^k}{k!}
         \ \mbox{,} \\
   & = & 2^b \: (1-(-1))^b = 1 \ \mbox{,} \qquad \mbox{by binomial theorem.}
\end{eqnarray*}
This is precisely formula (\ref{e:p2}).




\begin{thebibliography}{widest-label}

\bibitem{b-abra} S. A. Abramov, \textit{Rational solutions of linear
        differential and $q$-difference equations with polynomial
        coefficients}, Proceedings ISSAC '95, ACM Press, New York,
        (1995) 285-289.
\bibitem{b-user} B. Gauthier, \textit{\texttt{HYPERG}, Maple package,
        User's reference manual, Version 1.0}, (182~pages), version
        \'electronique disponible \`a l'URL\\
        \verb!http://www-igm.univ-mlv.fr/~gauthier!, (1999).
\bibitem{b-kummer} B. Gauthier, \textit{A proof of Kummer's theorem},
         e-Print archive, math.CA/9904061, (1999) 10~pages.
\bibitem{b-gosper} R. W. Gosper, Jr, \textit{Decision procedure for indefinite
        hypergeometric summation}, Proceedings of the national academy of
        sciences of the United States of America, \textbf{75} (1978) 40--42.
\bibitem{b-tom} T. H. Koornwinder, \textit{Identities of nonterminating
        series by Zeilberger's algorithm}, Journal of computational and
        applied mathematics, \textbf{99} (1998) 449--461.
\bibitem{b-kratt} C. Krattenthaler, \textit{\texttt{HYP} and~\texttt{HYPQ},
        Mathematica packages for the manipulation of binomial sums
        and hypergeometric series, respectively $q$-binomial sums and basic
        hypergeometric series}, Journal of symbolic computation, \textbf{20}
        (1995) 737--744.
\bibitem{b-petko} M. Petkov\v{s}ek, \textit{Hypergeometric solutions of linear
        recurrences with polynomial coefficients}, Journal of symbolic
        computation, \textbf{14} (1992) 243--264.
\bibitem{b-a=b} M. Petkov\v{s}ek, H. S. Wilf, D. Zeilberger, \textit{A = B},
        A.K. Peters, Wellesley, Massachusetts, (1996).
        (Les programmes sont disponibles sur le site WWW
        \verb!http://www.cis.upenn.edu/~wilf/AeqB.html!).
\bibitem{b-gfun} B. Salvy, P. Zimmermann, \textit{Gfun~: a maple package
        for the manipulation of generating and holonomic functions in one
        variable}, ACM Transactions on Mathematical Software, \textbf{20}, 2
        (1994) 163--177.
\bibitem{b-slater} L. J. Slater, \textit{Generalized hypergeometric
        functions}, Cambridge University Press, Cambridge, (1966).
\bibitem{b-zeilb} D. Zeilberger, \textit{A fast algorithm for proving
        terminating hypergeometric identities}, Discrete Mathematics,
        \textbf{80} (1990) 207--211.
\bibitem{b-three} D. Zeilberger, \textit{Three recitations on holonomic
        systems and hypergeometric series}, S\'eminaire Lotharingien
        de Combinatoire, \textbf{B24a} (1990).
\bibitem{b-telesc} D. Zeilberger, \textit{The method of creative telescoping},
        Journal of symbolic computation, \textbf{11} (1991) 195--204.
\end{thebibliography}

\end{document}



