## Symmetric polynomials

Let us consider first a program that evaluates
the product of two objects of type
*SCHUR* by which we mean a linear combination of Schur
polynomials (note that the
coefficients of the Schur polynomials are objects, too,
and so they can be integers,
polynomials and many other things as well).
The result is again expressed as an object of this type.
A particular case is what you know as *Schur polynomial* *{a}*,
where *a* is a partition (but the summands of an object of type *SCHUR*
need not correspond to partitions of the same degree), and so
this program is able
to give you the product *{a}{b}*,
where *a* is a partition of *m*, say, and *b* a partition of *n*.
As you know, this product is a linear combination of Schur polynomials
*{g}*, where *g* is a partition of *m+n*, and the coefficient of
*{g}* in *{a}{b}* is the corresponding coefficient that
is explicitly described in the famous *Littlewood-Richardson Rule.*)
**Example: **
The product of two Schur polynomials (see
the file *ex10.c*):
...
scan(SCHUR,a);println(a);
scan(SCHUR,b);println(b);
mult(a,b,c);println(c);
...

Here the situation is a bit more complicated as far as the input is concerned.
The reason is, that there are many ways to input an object of type *SCHUR*.
Therefore
you will be asked in which form you want to give the two objects
the
product of which you would like to see. Let us consider the simplest case, where
the two objects are Schur polynomials.
After typing the command *make* and having received the prompt, you give
the order *a.out*, you will see on your screen the following three lines of
text:

Input of a partition type monom

input of partition as increasing vector

length of vector

Note first that you have to start by answering the last question, which means
that you have to give first of all the number of parts of your first partition,
so you give the answer
*2*

first. Secondly you have to note that the present program system prefers the
*French notation*, and so you answer the next question for an
*integerobject* by 2, and the next question for another *integerobject*
you answer by 3, say.
The next question asks you for the
coefficient of this polynomial in the object of type *SCHUR* which you
chose as first factor. The question will be put in form of a table the
left hand part of which looks as follows:
integer[1] | vector[2] | partition[3] | ... |

skewpart[7] | tableaux[8] | polynom[9] | ... |

schubert[14] | kostka[16] | symchar[18] | ... |

longint[22] | cyclcotomic[124] | radical[125] | ... |

It shows that you can choose as coefficient an integer, a vector, a partition,
a fraction (''bruch`` in German)
and so on, some of these choices of course make no sense for the example
in question. You will be asked *what kind?* and then you
have to indicate your choice by
one of the numbers given in square brackets.
If you choose the coefficient to be an *integer*, you have
to input 1, and if you want to choose this integer as 1 you have to input
another 1. The next question reads as follows:
one more monom y/n

If you want to input exactly this summand corresponding to the partition
*(2,3)*, then you reply *n*, which finishes the input of the first factor,
and it means that your first factor of type *SCHUR* is in fact the Schur
polynomial *{2,3}*, corresponding to the two-rowed partition
*(2,3)* of 5, in French notation, and that its integer coefficient is
1.
Then you will be asked in the same way for the second factor.
If you want to input as second factor
the Schur polynomial corresponding to the partition *(1*^{4}) (in which case
the French and the English notation coincide), you first answer
*integerobject* by 4, and then the four next questions have to be answered
by 1. Having entered this, you have to provide the coefficient, if it is
an integer, then you answer the corresponding question by entering 1.
If you want this coefficient to be 1, you correspondingly answer this
question by putting in a 1. After having answered the question for further
summands in your second factor by *n*,
the program then gives you the desired answer in
the following form: After having entered the dates for the first factor, it
will print

1 23

in order to show you that it understood that properly. Correspondingly, after
having entered the dates for the second factor, it will print
1 1111

1 111123 1 11124 1 11133 1 1134

This answer repeats in the first row the second factor you putted in, showing
you that there was no misunderstanding, while the second row gives you the
desired decomposition
*{2,3}{1*^{4}}={1^{4},2,3}+{1^{3},2,4}+{1^{3},3^{2}}+{1^{2},3,4}.

There is also a routine that expands a Schur polynomial into a sum of
monomials over a given alphabet of indeterminates:
*compute_schur_with_alphabet,*

see *schur.doc* for details. Corresponding routines are available for
monomial symmetric polynomials as well as for complete symmetric
polynomials.

harald.fripertinger@kfunigraz.ac.at,

last changed: November 19, 2001