%rotastanley.tex:
%%a Plain TeX file by Doron Zeilberger (x pages)

%begin macros
\def\L{{\cal L}}
\baselineskip=14pt
\parskip=10pt
\def\halmos{\hbox{\vrule height0.15cm width0.01cm\vbox{\hrule height
  0.01cm width0.2cm \vskip0.15cm \hrule height 0.01cm width0.2cm}\vrule
  height0.15cm width 0.01cm}}
\font\eightrm=cmr8 \font\sixrm=cmr6
\font\eighttt=cmtt8
\magnification=\magstephalf
\def\N{{\cal N}}
\def\P{{\cal P}}
\def\Q{{\cal Q}}
\def\1{{\overline{1}}}
\def\2{{\overline{2}}}
\def\Tilde{\char126\relax}
\parindent=0pt
\overfullrule=0in
\def\frac#1#2{{#1 \over #2}}
%\headline={\rm  \ifodd\pageno  \RightHead  \else  \LeftHead  \fi}
%\def\RightHead{\centerline{
%Title
%}}
%\def\LeftHead{ \centerline{Doron Zeilberger}}
%end macros
\bf
\centerline
{
Using Rota's Umbral Calculus to Enumerate Stanley's P-Partitions
}
\rm
\bigskip
\centerline{ {\it Shalosh B. EKHAD and Doron ZEILBERGER}\footnote{$^1$}
{\eightrm  \raggedright
Department of Mathematics, Rutgers University (New Brunswick),
Hill Center-Busch Campus, 110 Frelinghuysen Rd., Piscataway,
NJ 08854-8019, USA.
%\break
{\eighttt zeilberg@math.rutgers.edu} ,
{\eighttt http://www.math.rutgers.edu/\Tilde zeilberg}.
First version: June 6, 2007.
Accompanied by Maple package {\eighttt RotaStanley}
downloadable from Zeilberger's website.
Supported in part by the NSF.
}
}

\qquad\qquad
{\it Dedicated to Two Combinatorial Giants:
Gian-Carlo Rota (April 27, 1932- April 18, 1999) z''l
and Richard Stanley (b. June 23, 1944) y''la on their
75th and 63rd birthdays, respectively.}

{\bf Compositions and Partitions}


A {\it composition} with $n$ parts
is a vector of non-negative integers $(a_1, \dots, a_n)$.
Defining the {\bf weight} of such a composition
to be $x_1^{a_1} \dots x_n^{a_n}$, we easily get that the
{\it weight-enumerator}, alias {\bf generating function}, of
{\bf all} compositions into $n$ parts is:
$$
{\sum}_{a_1 \geq 0, \dots, a_n \geq 0 }
x_1^{a_1} \cdots x_n^{a_n} =
$$
$$
\left ( \sum_{a_1=0}^{\infty} x_1^{a_1} \right )
\cdots
\left ( \sum_{a_n=0}^{\infty} x_n^{a_n} \right )=
{{1} \over {1-x_1}} \cdots {{1} \over {1-x_n}} \quad.
$$
Leaving the generating function in terms of $x_1, \dots, x_n$ is
really displaying the whole (infinite!) set of compositions into $n$
parts. Setting all the $x_i$'s to be $q$ we get that the
generating function of $c_n(m):=$ number of compositions of $m$
into exactly $n$ non-negative parts, $\sum_{m=0}^{\infty} c_n(m)q^m$,
equals $(1-q)^{-n}$

A {\it partition} with $n$ parts
is an integer-vector $(a_1, \dots, a_n)$ with 
$0 \leq a_1 \leq a_2 \leq \dots \leq a_n$.
Defining the {\bf weight} of such a partition
to be $x_1^{a_1} \dots x_n^{a_n}$, we easily get that the
{\it weight-enumerator}, alias {\bf generating function}, of
{\bf all} partitions into $n$ parts is:
$$
\sum_{ 0 \leq a_1 \leq a_2 \leq \dots \leq a_n }
x_1^{a_1} \cdots x_n^{a_n} =
\sum_{ 0 \leq a_1 \leq a_2 \leq \dots \leq a_n }
(x_1 \cdots x_n)^{a_1} (x_2 \cdots x_n)^{a_2-a_1} 
(x_3 \cdots x_n)^{a_3-a_2} \cdots x_n^{a_n} =
$$
$$
=\left ( \sum_{a_1=0}^{\infty} (x_1 \cdots x_n) ^{a_1} \right )
\cdots
\left ( \sum_{a_2-a_1=0}^{\infty} (x_2 \cdots x_n) ^{a_2-a_1} \right )
\left ( \sum_{a_3-a_2=0}^{\infty} (x_3 \cdots x_n) ^{a_3-a_2} \right )
\cdots
\left ( \sum_{a_n=0}^{\infty}  (x_n) ^{a_n} \right )
$$
$$
={{1} \over {1-x_1 \cdots x_n}}  \cdot
{{1} \over {1-x_2 \cdots x_n}} 
\cdots {{1} \over {1-x_n}} 
={{1} \over {(1-x_1 \cdots x_n)(1-x_2 \cdots x_n) \cdots (1-x_n)}}
\quad .
$$
Leaving the generating function in terms of $x_1, \dots, x_n$ is
really displaying the whole (infinite!) set of partitions into $n$
parts. 
Setting all the $x_i$'s to be $q$ we get that the
generating function of $p_n(m):=$ number of partitions of $m$
into exactly $n$ non-negative parts, $\sum_{n=0}^{\infty} p_n(m)q^m$,
equals $1/((1-q)(1-q^2) \dots (1-q^n))$.

\vfill\eject

{\bf Stanley's P-Partitions}

Compositions and Partitions are the two  {\bf extremes} of
non-negative integer arrays, where in the former there is
{\bf no order} at all imposed, while in the latter there is
a {\bf total} order.

In 1972, Richard Stanley[S1],
standing on the shoulders of Percy MacMahon[M] and Don Knuth[K],
defined a whole new class of objects that bridges between these two extremes.
He coined them {\it P-Partitions}. They concern {\it partially-ordered sets},
called {\it posets} for short.

Recall that a poset $P$ is a finite set of vertices, that we will
name $1,2, \dots, n$, together with a {\it partial-order}
$\leq_P$, satisfying the {\it axioms} 
$x \, \leq_P \,y$ and $y \, \leq_P \, x$ implies $x=y$ and
$x \, \leq_P \, y$ and 
$y \, \leq_P \, z$ implies $x \, \leq_P \, z$. The labeling is called
{\it natural} if $x \, \leq_P \, y$ implies $x \leq y$.


We will represent a naturally-labeled poset
with $n$ vertices by a sequence
of $n$ sets $[S_1, \dots, S_n]$ where $S_i$ is the set of
$j \in P$ such that $j<i$ and
$j \, \leq_P \, i$. Of course $S_1=\phi$ always.
For example, for the empty order (yielding compositions) we have
$P=[\phi, \phi, \dots, \phi]$, for the total order
(yielding partitions) we have
$P=[\phi, \{1\},\{1,2\}, \dots, \{1,2, \dots, n-1\}]$,
for the ``diamond'' (or two-dimensional unit cube) we have
$P=[\phi,\{1\},\{1\},\{1,2,3\}]$ while for
the three-dimensional unit cube, we have
$$
P=[\phi,\{1\},\{1\},\{1\},\{2,3\},\{1,3\},\{1,2\}, \{1,2,3,4,5,6,7\}] \quad.
$$

Given a poset $P$ on $\{1, \dots, n \}$, a P-partition is
a vector of non-negative integers $(a_1, \dots, a_n)$ such that
$i \, \leq_P \, j$ implies $a_i \leq a_j$. For example, if
$P=[\phi,\{1\},\{1\},\{1,2,3\}]$, then $(0,2,4,5)$ 
and $(0,4,2,5)$  are both P-partitions but
$(0,4,2,3)$  is not.

Once again we define the {\bf weight} of a P-partition 
$(a_1, \dots , a_n)$ to be $x_1^{a_1} \cdots x_n^{a_n}$, and
given {\it any} naturally-labeled  poset $P$, we would like
to compute the {\it weight-enumerator}, alias  {\bf generating-function},
of all its P-partitions.

Richard Stanley[S1] (nicely summarized in sec. 4.4 of
the classic [S2]) reasons as follows.
\footnote{$^2$}
{\eightrm  \raggedright
Note that Stanley defines P-partitions to be order-reversing,
while we require that they'll be order-preserving, so to pass from
his convention to ours one has to reverse the poset.}

Let $S_n$ be the set of permutations on $\{1,2, \dots, n \}$.

For any permutation $\pi$ we define the set 
$A_{\pi}$ of vectors of non-negative integers $(a_1, \dots, a_n)$
such that $a_{\pi_1} \leq a_{\pi_2} \leq \dots \leq a_{\pi_n}$ and
{\bf in addition} $a_{\pi_{i}} <  a_{\pi_{i+1}}$ whenever
$\pi_i > \pi_{i+1}$.

It is easy to see that the set of non-negative integer vectors of
length $n$, $\N^n$, can be partitioned into a {\it disjoint}
union
$$
\N^n= \bigcup_{\pi \in S_n} A_{\pi} \quad .
$$

A permutation $\pi=\pi_1 \dots \pi_n$ is {\it compatible}
with $P$ if $i<j$ and
$i \, \leq_P \, j$ implies that $i$ lies to the left of $j$ in $\pi$.

For example, for $P=[\phi, \{1\},\{1\},\{1,2,3\}]$,
there are only two compatible permutations:
$1234$ and $1324$.

The weight-enumerator of each individual $A_{\pi}$ is easy to compute.
It is
$$
\sum (x_{\pi_1})^{a_{\pi_1}} \cdots (x_{\pi_n})^{a_{\pi_n}} 
$$
where the sum ranges over all $(a_1, \dots, a_n)$ in $\N^n$ such that
$a_{\pi_1} \leq a_{\pi_2} \leq \dots \leq a_{\pi_n}$ {\it and}
whenever $\pi_i>\pi_{i+1}$, $a_{\pi_i} < a_{\pi_{i+1}}$. These
are easily summable geometrical series that the computer can do
by itself:
$$
h_{\pi}(x_1, \dots, x_n)
:= {{M_{\pi}(x_1, \dots, x_n)} \over 
{(1-x_{\pi_1} \cdots x_{\pi_n}) 
(1-x_{\pi_2} \cdots x_{\pi_n})
\cdots (1-x_{\pi_n})}}  \quad ,
$$
for some easily-computable monomial $M_{\pi}(x_1, \dots, x_n)$.

Clearly the set of P-partitions is the disjoint union of
the $A_{\pi}$'s for the $\pi$ compatible with $P$, so the
weight-enumerator of all $P$-partitions is simply the sum of
the $h_{\pi}$'s for the $\pi$'s that are compatible with $P$.

Once again the generating function $F_P(x_1, \dots, x_n)$
contains {\it all} the information about the P-partitions of
$P$, since the set of monomials in its Maclaurin expansion
is in an obvious one-to-one correspondence with the set of
P-partitions of $P$.

If one is only interested in the number of $P$-partitions
of $m$, then it is the coeff. of $q^m$ in the
uni-variate rational function $f_P(q):=F_P(q,q,q, \dots , q)$ obtained
by setting all the $x_i$'s to $q$.


{\bf The Exponential Curse}

Stanley's approach works well for small posets. But once the
number of vertices exceeds $10$, the set of compatible
permutations is too large, and it becomes hopeless to compute
$F_P$ and hence $f_P$ directly. But, in mathematics
as well as in life, if things get too complicated, it is
sometimes possible to {\bf decompose} them into 
smaller components, by finding some operation of {\bf gluing}
or {\it grafting}.


{\bf Grafting}

Let $P$ be a poset ,
with $n$ vertices, naturally  labeled $\{1, 2, \dots, n \}$, and
let $Q$ be another poset, 
with $m$ vertices, naturally  labeled $\{1, 2, \dots, m\}$.
Suppose that the subposet of $P$ induced by its {\it last} $k$ vertices
is isomorphic to the subposet of $Q$
induced by its {\it first} $k$ vertices. Then we can form
a {\bf new} poset, the $k$-graft of $P$ and $Q$,
let's call it $R$ and 
denote it by $g(P,Q;k)$, by first promoting the labels of $Q$ by
$n-k$, so that its labels will be $\{n-k+1, \dots, n-k+m\}$ rather
than the original $\{1, \dots , m\}$, and then
{\it identifying} the last
$k$ vertices of $P$ with the first $k$ vertices of $Q$.


{\bf An example of Grafting}

If $P=[\phi,\{1\},\{1\},\{1,2,3\},\{1,2,3\}]$
and $Q=[\phi,\{1\},\{1\},\{1,2,3\},\{1,2,3\},\{1,2,3,4,5\}]$,
and $k=3$, the induced subposet of the first $3$ vertices of
$Q$ is $[\phi,\{1\},\{1\}]$, while that of the last $3$ vertices
of $P$ is $[\{1\},\{1,2,3\},\{1,2,3\}]$ with $\{1,2\}$ removed,
that gives $[\phi,\{3\},\{3\}]$, and ``normalizing'', we get
$[\phi,\{1\},\{1\}]$. The reader can easily convince itself
that
$$
g(P,Q;3)=
[\phi, \{1\},\{1\},\{1,2,3\},\{1,2,3\},\{1,2,3,4,5\},
\{1,2,3,4,5\},\{1,2,3,4,5,6,7\} ] \quad .
$$

{\bf If you know the generating functions for P-partitions
of $P$ and $Q$, can you compute that of Their Graft?}

Not directly! But let's try and ponder how 
a typical P-partition of the graft $R$ looks like.
We can split the decision of how to construct it into
two {\it phases}. First we construct a P-partition of
$P$, and then we look at the last $k$ vertices of $P$ and
think {\bf how to extend them}
to the remaining $m-k$ vertices of $Q$. So we need a more {\bf general}
notion than the generating function 
for P-partition, that weight-enumerates those P-partitions
whose first $k$ vertices have already been assigned values.

For the sake of simplicity, let's first
assume that the grafting region, of the
common $k$ vertices (the last of $P$ and
the first of $Q$), are {\it totally-ordered}. 
From the point of view of $Q$, its first $k$ vertices are
already committed, and it remains to decide the fate
of the remaining $m-k$ vertices. So for each
weakly-increasing vector of integers $(a_1, \dots, a_k)$
we need
$$
S_Q(a_1, \dots, a_k)(x_{k+1}, \dots, x_{m})=
\sum_{q=(a_1, \dots, a_k, q_{k+1}, \dots, q_m)}
{x_{k+1}}^{q_{k+1}} {x_{k+2}}^{q_{k+2}} \cdots {x_{m}}^{q_{m}}
 \quad ,
$$
where the sum is over all P-partitions 
$q=(q_1, \dots, q_m)$, of $Q$, for which 
$q_1=a_1, \dots , q_k=a_k$. And surprise!
The computer can compute it just as easily as it computed $F_Q$,
and the answer will be a rational function whose denominator
is a polynomial in $x_{k+1}, \dots, x_m$ 
but its numerator is a polynomial 
in $x_{k+1}, \dots, x_m$ as well as in `symbolic' monomials
formed from them.

Note that the $(a_1, \dots, a_k)$ do not have to be numerical
but can stay {\it symbolic}. It $(a_1, \dots, a_k)$ is
a symbolic weakly-increasing  sequence of non-negative integers,
then there is an {\bf explicit} formula, that the computer can
easily find by summing (iterated)
{\it symbolic} infinite geometrical series, that we can
call $S_Q(a_1, \dots, a_k)$.
We have
$$
F_R(x_1, \dots, x_{m+n-k})=
\sum_{0 \leq a_1 \leq a_2 \leq \dots \leq a_k}
\quad \quad 
\sum_{(p_1, \dots, p_{n-k}, a_1, \dots, a_k) 
\,\, is \,\, a \,\, P-Partition \,\,of \,\, P}
$$
$$
x_1^{p_1} \cdots x_{n-k}^{p_{n-k}} x_{n-k+1}^{a_1} \cdots x_n^{a_k}
\, \cdot \, S_Q(a_1, \dots, a_k) (x_{n+1}, \dots, x_{n+m-k})
\eqno(GianCarlo)
$$

{\bf Gian-Carlo Rota's Umbral Miracle Comes to the Rescue}

We refer the readers to [Z1] (and if they wish, to the
four sequels [Z2][Z3][Z4][Z5])
for background about umbral operators.


It is now natural to define an {\it operator} $U_Q$, on
the ring of formal power series of $(y_1, \dots, y_k)$ 
by defining it on monomials by:
$$
U_Q(y_1^{a_1} \cdots y_k^{a_k}):=
S_Q(a_1, \dots, a_k) (x_{n+1}, \dots, x_{n+m-k}) \quad,
$$
and {\it extend it by linearity}. It turns out that
$U_Q$ is an {\it umbral operator}, i.e. of the form
$$
f(y_1, \dots, y_k) \rightarrow \sum_{j \in J} 
R_j(x_{n+1}, \dots, x_{m+m-k}) 
f(m^{(j)}_1, \dots, m^{(j)}_k) \quad,
$$
where $J$ is a certain finite index-set, $R_j$ are rational
functions of their arguments, and $m^{(j)}_1, \dots , m^{(j)}_k$
are some specific {\it monomials} in $(x_{n+1}, \dots, x_{m+n-k})$.
The beauty is that the computer can figure out this rather
abstract object, an {\it umbral operator}, {\bf all by itself},
using a certain {\bf data structure} described in [Z1].
Going back to $(GianCarlo)$, we get, {\bf by linearity}
$$
F_R(x_1, \dots, x_{m+n-k})=
\sum_{0 \leq a_1 \leq a_2 \leq \dots \leq a_k}
\quad \quad
\sum_{(p_1, \dots, p_{n-k}, a_1, \dots, a_k) \,\, is \,\, a \,\,
P-Partition \,\,of \,\, P}
$$
$$
x_1^{p_1} \cdots x_{n-k}^{p_{n-k}} x_{n-k+1}^{a_1} \cdots x_n^{a_k}
\, U_Q(y_1^{a_1} \cdots, y_k^{a_k})
$$
This equals, by the {\it linearity} of $U_Q$ to:
$$
U_Q \left [
\sum_{0 \leq a_1 \leq a_2 \leq \dots \leq a_k}
\quad \quad
\sum_{(p_1, \dots, p_{n-k}, a_1, \dots, a_k) \,\, is
\,\, a \,\, P-Partition \,\,of \,\, P}
x_1^{p_1} \cdots x_{n-k}^{p_{n-k}} (y_1 x_{n-k+1})^{a_1} 
\cdots (y_k x_n)^{a_k} \right ]
$$
$$
=
U_Q \left [ F_P( x_1, \dots, x_{n-k}, y_1 x_{n-k+1}, \dots, y_k x_{n} ) 
\right ] \quad .
$$
So in order to compute the generating function for $P$-partitions
of the $k$-graft of $P$ and $Q$ (assuming for now that the
$k$ common vertices are totally ordered), we need to ask $P$
for its $F_P$, but from $Q$ we need more, namely, the Umbral
operator $U_Q$, with input variables $y_1, \dots, y_k$,
and output variables $x_{k+1}, \dots, x_{m}$ that
we later have to shift (in order to accommodate the re-labeling
implied by the graft) to $x_{n+1},\dots, x_{n+m-k}$.
Fortunately, computer algebra systems
(Maple in our case) can compute this {\it operator} almost as easily
as computing the {\it rational function} $F_Q$.


{\bf What if the Interface is Not Totally Ordered?}

Then one must find all the linear extensions of
the induced common poset of 
$P$'s last $k$ vertices and $Q$'s first $k$ vertices, and look at the
input states, and get a vector of Umbral operators.
If Q will be later grafted to yet another poset,
we also look at all the possible ``output states'',
getting an {\bf umbral matrix} connecting the
input states to the output states. Once again
the computer does if all by itself.
For the technical/formal details, we refer the reader to
the Maple package {\tt RotaStanely}.

{\bf Chains of Grafted Posets}

Every poset $P$ can be naturally described 
(usually in numerous ways) as a chain of
elementary posets $[P_1,P_2, \dots, P_M]$ together
with a sequence of positive integers $[k_1, \dots, k_{M-1}]$ that
describes the interfaces: the last $k_1$ vertices of $P_1$ are
identified with the first $k_2$ vertices of $P_2$, $\dots$,
the last $k_{M-1}$ vertices of $P_{M-1}$ are identified
with the first $k_{M-1}$ vertices of $P_M$. Of course we assume
the compatibility conditions. 
We will denote the resulting poset by
$$
G([P_1,P_2, \dots, P_M],[k_1, \dots, k_{M-1}]) \quad .
$$
In the case of a ranked poset,
it is especially transparent, since each of the
component posets consist of two successive ranks.

For large posets $P$, it would be hopeless to
compute $F_P$ directly. But as long as the ``intersection-sizes''
$k_i$'s do not  get too big, we can compute, with the
Umbral method, the generating functions for
enumerating very large posets. In other words, we can handle very
tall posets, as long as they are skinny enough.

{\bf Enumerating Bounded $P$-Partitions}

To get the generating function for $P$-partitions all of whose
parts are $\leq M$, say,
which now is a {\it polynomial} rather than a rational function,
simply graft one last ``claw'' poset to 
the maximal vertices of $P$, and calling
this new vertex $L$, look at the coeff. of $x_L^M$.

{\bf Enumerating Families of $P$-partitions}

So far we outlined an {\it algorithm} for computing generating
functions for {\it specific} posets. But, often we are interested
in one-parameter or several-parameter families.
For example, MacMahon's box theorem about plane partitions
is about the $P$-partitions of the $m \times n$ rectangle
with {\it symbolic} $m$ and $n$. For every specific 
(not too large), $n$, {\tt RotaStanley} can find
$F_P$ for rather large $m$, but what about {\it symbolic} $m$ and
$n$.

Now, MacMahon was extremely lucky that he got a `nice' answer
in terms of $m$ {\bf and} $n$. 
Getting something so explicit for a {\bf two}-parameter family
of posets is very unlikely to ever happen again,
and testifies, that in some sense, MacMahon's result is trivial.
By hindsight, it was extremely naive of him
to expect that there would be a `nice'
answer for {\it solid partitions}, 
jumping to conclusions from the
utterly trivial one-dimensional, and moderately trivial
two-dimensional results.


However, with the current method, one can still hope to
get `nice' (in a generalized sense) results for one-parameter
families of posets, namely those that are iterated-grafting
of an inputted poset $P$ to itself.

So given a poset $P$, let's assume that the
subposet induced by the last $k$ vertices
is isomorphic to the subposet induced by the first $k$ vertices.
Then Define the $n$-th power $P^{(n)}$ to be
$$
P^{(n)}:=G([P,P,P, \dots, P], [k,k, \dots , k] ) \quad,
$$
where there $n$ $P$'s and $n-1$ $k$'s.

The computer can find
the {\it self-umbra} $U$ from the `input' first $k$ vertices
to the `output' last $k$ vertices. The catalytic variables
are $x_1, \dots, x_k$, and one can finds an
{\it umbral } recurrence
$$
F_n(q;x_1, \dots, x_k)= U [ F_{n-1}(q;x_1, \dots, x_k) ] \quad .
$$
This is a certain functional equation, and if there is some
conjectured expression in 
closed form or any other tractable description
(for example, as a solution of linear recurrence equation
with polynomial coefficients in $(q^n,q)$), then it
can be easily proved (automatically!) by verifying this
functional recurrence. Finally, to get the actual generating
function one plugs $x_1=\dots=x_m=q$, getting
$F_n(q;q,q, \dots, q)$, that has the same ``niceness status''
as $F_n$, or, if in luck, even nicer.

So far, we have not explored this symbolic aspect by computer,
but it has lots of potential. We can definitely get
faster and more efficiently some of the results of Andrews, Paule,
and Riese [APR1]
obtained by them using MacMahon's $\Omega$ operator.
The latter method, ingeniously resurrected and implemented by them
is much more general, of course, but for the numerous applications
to enumerating $P$-partitions (e.g. [APR2]), 
the method of the present article seems
to be more efficient than
the MacMahon-Andrews-Paule-Riese method, 
even when the latter is enhanced with Guoce Xin's[X] amazing speedup.


{\bf The Maple Package RotaStanley}

All of this is implemented in our Maple package {\tt RotaStanley}
downloadable from the webpage of this article

{\tt http://www.math.rutgers.edu/\Tilde zeilberg/mamarim/mamarimhtml/
rotastanley.html} ,

where one can also find lots of sample input and output.

{\bf REFERENCES}

[APR1]  George Andrews, Peter Paule, and Axel Riese,
{\it MacMahon's Partition Analysis III: The Omega Package},
Europ. J. Comb. {\bf 22} (2001) 887-904.

[APR2]  George Andrews, Peter Paule, and Axel Riese,
{\it MacMahon's Partition Analysis VIII: Plane Partition Diamonds},
Adv. Appl. Math. {\bf 27} (2001) 231-242.

[K] Donald E. Knuth, {\it A note on solid partitions},
Math. Comp. {\bf 24} (1970), 955-962.

[M] Percy A. MacMahon, {\it ``Combinatory Analysis''}, 2 vols.,
Cambridge University Press, 1915 and 1916; reprinted in one volume
by Chelsea, New York, 1960.

[S1] Richard Stanley, {\it ``Ordered Structures and partitions''},
Memoirs of the Amer. Math. Soc. no. {\bf 119} (1972).

[S2] Richard Stanley, {\it ``Enumerative Combinatorics'', vol. 1},
Wadsworth, Monterey, 1986. Reprinted by Cambridge University Press.

[X] Guoce Xin, {\it ``A fast algorithm for MacMahon's
Partition Analysis''}, Elec. J. Combinatorics {\bf 11} (2004), no. 1,
R58 (20pp).

[Z1] {\it The Umbral Transfer-Matrix Method: I. Foundations},
J. Comb. Theory Ser. A
{\bf 91}, 451-463, (Rota memorial issue) (2000).

[Z2]{\it The Umbral Transfer-Matrix Method. II. Counting Plane Partitions},
Personal J. of Ekhad and Zeilbeger, (2000).

[Z3] {\it The Umbral Transfer-Matrix Method. III. Counting Animals},
New York J of Mathematics 7(2001), 223-231.

[Z4] {\it The Umbral Transfer-Matrix Method. IV. Counting Self-Avoiding
Polygons and Walks}, Elec. J. Comb. {\bf 8}(1)(2001), (22 pages) R28.

[Z5] {\it The Umbral Transfer-Matrix Method. V. The Goulden-Jackson Cluster
Method for Infinitely Many Mistakes}, INTEGERS, {\bf 2} (2002), 
(10 pages), A5 .


\end



