ChangeLog: add some numbered bugs I fixed
[maxima.git] / share / sym / docsym-en.tex
blob2265f209be53e98dc10ab71a8232ef87a44e3b0e
1 \documentclass[11pt]{article}
2 \usepackage[letterpaper]{geometry}
3 \usepackage{amsmath,amssymb}
4 \usepackage{makeidx}
5 \usepackage{supertabular}
6 \usepackage[hypertex,colorlinks=true,linkcolor=blue,filecolor=webgreen,%
7 hyperindex=true,extension=dvi]{hyperref}
10 \title{The SYM Package for Maxima \\ User's Manual}
11 \author{Annick Valibouze\\
12 LITP (tour 45-55)\\
13 4, Place Jussieu\\
14 75252 Paris Cedex 05\\
15 Unit\'e associ\'ee au CNRS No 248\\
16 et\\
17 GDR DE CALCUL FORMEL MEDICIS\\
18 \small{e-mail: avb@sysal.ibp.fr}}
19 \date{July 19 1993}
21 \makeindex
23 \begin{document}
24 \maketitle
26 \tableofcontents
27 \newpage
28 \noindent
30 \section{Introduction}
32 This documentation concerns a module for manipulating symmetric functions,
33 implemented in Common Lisp. This module, named \texttt{SYM}, is actually
34 presented as an extension of the symbolic calculation system \texttt{Maxima}.
36 Among its applications we note the calculation of resolvents.
39 \section{Definitions and notation}
41 We will consider a ring $\mathcal{A}$.
43 \subsection{Symmetric polynomials}
45 We are given an integer $n>0$.
47 \subsubsection{Group actions}
49 Let $S_n$ be the symmetric group of degree $n$ (each element is a permutation of
50 $\{1,\dots,n\}$).
52 Let $E$ be an arbitrary set. Denote by $E^n$ the set of $n$-tuples of elements
53 of $E$. The \emph{action} of $S_n$ on any $n$-tuple $\underline
54 a=(a_1,\ldots,a_n)$ of $E^n$ is defined as
55 \begin{eqnarray*}
56 S_n \times E^n & \longrightarrow & E^n\\
57 \sigma \times {\underline a} & \longrightarrow &
58 \sigma{\underline a}=(a_{\sigma (1)},\ldots,a_{\sigma (n)}).
59 \end{eqnarray*}
60 Let $\mathcal{A}[\underline x]$ be the ring of polynomials in the $n$ variables
61 $\underline x=(x_1,\ldots ,x_n)$, with coefficients in $\mathcal{A}$. The
62 action of $S_n$ on $\mathcal{A}(\underline x)$ is defined as follows:
63 \begin{eqnarray*}
64 S_n \times \mathcal{A}[\underline x] & \longrightarrow &
65 \mathcal{A}[\underline x] \\
66 \sigma \times f & \longrightarrow & \sigma f \;\; :\;
67 \sigma f({\underline x}) = f(\sigma{\underline x}).
68 \end{eqnarray*}
70 \textbf{Remark.} The action of $S_n$ extends to the sets $E^c$ or
71 $\mathcal{A}[x_1,\ldots ,x_c]$ with $c \leq n$ simply by embedding these sets in
72 $E^n$ and $\mathcal{A}[\underline x]$ respectively.
74 Let $f$ be a function from $\mathcal{A}[\underline x]$ (resp. $\underline a$, a
75 $n$-tuple). We will denote $S_nf$ (resp. $S_n \underline a$) the set $\{\sigma
76 f \;|\; \sigma \in S_n \}$ (resp. $\{\sigma\underline a \;|\; \sigma \in S_n
77 \}$), called the \textit{orbit} of $f$ (resp. $\underline a$) under the action
78 of $S_n$.
81 \subsubsection{Partitions, symmetric polynomials}
83 Let $m$ be a natural number. A \textit{partition} of $m$ is a decreasing
84 sequence of natural numbers $i_1\geq i_2 \geq \ldots$ called \textit{parts}
85 whose sum is $m$. This sum is the \textit{weight} of the partition and its
86 \textit{length} is the number of its non-zero parts.
88 Let $p$ be a polynomial in $n$ variables. This polynomial is \textit{symmetric}
89 if it remains invariant under the action of $S_n$, i.e. if $S_n p =\{p\}$.
91 A symmetric polynomial may be represented by partitions. Let $I=(i_1,\ldots,
92 i_n)$ (i.e. $i_1\geq i_2\geq \ldots \geq i_n$) be a partition of length $\le n$
93 and let ${\underline x}^I$ be the monomial
94 \begin{equation*}
95 {\underline x}^I = x_1^{i_1}x_2^{i_2}\ldots x_n^{i_n}.
96 \end{equation*}
97 A \textit{monomial form} $M_I({\underline x})$ on ${\underline x}$ indexed by
98 $I$ is the sum of the monomials of the orbit of ${\underline x}^I$ under the
99 action of $S_n$:
100 \begin{equation*}
101 M_I({\underline x}) =\sum_{J \in S_nI}{\underline x}^J.
102 \end{equation*}
103 The monomial forms constitute naturally a basis of the vector space on the ring
104 of symmetric polynomials: any symmetric polynomial can be represented by a
105 finite linear combination of monomial forms.
108 \subsubsection{Contracted and partitioned representations}
110 Let $p$ be a symmetric polynomial on a ring $\mathcal{A}$, and suppose that it
111 is expressed in the basis of monomial forms.
113 In the \emph{contracted} representation of $p$ we replace every monomial form
114 $M_I(x)$ by $x^I$, or by every monomial of $S_nx^I$, its orbit.
116 In the \emph{partitioned} representation, we replace every monomial term
117 $cM_I(x)$ where $c$ is a coefficient in $\mathcal{A}$, by the list
118 $[c,i_1,\ldots ,i_n]$ and join the whole into one list.
120 \textbf{Example.} The contracted polynomial associated to $3x^4 + 3y^4 - 2xy^5 -
121 2x^5y$ is $3x^4 -2xy^5$, and the partitioned polynomial is [[3,4],[-2,5,1]].
125 \subsection{Multi-symmetric polynomials}
127 Here we generalize the symmetric case. We are given an integer $r>0$ and an
128 $r$-tuple of integers $D=(d_1, \ldots ,d_r)$.
130 \subsubsection{Group actions}
132 Let $E_1, E_2, \ldots ,E_r$ be $r$ arbitrary sets. Denote by $D(E)$ the product
133 $E_1^{d_1}\times E_2^{d_2}\times \ldots \times E_r^{d_r}$.
135 The action of the product of the symmetric groups $S_D=S_{d_1}\times S_{d_2}
136 \times \ldots \times S_{d_r}$ on $D(E)$ is naturally defined as
137 \begin{eqnarray*}
138 S_D \times D(E) & \longrightarrow & D(E) \\
139 \sigma \times A & \longrightarrow &
140 \sigma A=(\sigma_1{\underline a}_1,\ldots ,\sigma_r{\underline a}_r),
141 \end{eqnarray*}
142 where $\sigma = (\sigma_1,\ldots ,\sigma_r)$ with $\sigma_i \in S_{d_i}$. The
143 orbit of $A$ under the action of $S_D$ will be denoted $S_DA$.
145 Similarly, if $X=({\underline x}_1, \ldots,{\underline x}_r)$ is an $r$-tuple
146 such that the $i$th element ${\underline x}_i$ is a $d_i$-tuple of variables, we
147 wil denote by $\mathcal{A}[X]$ the set of polynomials in the variables of $X$
148 and with coefficients in $\mathcal{A}$. The action of $S_D$ on $\mathcal{A}[X]$
149 is defined as follows:
150 \begin{eqnarray*}
151 S_D \times \mathcal{A}[X] & \longrightarrow & \mathcal{A}[X]\\
152 \sigma \times f & \longrightarrow & \sigma f \;\; :\;
153 \sigma f(X)= f(\sigma X).
154 \end{eqnarray*}
155 The orbit of $f$ under the action of $S_D$ will be denoted $S_Df$.
158 \subsubsection{Multi-partitions, multi-symmetric polynomials}
160 A \textit{multi-partition}, $I$, of order $r$ is an $r$-tuple of partitions. We
161 will call the \textit{multi-length} of $I$ the list of lengths of the partitions
162 that constitute $I$.
164 Let $p$ be a polynomial in $d_1+\cdots + d_r$ variables. This polynomial is
165 called \textit{multi-symmetric} if it is invariant by $S_D$, that is if $S_D p =
166 \{p\}$.
168 A multi-symmetric polynomial may be represented by multi-partitions. Let $X$ be
169 as above and $I=(I_1,\ldots,I_r)$ be an $r$-tuple of $\mathbf{N}^{d_1}\times
170 \ldots \times \mathbf{N}^{d_r}$. We will naturally denote by $X^I$ the monomial
171 \begin{equation*}
172 X^I = {\underline x}_1^{I_1}\ldots{\underline x}_r^{I_r}.
173 \end{equation*}
174 If $I$ is a multi-partition of multi-length less than $D$, we will define the
175 \textit{monomial multi-form} $M_I(X)$ on $X$ indexed by $I$ as the sum of the
176 monomials of the orbit of $X^I$ under the action of $S_D$:
177 \begin{equation*}
178 M_I(X) \;=\; \sum_{J \in S_DI} X^J.
179 \end{equation*}
180 It is natural to represent a multi-symmetric polynomial by a linear combination
181 of monomial multi-forms over the ring of coefficients of the polynomial.
184 \subsubsection{Contracted form}
186 Let us now consider a multi-symmetric polynomial with coefficients in a ring
187 $\mathcal{A}$ in the variables of $X$. This polynomial is naturally expressed
188 as a finite sum of $cM_I(X)$ where $c \in \mathcal{A}$ and $M_I(X)$ is a
189 monomial multi-forme on $X$. A \textit{contracted form} associated to a
190 multi-symmetric polynomial consists in replacing in this polynomial each
191 $M_I(X)$ by the monomial $X^I$ or by an other monomial of its orbit $S_DX^I$.
195 \section{Initialization and usage}
197 The file \texttt{sym.mac} includes all the commands for auto-loading. It is
198 ultimately in this file where one must change the path names if \texttt{SYM}
199 must be used from another directory than the one where it is installed.
201 The file \texttt{compile.lisp} includes the list of files to compile. To execute
202 it one may load it under Lisp or under Maxima by the command
203 \texttt{load("sym/compile")}. Once the the files of \texttt{SYM} are compiled
204 the module can be loaded under Maxima via the file \texttt{sym.mac}:
205 \begin{verbatim}
206 load("sym.mac");
207 \end{verbatim}
209 If a function's argument is a list, the function will fill in missing values by
210 formal arguments: for the $i$th elementary symmetric function these will be
211 \texttt{ei}, for the $i$th power function they will be \texttt{pi}, and for the
212 $i$th complete (homogeneous) symmetric function they will be \texttt{hi}.
214 There are many evaluation modes for polynomials in Maxima: \texttt{meval},
215 \texttt{expand}, \texttt{rat}, \texttt{ratsimp}. \texttt{SYM} allows a choice
216 of operation mode. On every function call, \texttt{SYM} tests if the flag
217 \texttt{oper} has been changed. If so, the operating mode is modified as
218 follows:
219 \begin{description}
220 \item If \texttt{oper = meval} (default), the operations are carried out with
221 \texttt{meval}.
222 \item If \texttt{oper = expand}, they are done with \texttt{expand}.
223 \item If \texttt{oper = rat}, they are done with \texttt{rat}.
224 \item If \texttt{oper = ratsimp}, they are done with \texttt{ratsimp}.
225 \end{description}
226 The \texttt{meval} mode is advantageous in numerical calculations. With formal
227 arguments, \texttt{rat} mode is often preferable.
229 To set the flag \texttt{oper} to \texttt{expand}, for example, it suffices to
230 write \texttt{oper\ :\ expand;}.
234 \section{Description of the available functions}
236 Take $q$ as the minimum of the degree of the polynomial \texttt{sym} and the
237 cardinal \texttt{card}. \texttt{lvar} contains the variables of the polynomial
238 under consideration, thus distinguishing them from any eventual parameters.
241 \subsection{Combinatorics}
243 \begin{itemize}
244 \item \texttt{arite(degree,arity,powers)} \index{arite(degree, arity, powers)}
245 applies the ``arity theorem'' (A. Valibouze \textit{Sur l'arit\'e
246 des fonctions}, European Journal of Combinatorics, 1992?). This function
247 allows to go from a power function of a resolvent in \texttt{arity} variables
248 to a power function in \texttt{degree} variables. It adds a binomial
249 coefficient to each partition. It is assumed that the power functions are
250 given in the basis of monomial forms, in partitioned representation, in the
251 list \texttt{powers}.
252 \item \texttt{card\_orbit(part,n)} \index{card\_orbit(part, n)}
253 $\longrightarrow$ \texttt{integer} \\
254 \texttt{part} is a partition in the form $[a_1,m_1,...,a_q,m_q]$ where
255 $m_i$ is the multiplicity of $a_i$ in the partition. The function computes
256 the cardinal of the orbit of the partition under the action of the symmetric
257 group of degree \texttt{n}.
258 \item \texttt{multinomial(r,part)} \index{multinomial(r, part)}
259 $\longrightarrow$ \texttt{integer} \\
260 where \texttt{r} is the weight of the partition \texttt{part}. This function
261 returns the associated multinomial coefficient: if the parts of partition
262 \texttt{part} are $i_1, i_2, \dots, i_k$, the result is
263 $r!/(i_1!i_2! \cdots i_k!)$.
264 \item \texttt{card\_stab(L,eq)} \index{card\_stab(L, eq)}
265 $\longrightarrow$ \texttt{integer} \\
266 \texttt{L} is a list of ordered objects and \texttt{eq} is the equality test
267 for them. If the list \texttt{L} has length $n$, this function computes the
268 cardinal of the stabilizer of \texttt{L} under the action of the symmetric
269 group of order $n$. (The \emph{stabilizer} of $L$ is the subgroup of
270 permutations that maps $L$ to $L$, i.e. leaves it invariant.)
271 \item \texttt{permut(L)} \index{permut(L)}
272 $\longrightarrow$ \texttt{list} \\
273 returns the list of permutations of the list \texttt{L}.
274 \end{itemize}
275 Examples:
276 \small
277 \begin{verbatim}
278 card_orbit([5,2,1,3], 6);
280 card_stab([a, a, c, b, b], eq);
282 card_stab([1,1,2,3,3], "=");
284 \end{verbatim}
285 Here the list of power functions is $[x^2y^4,x^5y^5 + x^2,x^2y^2+x^3]$, the
286 arity is 2, and the degree is 4. (This function is useful in the calculation of
287 resolvents.)
288 \begin{verbatim}
289 arite(4,2,[[[1,2,4]],[[1,5,5],[1,2]],[[1,2,2],[1,3]]]);
291 [[[1, 2, 4]], [[1, 5, 5], [3, 2]], [[1, 2, 2], [3, 3]]]
292 \end{verbatim}
293 \normalsize
296 \subsection{On polynomials in one variable}
298 \begin{itemize}
299 \item \texttt{ele2polynome(cele,z)} \index{ele2polynome(cele,z)}
300 $\longrightarrow$ \texttt{polynomial} \\
301 returns the polynomial in \texttt{z} s.t. the elementary symmetric functions of
302 its roots are in the list \texttt{cele}. \texttt{cele}=$[n,e_1,\dots,e_n]$
303 where $n$ is the degree of the polynomial and $e_i$ the $i$th elementary
304 symmetric function.
305 \item \texttt{polynome2ele(poly,z)} \index{polynome2ele(poly,z)}
306 $\longrightarrow$ \texttt{cele} \\
307 produces the list \texttt{cele}=$[n,e_1,\dots,e_n]$ where $n$ is the degree
308 of the polynomial in the variable \texttt{z} and $e_i$ the $i$th elementary
309 symmetric function of its roots.
310 \end{itemize}
311 Examples:
312 \small
313 \begin{verbatim}
314 ele2polynome([2,e1,e2],z);
316 z - e1 z + e2
318 polynome2ele(x^7-14*x^5 + 56*x^3 - 56*x + 22, x);
320 [7, 0, - 14, 0, 56, 0, - 56, - 22]
322 ele2polynome( [7, 0, - 14, 0, 56, 0, - 56, - 22], x);
324 7 5 3
325 x - 14 x + 56 x - 56 x + 22
326 \end{verbatim}
327 \normalsize
330 \subsection{Changing representations}
332 A symmetric polynomial may be given in many forms: extended, contracted, or
333 partitioned. The functions described below-dessous allow passing from one form
334 to another. Some of them additionally test for symmetry.
336 In all cases the variables of the polynomial are contained in the list
337 \texttt{lvar}.
338 \begin{itemize}
339 \item \texttt{tpartpol(poly,lvar)} \index{tpartpol(polynomial, lvar)}
340 $\longrightarrow$ \texttt{ppart} \\
341 \texttt{partpol(poly, lvar)} \index{partpol(poly,lvar)}
342 $\longrightarrow$ \texttt{ppart} \\
343 return, in increasing (resp. decreasing) lexicographic order, the partitioned
344 polynomial associated to the polynomial given in extended form. If the
345 polynomial is not symmetric, the function \texttt{tpartpol} returns an error.
346 \item \texttt{tcontract(poly,lvar)} \index{tcontract(poly, lvar)}
347 $\longrightarrow$ \texttt{pc} \\ \texttt{contract(poly,lvar)}
348 \index{contract(poly, lvar)} $\longrightarrow$ \texttt{pc} \\ act respectively
349 like \texttt{tpartpol} and \texttt{partpol} in recreating the contracted
350 represention.
351 \item \texttt{cont2part(pc,lvar)} \index{cont2part(pc, lvar)}
352 $\longrightarrow$ \texttt{ppart} \\ returns the partitioned form
353 \texttt{ppart} of a symmetric polynomial given in its contracted form
354 \texttt{pc}.
355 \item \texttt{part2cont(ppart,lvar)} \index{part2cont(ppart, lvar)}
356 $\longrightarrow$ \texttt{pc} \\ returns the contracted form \texttt{pc} of a
357 symmetric polynomial given in its partitioned form \texttt{ppart}.
358 \item \texttt{explose(pc,lvar)} \index{explose(pc, lvar)} $\longrightarrow$
359 \texttt{psym} \\ returns the extended form \texttt{psym} of a symmetric
360 polynomial given in its contracted form \texttt{pc}.
361 \end{itemize}
362 Examples:
363 \small
364 \begin{verbatim}
365 tpartpol(x^3-y, [x,y]);
367 manque des monomes (no monomials)
368 \end{verbatim}
369 Consider the symmetric polynomial in $\mathbb{Z}[x,y,z]$ (the ring of
370 polynomials in $x,y,z$ with coefficients in $\mathbb{Z}$) of which one
371 contracted form is $2a^3bx^4y$. We will perform various changes of
372 representations on it:
373 \small
374 \begin{verbatim}
375 lvar : [x,y,z]$
376 pc : 2*a^3*b*x^4*y;
378 2 a b x y
379 psym : explose(pc, lvar);
380 3 4 3 4 3 4
381 2 a b y z + 2 a b x z + 2 a b y z
382 3 4 3 4 3 4
383 + 2 a b x z + 2 a b x y + 2 a b x y
384 \end{verbatim}
385 \normalsize And if we apply to it the function \texttt{contract} we recover a
386 contracted form:
387 \small
388 \begin{verbatim}
389 contract(psym, lvar);
391 2 a b x y
392 tcontract(psym, lvar);
394 2 a b x y
395 tpartpol(psym, lvar);
397 [[2 a b, 4, 1]]
398 partpol(psym, lvar);
400 [[2 a b, 4, 1]]
401 ppart : cont2part(pc, lvar);
403 [[2 a b, 4, 1]]
404 part2cont(ppart, lvar);
406 2 a b x y
407 \end{verbatim}
408 \normalsize
412 \subsection{Functions related to partitions}
414 \begin{itemize}
415 \item \texttt{kostka(part1,part2)} \index{kostka(part1,part2)}
416 $\longrightarrow$ integer \\
417 (written by P.Esperet) returns the Kostka number associated to the
418 partitions \texttt{part1} and \texttt{part2}.
419 \item \texttt{treinat(part)} \index{treinat(part)}
420 $\longrightarrow$ list of partitions
421 inferior in the natural order to the partition \texttt{part} and of the same
422 weight.
423 \item\texttt{treillis(n)} \index{treillis(n)}
424 $\longrightarrow$ list of partitions of weight $n$.
425 \item \texttt{lgtreillis(n,m)} \index{lgtreillis(n,m)}
426 $\longrightarrow$ list of partitions of weight $n$ and length $m$.
427 \item \texttt{ltreillis(n,m)} \index{ltreillis(n,m)}
428 $\longrightarrow$ list of partitions of weight $n$ and length $\le m$.
429 \end{itemize}
430 \small
431 \begin{verbatim}
432 kostka([3,3,3],[2,2,2,1,1,1]);
434 lgtreillis(4,2);
435 [[3, 1], [2, 2]]
436 ltreillis(4,2);
437 [[4, 0], [3, 1], [2, 2]]
438 treillis(4);
439 [[4], [3, 1], [2, 2], [2, 1, 1], [1, 1, 1, 1]]
440 treinat([5]);
441 [[5]]
442 treinat([1,1,1,1,1]);
443 [[5], [4, 1], [3, 2], [3, 1, 1],
444 [2, 2, 1], [2, 1, 1, 1], [1, 1, 1, 1, 1]]
445 treinat([3,2]);
446 [[5], [4, 1], [3, 2]]
447 \end{verbatim}
448 \normalsize
452 \subsection{Orbit calculations}
454 \begin{itemize}
455 \item \texttt{orbit(poly,lvar)} \index{orbit(poly, lvar)}
456 $\longrightarrow$ $S_n$(poly) \\
457 produces the list of polynomials in the orbit of \texttt{poly}
458 under the action of the symmetric group $S_n$. The $n$ variables of
459 \texttt{poly} are in the list \texttt{lvar}.
460 \item \texttt{multi\_orbit(polyl,[lvar$_{1}$,lvar$_{2}$,\ldots ,lvar$_{r}$])
461 \index{multi\_orbit(poly,[lvar$_{1}$,lvar$_{2}$,\ldots ,lvar$_{r}$])}
462 $\longrightarrow$ ${S_D}$(poly) }\\
463 the variables of \texttt{poly} are in the lists
464 \texttt{lvar$_1$,lvar$_{2}$,\ldots ,lvar$_{r}$} on which act, respectively,
465 the symmetric groups $S_{d_1},S_{d_2},\ldots ,S_{d_r}$. This function
466 returns the orbit of \texttt{poly} under the action of the product $S_D$ of
467 these symmetric groups.
468 \end{itemize}
469 \textbf{Examples:}
470 \small
471 \begin{verbatim}
472 orbit(a*x+b*y,[x,y]);
473 [a y + b x, b y + a x]
474 orbit(2*x+x**2,[x,y,z]);
475 2 2 2
476 [z + 2 z, y + 2 y, x + 2 x]
477 multi_orbit(a*x+b*y,[[x,y],[a,b]]);
478 [b y + a x, a y + b x]
479 multi_orbit(x+y+2*a,[[x,y],[a,b,c]]);
481 [y + x + 2 c, y + x + 2 b, y + x + 2 a]
482 \end{verbatim}
483 \normalsize
486 \subsection{The contracted product of two symmetric polynomials}
488 \begin{itemize}
489 \item\texttt{multsym(ppart1,ppart2,n)}\index{multsym(ppart1,ppart2,n)}
490 $\longrightarrow$ \texttt{pc} \\
491 calculates the product of two symmetric polynomials in \texttt{n} variables
492 given in the partitioned forms \texttt{part1} and \texttt{part2}.
493 \end{itemize}
494 Given two symmetric polynomials \texttt{p1} and \texttt{p2}. We will
495 calculate their product by a classical method for the product of two
496 arbitrary polynomials, and then obtain this product by \texttt{multsym}. We will
497 work in $\mathbb{Z}[x,y]$.
498 \small
499 \begin{verbatim}
500 p1 : x*y^2 + x^2*y$
501 p2 : y+x$
502 prod : expand(p1*p2);
503 3 2 2 3
504 x y + 2 x y + x y
505 \end{verbatim}
506 \normalsize
507 We verify that this is the extended form of the product obtained with
508 \texttt{multsym}:
509 \small
510 \begin{verbatim}
511 partpol(prod,[x,y]);
512 [[1, 3, 1], [2, 2, 2]]
513 ppart1 : partpol(p1,[x,y]);
514 [[1, 2, 1]]
515 ppart2 : partpol(p2,[x,y]);
516 [[1, 1, 0]]
517 multsym(ppart1, ppart2, 2);
518 [[1, 3, 1], [2, 2, 2]]
519 \end{verbatim}
520 \normalsize
523 \subsection{Basis changes}
525 In general, the list \texttt{lvar} will represent the list of variables of
526 polynomials.
527 \begin{itemize}
528 \item \texttt{elem(cel,sym,lvar)} \index{elem(cel,sym,lvar)}
529 $\longrightarrow$ $P(e_1,\dots,e_q)$ \\
530 decomposes the symmetric polynomial \texttt{sym} into the elementary symmetric
531 functions contained in the list \texttt{cel} (3 possible flags).
532 \item \texttt{multi\_elem([cel$_{1}$,\dots,cel$_{r}$],multi\_pc,[lvar$_{1}$,
533 \dots,lvar$_{r}$])}
534 \index{multi\_elem([cel$_{1}$,\dots,cel$_{p}$],multi\_pc,[lvar$_{1}$,
535 \dots,lvar$_{r}$])}
536 $\longrightarrow$ P(cel$_{1}$,\dots,cel$_{r}$) \\
537 gives a polynomial \texttt{multi\_pc} multi-symmetric under the action
538 of $S_D$, in multi-contracted form. It is decomposed successively into each
539 of the groups \texttt{cel$_{j}$} of elementary symmetric functions of the set
540 ${\underline x}_j$. The list of variables \texttt{lvar}$_j$ allows reading
541 the polynomial. The variables of ${\underline x}_j$ are found in the
542 expression of the multi-contracted polynomial.
543 \item \texttt{pui(cpui,sym,lvar)} \index{pui(cpui, sym, lvar)}
544 $\longrightarrow$ $P(p_1,\dots,p_q)$ \\ decomposes a symmetric polynomial into
545 power functions (3 flags possible).
546 \item \texttt{multi\_pui([cpui$_{1}$,\ldots, cpui$_{p}$],multi\_pc, [lvar$_{1}$, \ldots,var$_{p}$])}
547 \index{multi\_pui([cpui$_{1}$,\ldots,cpui$_{p}$], multi\_pc, [lvar$_{1}$,\ldots,lvar$_{p}$])}
548 $\longrightarrow$ P(cpui$_{1}$,\ldots,cpui$_{p}$) \\
549 acts like \texttt{multi\_elem} in decomposing the multi-symmetric polynomial
550 into power functions.
551 \end{itemize}
552 If the symmetric polynomial is in a contracted form, the flag \texttt{elem}
553 should be 1 (its default value).
555 Let us consider the symmetric polynomial $x^4+y^4+z^4+t^4 - 2(x(y+z+t) + y(z+t)
556 + z t)$ of which a contracted form is $x^4 -2 y z$.
557 \small
558 \begin{verbatim}
559 elem:1$
561 elem([],x**4 - 2*y*z, [x,y,z]);
563 4 2 2
564 e1 - 4 e2 e1 + 4 e3 e1 + 2 e2 - 2 e2 - 4 e4
565 \end{verbatim}
566 \normalsize
567 Let us now suppose that the number of variables of the symmetric polynomial is 3
568 (i.e. $t=0$). This value 3 must be noted at the head of the list \texttt{cel} as
569 follows:
570 \small
571 \begin{verbatim}
572 elem([3],x^4 - 2*y*z,[x,y,z]);
574 4 2 2
575 e1 - 4 e2 e1 + 4 e3 e1 + 2 e2 - 2 e2
576 \end{verbatim}
577 \normalsize
578 If, in addition, the first elementary symmetric function has a particular value,
579 say $e_1=7$, it should be in the second position of the list \texttt{cel}:
580 \small
581 \begin{verbatim}
582 elem([3,7],x^4-2*x*y,[x,y]);
585 28 e3 + 2 e2 - 198 e2 + 2401
586 \end{verbatim}
587 \normalsize
588 The $(i+1)$th element of the list \texttt{cel} should be the $i$th elementary
589 symmetric function. If the symmetric polynomial is in an extended form the flag
590 \texttt{elem} should be 2, and if it is in a partitioned form it should be 3:
591 \small
592 \begin{verbatim}
593 elem :2$
594 elem([3,f1,f2,f3],x^4+y^4+z^4 - 2*(x*y + x*z + y*z),[x,y,z]);
596 4 2 2
597 f1 - 4 f2 f1 + 4 f3 f1 + 2 f2 - 2 f2
599 elem:3$
600 elem(([],[[1, 2, 1]],[]);
601 e1 e2 - 3 e3
602 \end{verbatim}
603 \normalsize
604 It is the same for the flag \texttt{pui} associated to the function \texttt{pui}.
606 For the function \texttt{pui}, if formal arguments need to be added to
607 \texttt{cpui} we remember the cardinal of the alphabet, if it is supplied, to
608 calculate the power functions as a function of the first. We then use the
609 function \texttt{puireduc} (see later).
610 \small
611 \begin{verbatim}
612 multi_elem([[2,e1,e2],[2,f1,f2]],a*x+a^2+x^3,[[x,y],[a,b]]);
615 - 2 f2 + f1 + e1 f1 - 3 e1 e2 + e1
617 multi_pui([[2,p1,p2],[2,t1,t2]],a*x+a^2+x^3,[[x,y],[a,b]]);
620 3 p1 p2 p1
621 t2 + p1 t1 + ------- - ---
623 \end{verbatim}
624 \normalsize
625 \begin{itemize}
626 \item \texttt{ele2pui(m,cel)} \index{ele2pui(m,cel)}
627 $\longrightarrow$ \texttt{cpui} \\
628 performs the passage from the elementary symmetric functions to the power
629 functions $p_1,\ldots,p_m$.
630 \item \texttt{pui2ele(n,cpui)} \index{pui2ele(n,cpui)}
631 $\longrightarrow$ \texttt{cel} \\
632 performs the passage from the power functions to the elementary symmetric
633 functions. If the flag \texttt{pui2ele} is set to \texttt{girard}, one gets
634 the list of the first \texttt{n} elementary symmetric functions
635 $e_1,\dots,e_n$, and if it is set to \texttt{close}, one gets the $n$th
636 elementary symmetric function.
637 \end{itemize}
638 Below, we are looking for the first 3 elementary symmetric functions. We are
639 not supplying values for the first 3 power functions, so \texttt{pui2ele} adds
640 formal parameters \texttt{p1}, \texttt{p2}, \texttt{p3}.
641 \small
642 \begin{verbatim}
643 pui2ele(3,[]);
645 p1 p2 p3 p1 p2 p1
646 [3, p1, --- - --, -- - ----- + ---]
647 2 2 3 2 6
648 \end{verbatim}
649 \normalsize
650 Below we are looking for the first 4 elementary symmetric functions in terms of
651 the power functions such that $p_1=2$. The cardinal of the alphabet being 3,
652 the fourth elementary symmetric function is thus null. Subsequently the
653 function \texttt{ele2pui} calculates the first 3 power functions in terms of the
654 first 3 elementary symmetric functions.
655 \small
656 \begin{verbatim}
657 pui2ele(4,[3,2]);
658 4 - p2 p3 - 3 p2 + 4
659 [3, 2 , ------, -------------, 0]
660 2 3
661 ele2pui(3,[]);
663 [3, e1, e1 - 2 e2, 3 e3 - 3 e1 e2 + e1 ]
664 \end{verbatim}
665 \normalsize
666 Here, as the cardinal is 2, the 3d elementary symmetric function is null:
667 \small
668 \begin{verbatim}
669 ele2pui(3,[2]);
671 [2, e1, e1 - 2 e2, e1 - 3 e1 e2]
672 \end{verbatim}
673 \normalsize
674 \begin{itemize}
675 \item \texttt{puireduc(n,cpui)} \index{puireduc(n,cpui)}
676 $\longrightarrow$ [\texttt{card}, $p_1,p_2,p_3,\dots,p_n$] \\
677 allows finding the power functions up to order \texttt{n} by knowing those
678 of order up to \texttt{m}. The cardinal (number of variables) is specified
679 in \texttt{cpui}.
680 \end{itemize}
681 If the cardinal $n$ of the alphabet is given, one may express all the power
682 functions in terms of the first $n$. We take, for example, 2 as the cardinal
683 and ask for the first 3 power functions:
684 \small
685 \begin{verbatim}
686 puireduc(3,[2]);
688 3 p1 p2 p1
689 [2, p1, p2, ------- - ---]
691 \end{verbatim}
692 \normalsize
693 \begin{itemize}
694 \item \texttt{ele2comp(m,cel)} \index{ele2comp(m,cel)}
695 $\longrightarrow$ \texttt{ccomp} \\
696 effects the passage from the elementary symmetric functions to the complete
697 (homogeneous) symmetric functions $h_1,\ldots,h_m$.
698 \item \texttt{pui2comp(n,cpui)} \index{pui2comp(n,cpui)}
699 $\longrightarrow$ \texttt{ccomp} \\
700 effects the passage from the power functions to the complete symmetric
701 functions $h_1,\ldots,h_n$.
702 \item \texttt{comp2ele(n,ccomp)} \index{comp2ele(n,ccomp)}
703 $\longrightarrow$ \texttt{cel} \\
704 effects the passage from the complete symmetric functions to the elementary
705 symmetric functions $e_1,\ldots,e_n$.
706 \item \texttt{comp2pui(n,ccomp)} \index{comp2pui(n,ccomp)}
707 $\longrightarrow$ \texttt{cpui} \\
708 effects the passage from the complete symmetric functions to the power
709 functions $p_1,\ldots,p_n$.
710 \item \texttt{mon2schur(part)} \index{mon2schur(part)}
711 $\longrightarrow$ \texttt{pc} \\
712 effects the passage from the monomial forms to the Schur functions. The
713 result \texttt{pc} is thus a symmetric polynomial in a contracted form.
714 \item \texttt{schur2comp(P,[$h_{i_1}$,\dots,$h_{i_q}$])}
715 \index{schur2comp(P,L)}
716 $\longrightarrow$ \texttt{list of lists} \\
717 effects the passage from the Schur functions, denoted $S_I$, to the complete
718 functions. The polynomial \texttt{P} is a polynomial in the complete
719 functions $h_{i_k}$. \emph{It is necessary} to denote these complete
720 functions by an \texttt{h} concatenated with an integer.
721 \end{itemize}
723 The function \texttt{mon2schur} allows writing a Schur function in the basis of
724 monomial forms represented in their contracted form. The Schur function is
725 given by a partition\footnote{A \emph{Schur function} is a certain kind of
726 symmetric polynomial. Schur polynomials are connected with Vandermonde
727 determinants, and with Young tableaux, among other things. For some
728 background, see, e.g. D.E. Knuth, Vol. 3, 2nd Ed., \S5.1.4, and Exercise 33
729 there.}.
730 We will first verify that the Schur function associated with the partition
731 $(1^3)$ is equal to the 3d elementary symmetric function and that the one
732 associated with the partition $(3)$ is equal to the 3d complete symmetric
733 function (this follows from a general result).
734 \small
735 \begin{verbatim}
736 mon2schur([1,1,1]);
737 x1 x2 x3
738 mon2schur([3]);
740 x1 x2 x3 + x1 x2 + x1
742 mon2schur([1,2]);
744 2 x1 x2 x3 + x1 x2
745 \end{verbatim}
746 \normalsize
747 Let us see with an example how, by a circular sequence of changes of basis, we
748 indeed recover what is given initially:
749 \small
750 \begin{verbatim}
751 a1 : pui2comp(3,[3]);
753 p2 p1 p3 p1 p2 p1
754 [3, p1, -- + ---, -- + ----- + ---]
755 2 2 3 2 6
756 a2 : comp2ele(3, a1);
758 p1 p2 p3 p1 p2 p1
759 [3, p1, --- - --, -- - ----- + ---]
760 2 2 3 2 6
761 a3 : ele2pui(3,a2);
762 [3, p1, p2, p3]
764 a4 : comp2pui(3,[]);
766 [3, h1, 2 h2 - h1 , 3 h3 - 3 h1 h2 + h1 ]
768 a5 : pui2ele(3,a4);
770 [3, h1, h1 - h2, h3 - 2 h1 h2 + h1 ]
772 a6 : ele2comp(3,a5);
773 [3, h1, h2, h3]
774 \end{verbatim}
775 \normalsize
776 Below we show how to express a Schur function in the basis of monomial forms (in
777 \texttt{c48}), of complete functions (in \texttt{c50}), elementary symmetric
778 functions (in \texttt{c51}), and power functions (in \texttt{c52}).
779 \small
780 \begin{verbatim}
781 (c48) mon2schur([1,2]);
784 (d48) 2 x1 x2 x3 + x1 x2
786 (c49) comp2ele(3, []);
789 (d49) [3, h1, h1 - h2, h3 - 2 h1 h2 + h1 ]
791 (c50) elem(d49, d48, [x1,x2,x3]);
793 (d50) h1 h2 - h3
795 (c51) elem([], d48, [x1,x2,x3]);
797 (d51) e1 e2 - e3
799 (c52) pui([], d48, [x1,x2,x3]);
802 p1 p3
803 (d52) --- - --
806 (c53) schur2comp(h1*h2-h3, [h1,h2,h3]);
809 (d53) s
810 1, 2
812 (c54) schur2comp(a*h3,[h3]);
814 (d54) s a
817 \end{verbatim}
818 \normalsize
819 With the last commands we decomposed $h_1 h_2 - h_3$ and $h_3$ in the basis of
820 Schur functions.
824 \subsection{Resolvents}
826 Let $p$ be a polynomial of one variable $x$ and of degree $n$ on a ring $A$.
827 Let $f \in A[x_1,x_2,\ldots,x_n]$ be a transformation function and $S_nf$ its
828 orbit under the action of the symmetric group $S_n$. Then the \emph{resolvent}
829 of $p$ by $f$, denoted $f_*(p)$, is the unitary polynomial:
830 \begin{equation*}
831 f_*(p)(y) = \prod_{h\in S_nf} (y - h(\alpha_1,\ldots ,\alpha_n)),
832 \end{equation*}
833 where $\alpha_1,\ldots,\alpha_n$ are the roots of $p$.
835 If the transformation function is
836 \begin{enumerate}
837 \item a polynomial in a single variable ,
838 \item a linear polynomial,
839 \item a linear polynomial whose non-zero coefficients alternate in sign,
840 \item a linear polynomial with coefficients equal to 1,
841 \item a polynomial symmetric in its variables,
842 \item a monomial whose coefficient is 1,
843 \item the function of the Cayley resolvent,
844 \item of the Lagrange resolvent,
845 \item an arbitrary polynomial,
846 \end{enumerate}
847 then each associated resolvent is respectively called
848 \begin{enumerate}
849 \item \textit{unitary},
850 \item \textit{linear},
851 \item \textit{alternating},
852 \item \textit{sum},
853 \item \textit{symmetric},
854 \item \textit{product},
855 \item \textit{Cayley},
856 \item \textit{Lagrange},
857 \item \textit{general}.
858 \end{enumerate}
859 As we will see later, there are also other resolvents (dihedral, Klein, \dots).
861 We define the \textit{arity} of a function as the number of variables that
862 appear in its expression. In general if a function is of arity $k$ we use
863 $f(x_1,\ldots,x_k)$ in place of $f(x_1,\ldots ,x_k ,\ldots ,x_n)$. Let us give
864 examples for each of these cases:
865 \begin{enumerate}
866 \item $f(x)=x^7-x+1$ of arity 1,
867 \item $f(x_1,x_2) = x_1+3x_2$ of arity 2,
868 \item $f(x_1,x_2,x_3,x_4) = x_1 -x_2 + 3x_3-3x_4$ of arity 4,
869 \item $f(x_1,x_2,x_3) = x_1+x_2+x_3$ of arity 3,
870 \item $f(x_1,x_2,x_3) = 3x_1x_2 + 3x_2x_3 +3x_1x_3$ of arity 3,
871 \item $f(x_1,x_2) =x_1x_2$ of arity 2,
872 \item $f(x_1,x_2,x_3,x_4,x_5)=(x_1x2+x_2x_3+x_3x_4+x_4x_5+x_5x_1 -
873 (x_1x_3+x_3x_5+x_5x_2+x_2x_4+x_4x_1))^2$
874 \item $f(x_1,x_2,x_3) = \epsilon x_1 + \epsilon^2 x_2 + \epsilon^3 x_3$, where
875 $\epsilon$ is a third root of unity,
876 \item $f(x_1,x_2,x_3) = x_1 +2x_2x_3$ of arity 3.
877 \end{enumerate}
878 It is clear that a sum or product resolvant is also symmetric, and that a sum or
879 alternating resolvent is also linear.
881 The calculations of these resolvents are done in two ways. Either by the
882 function \texttt{resolvante} or by a specific name preceded by
883 \texttt{resolvante}. The list of possible functions is thus:
884 \begin{itemize}
885 \item \texttt{resolvante\_produit\_sym(p, x)}
886 \index{resolvante\_produit\_sym(p, x)} which calculates the list of all the
887 product resolvents of the polynomial \texttt{p(x)}.
888 \item \texttt{resolvante\_unitaire(p,q,x)} \index{resolvante\_unitaire(p, q, x)}
889 which calculates the resolvant of the polynomial $p(x)$ by the polynomial
890 $q(x)$. That is, $\prod_{p(\alpha)=0}(y-q(\alpha))$.
891 \item \texttt{resolvante\_alternee1(p,x)} \index{resolvante\_alternee1(p, x)}
892 which calculates the transformation of $p(x)$ of degree $n$ by the function
893 $\prod_{1\leq i<j\leq n-1} (x_i-x_j)$.
894 \item \texttt{resolvante\_klein(p,x)} \index{resolvante\_klein(p, x)} which
895 calculates the transformation of $p(x)$ by the function $x_1x_2+x_3$, and is
896 so named because it is associated to the Klein group.
897 \item \texttt{resolvante\_klein3(p,x)} \index{resolvante\_klein3(p, x)} which
898 calculates the transformation of $p(x)$ by the function $x_1x_2x_4+x_4$.
899 \item \texttt{resolvante\_vierer(p,x)} \index{resolvante\_vierer(p, x)} which
900 calculates the transformation of $p(x)$ by the function $x_1x_2-x_3x_4$.
901 \item \texttt{resolvante\_diedrale(p,x)} \index{resolvante\_diedrale(p, x)}
902 which calculates the transformation of $p(x)$ by the function $x_1x_2+x_3x_4$.
903 \item \texttt{resolvante\_bipartite(p,x)} \index{resolvante\_bipartite(p, x)}
904 which calculates the transformation of $p(x)$ by the function $x_1x_2\ldots
905 x_{n/2}+x_{n/2+1}\ldots x_n$. The degree of $p$ must necessarily be even.
906 \item \texttt{resolvante(p, x, f,[x1,x2,\ldots,xk])}
907 \index{resolvante(p,x,f,[x1,x2,\ldots,xk])} which calculates the transformation
908 of $p(x)$ by the function $f$ of arity $k$ in the variables
909 $x_1,x_2,\ldots,x_k$.
910 \end{itemize}
912 It is essential for the efficiency of the computations to include in the list of
913 variables of $f$ only those which appear effectively in its expression. Before
914 calling the function \texttt{resolvante}, according to the type of resolvent
915 calculated, one may set the flag \texttt{resolvante} so as to use the most
916 suitable algorithm. According to the kinds of resolvent cited above, the flag
917 \texttt{resolvante} should be set respectively to
918 \begin{enumerate}
919 \item unitaire,
920 \item lineaire,
921 \item alternee,
922 \item somme,
923 \item symetrique,
924 \item produit,
925 \item Cayley
926 \item Lagrange,
927 \item generale.
928 \end{enumerate}
929 The notion of resolvent can be gneralized by the transformation of $r$
930 polynomials by a function depending on $r$ blocks of variables:
931 \begin{itemize}
932 \item \texttt{direct} \index{direct}
933 ([$P_1,P_2,\ldots,P_r$],y,f,[$lvar_1,lvar_2,\ldots ,lvar_r$])
934 $\longrightarrow$ $f_*(P_1,P_2, \ldots, P_r)(y)$ \\
935 which, given the $r$ polynomials $P_1,\ldots,P_r$ in the variable $y$, of
936 degrees $d_1,\ldots ,d_r$, returns the product polynomial of $(y - h(a^{(1)},
937 \ldots, a^{(p)}))$ where $a^{(i)}$ is the $d_i$-tuple of roots of $P_i$ for
938 $i=1,\dots,r$ and where $h$ runs through the whole orbit of the function $f$
939 under the action of the product of the symmetric groups $S_{d_1}\times \cdots
940 \times S_{d_r}$. We put in $lvar_i$ the variables of $f$ which appear
941 effectively in its expression. That is, $lvar_i$ may include fewer than $d_i$
942 variables. The function \texttt{direct} will deduce the action of the
943 symmetric group $S_{d_i}$.
944 \end{itemize}
945 \textbf{Examples}.
946 \small
947 \begin{verbatim}
948 resolvante:unitaire;
949 resolvante(x^7-14*x^5+56*x^3-56*x+22, x, x^3-1, [x]);
951 7 6 5 4 3
952 y + 7 y - 539 y - 1841 y + 51443 y
955 + 315133 y + 376999 y + 125253
957 resolvante : lineaire$
958 resolvante(x^4-1, x, x1+2*x2+3*x3, [x1,x2,x3]);
959 24 20 16 12
960 y + 80 y + 7520 y + 1107200 y
962 + 49475840 y + 344489984 y + 655360000
964 resolvante : generale$
965 resolvante(x^4-1, x, x1+2*x2+3*x3, [x1,x2,x3]);
966 24 20 16 12
967 y + 80 y + 7520 y + 1107200 y
969 + 49475840 y + 344489984 y + 655360000
971 resolvante(x^4-1, x, x1+2*x2+3*x3, [x1,x2,x3,x4]);
972 24 20 16 12
973 y + 80 y + 7520 y + 1107200 y
975 + 49475840 y + 344489984 y + 655360000
977 direct([x^4-1], x, x1+2*x2+3*x3, [[x1,x2,x3]]);
979 24 20 16 12
980 y + 80 y + 7520 y + 1107200 y
982 + 49475840 y + 344489984 y + 655360000
984 resolvante_diedrale(x^5-3*x^4+1, x);
985 15 12 11 10 9 8 7 6
986 x - 21 x - 81 x - 21 x + 207 x + 1134 x + 2331 x - 945 x
988 5 4 3 2
989 - 4970 x - 18333 x - 29079 x - 20745 x - 25326 x - 697
990 \end{verbatim}
991 \normalsize
992 We verify that the function \texttt{direct} is a generalisation of the function
993 \texttt{resolvante}:
994 \small
995 \begin{verbatim}
996 resolvante : lineaire$
997 resolvante(x^4-1, x, x1+2*x2, [x1,x2]);
998 12 8 4
999 y + 13 y + 611 y - 625
1000 direct([x^4-1], x, x1+2*x2, [[x1,x2,x3]]);
1001 12 8 4
1002 y + 13 y + 611 y - 625
1003 \end{verbatim}
1004 \normalsize
1005 The result of this last calculation was the same as
1006 \begin{verbatim}
1007 direct([x^4-1], x, x1+2*x2, [[x1,x2]]);
1008 \end{verbatim}
1009 As it is more efficient, it is advisable not to include variables that do not
1010 appear in the expression of the transformation function.
1011 \small
1012 \begin{verbatim}
1013 resolvante:lineaire$
1014 resolvante(x^4-1, x, x1+x2+x3, [x1,x2,x3]);
1016 y - 1
1017 resolvante:symetrique$
1019 resolvante(x^4-1, x, x1+x2+x3, [x1,x2,x3]);
1021 y - 1
1022 resolvante:lineaire$
1023 resolvante(x^4+x+1, x, x1-x2, [x1,x2]);
1024 12 8 6 4 2
1025 y + 8 y + 26 y - 112 y + 216 y + 229
1026 resolvante:alternee$
1027 resolvante(x^4+x+1, x, x1-x2, [x1,x2]);
1028 12 8 6 4 2
1029 y + 8 y + 26 y - 112 y + 216 y + 229
1030 resolvante:generale$
1031 resolvante(x^4+x+1, x, x1-x2, [x1,x2]);
1032 12 8 6 4 2
1033 y + 8 y + 26 y - 112 y + 216 y + 229
1034 \end{verbatim}
1035 \normalsize
1036 We calculate below a direct image in two different ways. The first displays the
1037 intermediate calculations done by the function \texttt{direct}. One may change
1038 the flag \texttt{direct}. The default is \texttt{puissances}, which means that
1039 the function \texttt{multi\_pui} is used. If we set \texttt{direct :
1040 elementaire}, the function \texttt{direct} uses the function
1041 \texttt{multi\_elem}, generally of lower performance.
1042 \small
1043 \begin{verbatim}
1044 l : pui_direct(multi_orbit(a*x+b*y, [[x,y],[a,b]]), [[x,y],[a,b]], [2,2]);
1047 [a x, 4 a b x y + a x ]
1049 m: multi_elem([[2,e1,e2],[2,f1,f2]], l[1], [[x,y],[a,b]]);
1051 e1 f1
1053 n: multi_elem([[2,e1,e2],[2,f1,f2]], l[2], [[x,y],[a,b]]);
1055 2 2 2 2
1056 8 e2 f2 - 2 e1 f2 - 2 e2 f1 + e1 f1
1058 pui2ele(2, [2,m,n]);
1061 [2, e1 f1, - 4 e2 f2 + e1 f2 + e2 f1 ]
1063 ele2polynome(%, y);
1065 2 2 2
1066 y - e1 f1 y - 4 e2 f2 + e1 f2 + e2 f1
1068 direct([z^2-e1*z+e2, z^2-f1*z+f2], z, b*v+a*u, [[u, v],[a, b]]);
1070 2 2 2
1071 y - e1 f1 y - 4 e2 f2 + e1 f2 + e2 f1
1072 \end{verbatim}
1073 \normalsize
1074 \begin{itemize}
1075 \item\texttt{pui\_direct($[f_1,\ldots,f_q]$, [$lvar_1,\ldots,lvar_p$],
1076 [$d_1,d_2,\ldots,d_p$])} \\
1077 \index{pui\_direct}
1078 Let $f$ be a polynomial in $r$ blocks of variables $lvar_1,\ldots,lvar_r$.
1079 Let $c_i$ be the number of variables in $lvar_i$ and let $S_C$ be the product
1080 of the $r$ symmetric groups $S_{c_i}$ of degrees $c_1,\dots,c_r$. This group
1081 acts naturally on $f$. The list \texttt{orbite} is the orbit, denoted $S_Cf$,
1082 of the function $f$ under the action of $S_C$. (This list may be obtained via
1083 the function \texttt{multi\_orbit}). The $d_i$ are integers such that
1084 $c_1\leq d_1, c_2 \leq d_2,\ldots, c_p\leq d_p$. We denote by $S_D$ the
1085 product of the symmetric groups $S_{d_1} \times S_{d_2} \times \ldots \times
1086 S_{d_p}$.
1088 The function \texttt{pui\_direct} returns the first $N$ power functions of
1089 the orbit $S_Df$ pf the function $f$ deduced from the power functions of the
1090 orbit $S_Cf$ where $N$ is the cardinal of $S_Df$.
1092 The result is returned in multi-contracted form relative to $S_D$ (i.e. only
1093 one element is kept per orbit under the action of $S_D$).
1094 \end{itemize}
1095 \small
1096 \begin{verbatim}
1097 L : [[x,y],[a,b]]$
1099 pui_direct([b*y + a*x, a*y + b*x], L, [2,2]);
1102 [a x, 4 a b x y + a x ]
1104 pui_direct([b*y + a*x, a*y + b*x], L, [3,2]);
1106 2 2 2 2 3 3
1107 [2 a x, 4 a b x y + 2 a x , 3 a b x y + 2 a x ,
1109 2 2 2 2 3 3 4 4
1110 12 a b x y + 4 a b x y + 2 a x ,
1112 3 2 3 2 4 4 5 5
1113 10 a b x y + 5 a b x y + 2 a x ,
1115 3 3 3 3 4 2 4 2 5 5 6 6
1116 40 a b x y + 15 a b x y + 6 a b x y + 2 a x ]
1118 pui_direct ([y+x+2*c, y+x+2*b, y+x+2*a],[[x,y],[a,b,c]],[2,3]);
1121 [3 x + 2 a, 6 x y + 3 x + 4 a x + 4 a ,
1123 2 3 2 2 3
1124 9 x y + 12 a x y + 3 x + 6 a x + 12 a x + 8 a ]
1125 \end{verbatim}
1126 \normalsize
1127 Evidently, we find the same result by
1128 \small
1129 \begin{verbatim}
1130 pui_direct([y+x+2*a], [[x,y],[a]], [2,3]);
1133 [3 x + 2 a, 6 x y + 3 x + 4 a x + 4 a ,
1135 2 3 2 2 3
1136 9 x y + 12 a x y + 3 x + 6 a x + 12 a x + 8 a ]
1137 \end{verbatim}
1138 \normalsize
1141 \newpage
1142 \section{Meaning of objects}
1144 \begin{flushleft}
1145 \texttt{card} : the cardinal of the set of variables with which we are working.
1147 \texttt{$e_k$} : $k$-th elementary symmetric function $\sum_{i_1<i_2<\cdots<
1148 i_k} x_{i_1} x_{i_2} \cdots x_{i_k}$.
1150 \texttt{$p_k$} : $k$-th power function $\sum_i x_i^k$.
1152 \texttt{$h_k$} : $k$-th complete (homogeneous) symmetric function $\sum_{i_1\le
1153 i_2\le \cdots\le i_k} x_{i_1} x_{i_2} \cdots x_{i_k}$.
1155 \texttt{ele} = [$e_1,e_2,\ldots,e_n$], $n$ given in the function call.
1157 \texttt{cele} = [card, $e_1,e_2,\ldots,e_n$]
1159 \texttt{pui} = [$p_1,p_2,p_3,\ldots,p_m$], $m$ given in the function call.
1161 \texttt{cpui} = [card, $p_{1},p_{2},p_{3},\ldots,p_{m}$].
1163 \texttt{ccomp} = [card, $h_{1},h_{2},h_{3},\ldots,h_{m}$].
1165 \texttt{sym} : symmetric polynomial of unspecified representation.
1167 \texttt{fmc} : contracted monomial form.
1169 \texttt{part} : partition.
1171 \texttt{tc} : contracted term.
1173 \texttt{tpart} : partitioned term.
1175 \texttt{psym} : symmetric polynomial in extended form.
1177 \texttt{pc} : symmetric polynomial in contracted form.
1179 \texttt{multi\_pc} : multi-symmetric polynomial in multi-contracted form under
1180 $S_D$.
1182 \texttt{ppart} : symmetric polynomial in partitioned form.
1184 \texttt{P($x_1,\ldots,x_q$)} : polynomial in $x_1,\ldots,x_q$.
1186 \texttt{lvar} : list of variables.
1188 $[lvar_1, \ldots,lvar_r]$ : list of lists of variables.
1189 \end{flushleft}
1192 \addcontentsline{toc}{section}{Index}
1193 % makeindex docsym
1194 \printindex
1197 \end{document}