solve: do not call MEVAL.
[maxima.git] / doc / info / de / symmetries.de.texi
blob3aeeb44886fc75aaa3dd4b73f9244762015d3d78
1 @c -----------------------------------------------------------------------------
2 @c File        : symmetries.de.texi
3 @c License     : GNU General Public License (GPL)
4 @c Language    : German
5 @c Original    : Symmetries.texi revision 1.17
6 @c Translation : Dr. Dieter Kaiser
7 @c Date        : 13.11.2010
8 @c 
9 @c This file is part of Maxima -- GPL CAS based on DOE-MACSYMA
10 @c -----------------------------------------------------------------------------
12 @menu
13 * Introduction to Symmetries::
14 * Functions and Variables for Symmetries::
15 @end menu
17 @c -----------------------------------------------------------------------------
18 @node Introduction to Symmetries, Functions and Variables for Symmetries, symmetries, symmetries
19 @section Introduction to Symmetries
21 @code{sym} is a package for working with symmetric groups of polynomials.
23 @ifnottex
24 It was written for Macsyma-Symbolics by Annick Valibouze (@url{https://web.archive.org/web/20061125035035/http://www-calfor.lip6.fr/~avb/}).
25 The algorithms are described in the following papers:
26 @end ifnottex
27 @iftex
28 It was written for Macsyma-Symbolics by Annick Valibouze@footnote{@url{https://web.archive.org/web/20061125035035/http://www-calfor.lip6.fr/~avb/}}.
29 The algorithms are described in the following papers:
30 @end iftex
32 @ifnottex
33 @enumerate
34 @item
35 Fonctions sym@'etriques et changements de bases. Annick Valibouze.
36 EUROCAL'87 (Leipzig, 1987), 323--332, Lecture Notes in Comput. Sci 378.
37 Springer, Berlin, 1989.@*
38 @url{http://www.stix.polytechnique.fr/publications/1984-1994.html}
40 @item R@'esolvantes et fonctions sym@'etriques. Annick Valibouze.
41 Proceedings of the ACM-SIGSAM 1989 International Symposium on Symbolic
42 and Algebraic Computation, ISSAC'89 (Portland, Oregon).
43 ACM Press, 390-399, 1989.@*
44 @url{https://web.archive.org/web/20061125035035/http://www-calfor.lip6.fr/~avb/DonneesTelechargeables/MesArticles/issac89ACMValibouze.pdf}
46 @item Symbolic computation with symmetric polynomials, an extension to Macsyma.
47 Annick Valibouze. Computers and Mathematics (MIT, USA, June 13-17, 1989),
48 Springer-Verlag, New York Berlin, 308-320, 1989.@*
49 @url{http://www.stix.polytechnique.fr/publications/1984-1994.html}
51 @item Th@'eorie de Galois Constructive. Annick Valibouze. M@'emoire d'habilitation
52 @`a diriger les recherches (HDR), Universit@'e P. et M. Curie (Paris VI), 1994.
53 @end enumerate
54 @end ifnottex
56 @iftex
57 @enumerate
58 @item
59 Fonctions sym@'etriques et changements de bases
60 @footnote{@url{www.stix.polytechnique.fr/publications/1984-1994.html}}.
61 Annick Valibouze. EUROCAL'87 (Leipzig, 1987), 323--332, Lecture Notes in Comput. Sci 378.
62 Springer, Berlin, 1989.
64 @item R@'esolvantes et fonctions sym@'etriques
65 @footnote{@url{https://web.archive.org/web/20061125035035/http://www-calfor.lip6.fr/~avb/DonneesTelechargeables/MesArticles/issac89ACMValibouze.pdf}}.
66 Annick Valibouze. Proceedings of the ACM-SIGSAM 1989 International Symposium on Symbolic
67 and Algebraic Computation, ISSAC'89 (Portland, Oregon). ACM Press, 390-399, 1989.
69 @item Symbolic computation with symmetric polynomials, an extension to Macsyma
70 @footnote{@url{www.stix.polytechnique.fr/publications/1984-1994.html}}.
71 Annick Valibouze. Computers and Mathematics (MIT, USA, June 13-17, 1989),
72 Springer-Verlag, New York Berlin, 308-320, 1989.
74 @item Th@'eorie de Galois Constructive. Annick Valibouze. M@'emoire d'habilitation
75 @`a diriger les recherches (HDR), Universit@'e P. et M. Curie (Paris VI), 1994.
76 @end enumerate
77 @end iftex
79 @c @opencatbox
80 @c @category{Group theory} @category{Polynomials} @category{Share packages} @category{Package sym}
81 @c @closecatbox
83 @c -----------------------------------------------------------------------------
84 @node Functions and Variables for Symmetries,  , Introduction to Symmetries, symmetries
85 @section Functions and Variables for Symmetries
87 @c -----------------------------------------------------------------------------
88 @subsection Changing bases
90 @c -----------------------------------------------------------------------------
91 @deffn {Function} comp2pui (@var{n}, @var{L})
93 implements passing from the complete symmetric functions given in the list
94 @var{L} to the elementary symmetric functions from 0 to @var{n}. If the
95 list @var{L} contains fewer than @var{n+1} elements, it will be completed with
96 formal values of the type @var{h1}, @var{h2}, etc. If the first element
97 of the list @var{L} exists, it specifies the size of the alphabet,
98 otherwise the size is set to @var{n}.
100 @c GENERATED FROM THE FOLLOWING
101 @c comp2pui (3, [4, g]);
102 @example
103 @group
104 (%i1) comp2pui (3, [4, g]);
105                         2                    2
106 (%o1)    [4, g, 2 h2 - g , 3 h3 - g h2 + g (g  - 2 h2)]
107 @end group
108 @end example
110 @c @opencatbox
111 @c @category{Package sym}
112 @c @closecatbox
113 @end deffn
115 @c -----------------------------------------------------------------------------
116 @deffn {Function} ele2pui (@var{m}, @var{L})
118 goes from the elementary symmetric functions to the complete functions.
119 Similar to @code{comp2ele} and @code{comp2pui}.
121 Other functions for changing bases: @code{comp2ele}.
123 @c @opencatbox
124 @c @category{Package sym}
125 @c @closecatbox
126 @end deffn
128 @c -----------------------------------------------------------------------------
129 @deffn {Function} ele2comp (@var{m}, @var{L})
131 Goes from the elementary symmetric functions to the compete functions.
132 Similar to @code{comp2ele} and @code{comp2pui}.
134 Other functions for changing bases: @code{comp2ele}.
136 @c @opencatbox
137 @c @category{Package sym}
138 @c @closecatbox
139 @end deffn
141 @c -----------------------------------------------------------------------------
142 @deffn {Function} elem (@var{ele}, @var{sym}, @var{lvar})
144 decomposes the symmetric polynomial @var{sym}, in the variables
145 contained in the list @var{lvar}, in terms of the elementary symmetric
146 functions given in the list @var{ele}.  If the first element of
147 @var{ele} is given, it will be the size of the alphabet, otherwise the
148 size will be the degree of the polynomial @var{sym}.  If values are
149 missing in the list @var{ele}, formal values of the type @var{e1},
150 @var{e2}, etc. will be added.  The polynomial @var{sym} may be given in
151 three different forms: contracted (@code{elem} should then be 1, its
152 default value), partitioned (@code{elem} should be 3), or extended
153 (i.e. the entire polynomial, and @code{elem} should then be 2).  The
154 function @code{pui} is used in the same way.
156 On an alphabet of size 3 with @var{e1}, the first elementary symmetric
157 function, with value 7, the symmetric polynomial in 3 variables whose
158 contracted form (which here depends on only two of its variables) is
159 @var{x^4-2*x*y} decomposes as follows in elementary symmetric functions:
161 @c GENERATED FROM THE FOLLOWING
162 @c elem ([3, 7], x^4 - 2*x*y, [x, y]);
163 @c ratsimp (%);
164 @example
165 @group
166 (%i1) elem ([3, 7], x^4 - 2*x*y, [x, y]);
167 (%o1) 7 (e3 - 7 e2 + 7 (49 - e2)) + 21 e3
169                                          + (- 2 (49 - e2) - 2) e2
170 @end group
171 @group
172 (%i2) ratsimp (%);
173                               2
174 (%o2)             28 e3 + 2 e2  - 198 e2 + 2401
175 @end group
176 @end example
178 @noindent
179 Other functions for changing bases: @code{comp2ele}.
181 @c @opencatbox
182 @c @category{Package sym}
183 @c @closecatbox
184 @end deffn
186 @c -----------------------------------------------------------------------------
187 @deffn {Function} mon2schur (@var{L})
189 The list @var{L} represents the Schur function @math{S_L}: we have
190 @iftex
191 @math{L = [i_1,i_2, \ldots, i_q]}, with @math{i_1 \le i_2 \le \ldots \le i_q}.
192 The Schur function @math{S_{i_1,i_2, \ldots, i_q}} is the minor
193 of the infinite matrix @math{h_{i-j}}, @math{i \ge 1, j \ge 1},
194 consisting of the @math{q} first rows and the columns @math{i_1+1,
195 i_2+2, \ldots, i_q+q}.
196 @end iftex
197 @ifnottex
198 @math{L = [i_1, i_2, ..., i_q]}, with @math{i_1 <= i_2 <= ... <= i_q}.
199 The Schur function @math{S_[i_1, i_2, ..., i_q]} is the minor
200 of the infinite matrix @math{h_[i-j]}, @math{i <= 1, j <= 1},
201 consisting of the @math{q} first rows and the columns @math{1 + i_1,
202 2 + i_2, ..., q + i_q}.
203 @end ifnottex
205 This Schur function can be written in terms of monomials by using
206 @code{treinat} and @code{kostka}.  The form returned is a symmetric
207 polynomial in a contracted representation in the variables
208 @tex
209 $x_1,x_2,\ldots$
210 @end tex
211 @ifnottex
212 @math{x_1,x_2,...}
213 @end ifnottex
215 @c GENERATED FROM THE FOLLOWING
216 @c mon2schur ([1, 1, 1]);
217 @c mon2schur ([3]);
218 @c mon2schur ([1, 2]);
219 @example
220 @group
221 (%i1) mon2schur ([1, 1, 1]);
222 (%o1)                       x1 x2 x3
223 @end group
224 @group
225 (%i2) mon2schur ([3]);
226                                   2        3
227 (%o2)                x1 x2 x3 + x1  x2 + x1
228 @end group
229 @group
230 (%i3) mon2schur ([1, 2]);
231                                       2
232 (%o3)                  2 x1 x2 x3 + x1  x2
233 @end group
234 @end example
236 @noindent
237 which means that for 3 variables this gives:
239 @c UM, FROM WHAT ARGUMENTS WAS THE FOLLOWING GENERATED ?? (original comment)
240 @example
241 @group
242    2 x1 x2 x3 + x1^2 x2 + x2^2 x1 + x1^2 x3 + x3^2 x1
243     + x2^2 x3 + x3^2 x2
244 @end group
245 @end example
246 @noindent
247 Other functions for changing bases: @code{comp2ele}.
249 @c @opencatbox
250 @c @category{Package sym}
251 @c @closecatbox
252 @end deffn
254 @c -----------------------------------------------------------------------------
255 @deffn {Function} multi_elem (@var{l_elem}, @var{multi_pc}, @var{l_var})
257 decomposes a multi-symmetric polynomial in the multi-contracted form
258 @var{multi_pc} in the groups of variables contained in the list of lists
259 @var{l_var} in terms of the elementary symmetric functions contained in
260 @var{l_elem}.
262 @c GENERATED FROM THE FOLLOWING
263 @c multi_elem ([[2, e1, e2], [2, f1, f2]], a*x + a^2 + x^3, [[x, y], [a, b]]);
264 @c ratsimp (%);
265 @example
266 @group
267 (%i1) multi_elem ([[2, e1, e2], [2, f1, f2]], a*x + a^2 + x^3,
268       [[x, y], [a, b]]);
269                                                   3
270 (%o1)         - 2 f2 + f1 (f1 + e1) - 3 e1 e2 + e1
271 @end group
272 @group
273 (%i2) ratsimp (%);
274                          2                       3
275 (%o2)         - 2 f2 + f1  + e1 f1 - 3 e1 e2 + e1
276 @end group
277 @end example
279 Other functions for changing bases: @code{comp2ele}.
281 @c @opencatbox
282 @c @category{Package sym}
283 @c @closecatbox
284 @end deffn
286 @c WHAT ARE THE ARGUMENTS FOR THIS FUNCTION ?? (original comment)
288 @c -----------------------------------------------------------------------------
289 @deffn {Function} multi_pui
291 is to the function @code{pui} what the function @code{multi_elem} is to
292 the function @code{elem}.
294 @c GENERATED FROM THE FOLLOWING
295 @c multi_pui ([[2, p1, p2], [2, t1, t2]], a*x + a^2 + x^3, [[x, y], [a, b]]);
296 @example
297 @group
298 (%i1) multi_pui ([[2, p1, p2], [2, t1, t2]], a*x + a^2 + x^3,
299       [[x, y], [a, b]]);
300                                             3
301                                 3 p1 p2   p1
302 (%o1)              t2 + p1 t1 + ------- - ---
303                                    2       2
304 @end group
305 @end example
307 @c @opencatbox
308 @c @category{Package sym}
309 @c @closecatbox
310 @end deffn
312 @c HMM, pui IS A VARIABLE AS WELL.  It's a function, for sure.
314 @c -----------------------------------------------------------------------------
315 @deffn {Function} pui (@var{L}, @var{sym}, @var{lvar})
317 decomposes the symmetric polynomial @var{sym}, in the variables in the
318 list @var{lvar}, in terms of the power functions in the list @var{L}.
319 If the first element of @var{L} is given, it will be the size of the
320 alphabet, otherwise the size will be the degree of the polynomial
321 @var{sym}.  If values are missing in the list @var{L}, formal values of
322 the type @var{p1}, @var{p2} , etc. will be added. The polynomial
323 @var{sym} may be given in three different forms: contracted (@code{elem}
324 should then be 1, its default value), partitioned (@code{elem} should be
325 3), or extended (i.e. the entire polynomial, and @code{elem} should then
326 be 2). The function @code{pui} is used in the same way.
328 @c GENERATED FROM THE FOLLOWING
329 @c pui;
330 @c pui ([3, a, b], u*x*y*z, [x, y, z]);
331 @c ratsimp (%);
332 @example
333 @group
334 (%i1) pui;
335 (%o1)                           1
336 @end group
337 @group
338 (%i2) pui ([3, a, b], u*x*y*z, [x, y, z]);
339                        2
340                    a (a  - b) u   (a b - p3) u
341 (%o2)              ------------ - ------------
342                         6              3
343 @end group
344 @group
345 (%i3) ratsimp (%);
346                                        3
347                       (2 p3 - 3 a b + a ) u
348 (%o3)                 ---------------------
349                                 6
350 @end group
351 @end example
352 @noindent
353 Other functions for changing bases: @code{comp2ele}.
355 @c @opencatbox
356 @c @category{Package sym}
357 @c @closecatbox
358 @end deffn
360 @c -----------------------------------------------------------------------------
361 @deffn {Function} pui2comp (@var{n}, @var{lpui})
363 renders the list of the first @var{n} complete functions (with the
364 length first) in terms of the power functions given in the list
365 @var{lpui}. If the list @var{lpui} is empty, the cardinal is @var{n},
366 otherwise it is its first element (as in @code{comp2ele} and
367 @code{comp2pui}).
369 @c GENERATED FROM THE FOLLOWING
370 @c pui2comp (2, []);
371 @c pui2comp (3, [2, a1]);
372 @c ratsimp (%);
373 @example
374 @group
375 (%i1) pui2comp (2, []);
376                                        2
377                                 p2 + p1
378 (%o1)                   [2, p1, --------]
379                                    2
380 @end group
381 @group
382 (%i2) pui2comp (3, [2, a1]);
383                                             2
384                                  a1 (p2 + a1 )
385                          2  p3 + ------------- + a1 p2
386                   p2 + a1              2
387 (%o2)     [2, a1, --------, --------------------------]
388                      2                  3
389 @end group
390 @group
391 (%i3) ratsimp (%);
392                             2                     3
393                      p2 + a1   2 p3 + 3 a1 p2 + a1
394 (%o3)        [2, a1, --------, --------------------]
395                         2               6
396 @end group
397 @end example
398 @noindent
399 Other functions for changing bases: @code{comp2ele}.
401 @c @opencatbox
402 @c @category{Package sym}
403 @c @closecatbox
404 @end deffn
406 @c -----------------------------------------------------------------------------
407 @deffn {Function} pui2ele (@var{n}, @var{lpui})
409 effects the passage from power functions to the elementary symmetric functions.
410 If the flag @code{pui2ele} is @code{girard}, it will return the list of
411 elementary symmetric functions from 1 to @var{n}, and if the flag is
412 @code{close}, it will return the @var{n}-th elementary symmetric function.
414 Other functions for changing bases: @code{comp2ele}.
416 @c @opencatbox
417 @c @category{Package sym}
418 @c @closecatbox
419 @end deffn
421 @c -----------------------------------------------------------------------------
422 @deffn {Function} puireduc (@var{n}, @var{lpui})
424 @var{lpui} is a list whose first element is an integer @var{m}.
425 @code{puireduc} gives the first @var{n} power functions in terms of the
426 first @var{m}.
428 @c GENERATED FROM THE FOLLOWING
429 @c puireduc (3, [2]);
430 @example
431 @group
432 (%i1) puireduc (3, [2]);
433                                          2
434                                    p1 (p1  - p2)
435 (%o1)          [2, p1, p2, p1 p2 - -------------]
436                                          2
437 @end group
438 @group
439 (%i2) ratsimp (%);
440                                            3
441                                3 p1 p2 - p1
442 (%o2)              [2, p1, p2, -------------]
443                                      2
444 @end group
445 @end example
447 @c @opencatbox
448 @c @category{Package sym}
449 @c @closecatbox
450 @end deffn
452 @c -----------------------------------------------------------------------------
453 @deffn {Function} schur2comp (@var{P}, @var{l_var})
455 @var{P} is a polynomial in the variables of the list @var{l_var}.  Each
456 of these variables represents a complete symmetric function.  In
457 @var{l_var} the @var{i}-th complete symmetric function is represented by
458 the concatenation of the letter @code{h} and the integer @var{i}:
459 @code{h@var{i}}.  This function expresses @var{P} in terms of Schur
460 functions.
462 @c GENERATED FROM THE FOLLOWING
463 @c schur2comp (h1*h2 - h3, [h1, h2, h3]);
464 @c schur2comp (a*h3, [h3]);
465 @example
466 @group
467 (%i1) schur2comp (h1*h2 - h3, [h1, h2, h3]);
468 (%o1)                         s
469                                1, 2
470 @end group
471 @group
472 (%i2) schur2comp (a*h3, [h3]);
473 (%o2)                         s  a
474                                3
475 @end group
476 @end example
478 @c @opencatbox
479 @c @category{Package sym}
480 @c @closecatbox
481 @end deffn
483 @c -----------------------------------------------------------------------------
484 @subsection Changing representations
486 @c -----------------------------------------------------------------------------
487 @deffn {Function} cont2part (@var{pc}, @var{lvar})
489 returns the partitioned polynomial associated to the contracted form
490 @var{pc} whose variables are in @var{lvar}.
492 @c GENERATED FROM THE FOLLOWING
493 @c pc: 2*a^3*b*x^4*y + x^5;
494 @c cont2part (pc, [x, y]);
495 @example
496 @group
497 (%i1) pc: 2*a^3*b*x^4*y + x^5;
498                            3    4      5
499 (%o1)                   2 a  b x  y + x
500 @end group
501 @group
502 (%i2) cont2part (pc, [x, y]);
503                                    3
504 (%o2)              [[1, 5, 0], [2 a  b, 4, 1]]
505 @end group
506 @end example
508 @c @opencatbox
509 @c @category{Package sym}
510 @c @closecatbox
511 @end deffn
513 @c -----------------------------------------------------------------------------
514 @deffn {Function} contract (@var{psym}, @var{lvar})
516 returns a contracted form (i.e. a monomial orbit under the action of the
517 @c CHECK ME!!
518 symmetric group) of the polynomial @var{psym} in the variables contained
519 in the list @var{lvar}.  The function @code{explose} performs the
520 inverse operation.  The function @code{tcontract} tests the symmetry of
521 the polynomial.
523 @c GENERATED FROM THE FOLLOWING
524 @c psym: explose (2*a^3*b*x^4*y, [x, y, z]);
525 @c contract (psym, [x, y, z]);
526 @example
527 @group
528 (%i1) psym: explose (2*a^3*b*x^4*y, [x, y, z]);
529          3      4      3      4      3    4        3    4
530 (%o1) 2 a  b y z  + 2 a  b x z  + 2 a  b y  z + 2 a  b x  z
532                                            3      4      3    4
533                                       + 2 a  b x y  + 2 a  b x  y
534 @end group
535 @group
536 (%i2) contract (psym, [x, y, z]);
537                               3    4
538 (%o2)                      2 a  b x  y
539 @end group
540 @end example
542 @c @opencatbox
543 @c @category{Package sym}
544 @c @closecatbox
545 @end deffn
547 @c -----------------------------------------------------------------------------
548 @deffn {Function} explose (@var{pc}, @var{lvar})
550 returns the symmetric polynomial associated with the contracted form
551 @var{pc}. The list @var{lvar} contains the variables.
553 @c GENERATED FROM THE FOLLOWING
554 @c explose (a*x + 1, [x, y, z]);
555 @example
556 @group
557 (%i1) explose (a*x + 1, [x, y, z]);
558 (%o1)                  a z + a y + a x + 1
559 @end group
560 @end example
562 @c @opencatbox
563 @c @category{Package sym}
564 @c @closecatbox
565 @end deffn
567 @c -----------------------------------------------------------------------------
568 @deffn {Function} part2cont (@var{ppart}, @var{lvar})
570 goes from the partitioned form to the contracted form of a symmetric polynomial.
571 The contracted form is rendered with the variables in @var{lvar}.
573 @c GENERATED FROM THE FOLLOWING
574 @c part2cont ([[2*a^3*b, 4, 1]], [x, y]);
575 @example
576 @group
577 (%i1) part2cont ([[2*a^3*b, 4, 1]], [x, y]);
578                               3    4
579 (%o1)                      2 a  b x  y
580 @end group
581 @end example
583 @c @opencatbox
584 @c @category{Package sym}
585 @c @closecatbox
586 @end deffn
588 @c -----------------------------------------------------------------------------
589 @deffn {Function} partpol (@var{psym}, @var{lvar})
591 @var{psym} is a symmetric polynomial in the variables of the list
592 @var{lvar}. This function retturns its partitioned representation.
594 @c GENERATED FROM THE FOLLOWING
595 @c partpol (-a*(x + y) + 3*x*y, [x, y]);
596 @example
597 @group
598 (%i1) partpol (-a*(x + y) + 3*x*y, [x, y]);
599 (%o1)               [[3, 1, 1], [- a, 1, 0]]
600 @end group
601 @end example
603 @c @opencatbox
604 @c @category{Package sym}
605 @c @closecatbox
606 @end deffn
608 @c -----------------------------------------------------------------------------
609 @deffn {Function} tcontract (@var{pol}, @var{lvar})
611 tests if the polynomial @var{pol} is symmetric in the variables of the
612 list @var{lvar}.  If so, it returns a contracted representation like the
613 function @code{contract}.
615 @c @opencatbox
616 @c @category{Package sym}
617 @c @closecatbox
618 @end deffn
620 @c -----------------------------------------------------------------------------
621 @deffn {Function} tpartpol (@var{pol}, @var{lvar})
623 tests if the polynomial @var{pol} is symmetric in the variables of the
624 list @var{lvar}.  If so, it returns its partitioned representation like
625 the function @code{partpol}.
627 @c @opencatbox
628 @c @category{Package sym}
629 @c @closecatbox
630 @end deffn
632 @c -----------------------------------------------------------------------------
633 @subsection Groups and orbits
635 @c -----------------------------------------------------------------------------
636 @deffn {Function} direct ([@var{p_1}, ..., @var{p_n}], @var{y}, @var{f}, [@var{lvar_1}, ..., @var{lvar_n}])
637 calculates the direct image (see M. Giusti, D. Lazard et A. Valibouze,
638 ISSAC 1988, Rome) associated to the function @var{f}, in the lists of
639 variables @var{lvar_1}, ..., @var{lvar_n}, and in the polynomials
640 @var{p_1}, ..., @var{p_n} in a variable @var{y}.  The arity of the
641 function @var{f} is important for the calulation.  Thus, if the
642 expression for @var{f} does not depend on some variable, it is useless
643 to include this variable, and not including it will also considerably
644 reduce the amount of computation.
646 @c GENERATED FROM THE FOLLOWING
647 @c direct ([z^2  - e1* z + e2, z^2  - f1* z + f2],
648 @c               z, b*v + a*u, [[u, v], [a, b]]);
649 @c ratsimp (%);
650 @c ratsimp (direct ([z^3-e1*z^2+e2*z-e3,z^2  - f1* z + f2],
651 @c               z, b*v + a*u, [[u, v], [a, b]]));
652 @example
653 @group
654 (%i1) direct ([z^2  - e1* z + e2, z^2  - f1* z + f2],
655               z, b*v + a*u, [[u, v], [a, b]]);
656        2
657 (%o1) y  - e1 f1 y
659                                  2            2             2   2
660                   - 4 e2 f2 - (e1  - 2 e2) (f1  - 2 f2) + e1  f1
661                 + -----------------------------------------------
662                                          2
663 @end group
664 @group
665 (%i2) ratsimp (%);
666               2                2                   2
667 (%o2)        y  - e1 f1 y + (e1  - 4 e2) f2 + e2 f1
668 @end group
669 @group
670 (%i3) ratsimp (direct ([z^3-e1*z^2+e2*z-e3,z^2  - f1* z + f2],
671               z, b*v + a*u, [[u, v], [a, b]]));
672        6            5         2                        2    2   4
673 (%o3) y  - 2 e1 f1 y  + ((2 e1  - 6 e2) f2 + (2 e2 + e1 ) f1 ) y
675                           3                               3   3
676  + ((9 e3 + 5 e1 e2 - 2 e1 ) f1 f2 + (- 2 e3 - 2 e1 e2) f1 ) y
678          2       2        4    2
679  + ((9 e2  - 6 e1  e2 + e1 ) f2
681                     2       2       2                   2    4
682  + (- 9 e1 e3 - 6 e2  + 3 e1  e2) f1  f2 + (2 e1 e3 + e2 ) f1 )
684   2          2                      2     3          2
685  y  + (((9 e1  - 27 e2) e3 + 3 e1 e2  - e1  e2) f1 f2
687                  2            2    3                5
688  + ((15 e2 - 2 e1 ) e3 - e1 e2 ) f1  f2 - 2 e2 e3 f1 ) y
690            2                   3           3     2   2    3
691  + (- 27 e3  + (18 e1 e2 - 4 e1 ) e3 - 4 e2  + e1  e2 ) f2
693          2      3                   3    2   2
694  + (27 e3  + (e1  - 9 e1 e2) e3 + e2 ) f1  f2
696                    2    4        2   6
697  + (e1 e2 e3 - 9 e3 ) f1  f2 + e3  f1
698 @end group
699 @end example
701 Finding the polynomial whose roots are the sums @math{a+u} where @math{a}
702 is a root of @math{z^2 - e_1 z + e_2} and @math{u} is a root of @math{z^2 -
703 f_1 z + f_2}.
705 @c GENERATED FROM THE FOLLOWING
706 @c ratsimp (direct ([z^2 - e1* z + e2, z^2 - f1* z + f2],
707 @c                           z, a + u, [[u], [a]]));
708 @example
709 @group
710 (%i1) ratsimp (direct ([z^2 - e1* z + e2, z^2 - f1* z + f2],
711                           z, a + u, [[u], [a]]));
712        4                    3             2
713 (%o1) y  + (- 2 f1 - 2 e1) y  + (2 f2 + f1  + 3 e1 f1 + 2 e2
715      2   2                              2               2
716  + e1 ) y  + ((- 2 f1 - 2 e1) f2 - e1 f1  + (- 2 e2 - e1 ) f1
718                   2                     2            2
719  - 2 e1 e2) y + f2  + (e1 f1 - 2 e2 + e1 ) f2 + e2 f1  + e1 e2 f1
721      2
722  + e2
723 @end group
724 @end example
726 @code{direct} accepts two flags: @code{elementaires} and
727 @code{puissances} (default) which allow decomposing the symmetric
728 polynomials appearing in the calculation into elementary symmetric
729 functions, or power functions, respectively.
731 Functions of @code{sym} used in this function:
733 @code{multi_orbit} (so @code{orbit}), @code{pui_direct}, @code{multi_elem}
734 (so @code{elem}), @code{multi_pui} (so @code{pui}), @code{pui2ele}, @code{ele2pui}
735 (if the flag @code{direct} is in @code{puissances}).
737 @c @opencatbox
738 @c @category{Package sym}
739 @c @closecatbox
740 @end deffn
742 @c -----------------------------------------------------------------------------
743 @deffn {Function} multi_orbit (@var{P}, [@var{lvar_1}, @var{lvar_2},..., @var{lvar_p}])
745 @var{P} is a polynomial in the set of variables contained in the lists
746 @var{lvar_1}, @var{lvar_2}, ..., @var{lvar_p}. This function returns the
747 orbit of the polynomial @var{P} under the action of the product of the
748 symmetric groups of the sets of variables represented in these @var{p}
749 lists.
751 @c GENERATED FROM THE FOLLOWING
752 @c multi_orbit (a*x + b*y, [[x, y], [a, b]]);
753 @c multi_orbit (x + y + 2*a, [[x, y], [a, b, c]]);
754 @example
755 @group
756 (%i1) multi_orbit (a*x + b*y, [[x, y], [a, b]]);
757 (%o1)                [b y + a x, a y + b x]
758 @end group
759 @group
760 (%i2) multi_orbit (x + y + 2*a, [[x, y], [a, b, c]]);
761 (%o2)        [y + x + 2 c, y + x + 2 b, y + x + 2 a]
762 @end group
763 @end example
764 @noindent
765 Also see: @code{orbit} for the action of a single symmetric group.
767 @c @opencatbox
768 @c @category{Package sym}
769 @c @closecatbox
770 @end deffn
772 @c -----------------------------------------------------------------------------
773 @deffn {Function} multsym (@var{ppart_1}, @var{ppart_2}, @var{n})
775 returns the product of the two symmetric polynomials in @var{n}
776 variables by working only modulo the action of the symmetric group of
777 order @var{n}. The polynomials are in their partitioned form.
779 Given the 2 symmetric polynomials in @var{x}, @var{y}:  @code{3*(x + y)
780 + 2*x*y} and @code{5*(x^2 + y^2)} whose partitioned forms are @code{[[3,
781 1], [2, 1, 1]]} and @code{[[5, 2]]}, their product will be
783 @c GENERATED FROM THE FOLLOWING
784 @c multsym ([[3, 1], [2, 1, 1]], [[5, 2]], 2);
785 @example
786 @group
787 (%i1) multsym ([[3, 1], [2, 1, 1]], [[5, 2]], 2);
788 (%o1)         [[10, 3, 1], [15, 3, 0], [15, 2, 1]]
789 @end group
790 @end example
791 @noindent
792 that is @code{10*(x^3*y + y^3*x) + 15*(x^2*y + y^2*x) + 15*(x^3 + y^3)}.
794 Functions for changing the representations of a symmetric polynomial:
796 @code{contract}, @code{cont2part}, @code{explose}, @code{part2cont},
797 @code{partpol}, @code{tcontract}, @code{tpartpol}.
799 @c @opencatbox
800 @c @category{Package sym}
801 @c @closecatbox
802 @end deffn
804 @c -----------------------------------------------------------------------------
805 @deffn {Function} orbit (@var{P}, @var{lvar})
807 computes the orbit of the polynomial @var{P} in the variables in the list
808 @var{lvar} under the action of the symmetric group of the set of
809 variables in the list @var{lvar}.
811 @c GENERATED FROM THE FOLLOWING
812 @c orbit (a*x + b*y, [x, y]);
813 @c orbit (2*x + x^2, [x, y]);
814 @example
815 @group
816 (%i1) orbit (a*x + b*y, [x, y]);
817 (%o1)                [a y + b x, b y + a x]
818 @end group
819 @group
820 (%i2) orbit (2*x + x^2, [x, y]);
821                         2         2
822 (%o2)                 [y  + 2 y, x  + 2 x]
823 @end group
824 @end example
825 @noindent
826 See also @code{multi_orbit} for the action of a product of symmetric
827 groups on a polynomial.
829 @c @opencatbox
830 @c @category{Package sym}
831 @c @closecatbox
832 @end deffn
834 @c -----------------------------------------------------------------------------
835 @deffn {Function} pui_direct (@var{orbite}, [@var{lvar_1}, ..., @var{lvar_n}], [@var{d_1}, @var{d_2}, ..., @var{d_n}])
837 Let @var{f} be a polynomial in @var{n} blocks of variables @var{lvar_1},
838 ..., @var{lvar_n}.  Let @var{c_i} be the number of variables in
839 @var{lvar_i}, and @var{SC} be the product of @var{n} symmetric groups of
840 degree @var{c_1}, ..., @var{c_n}. This group acts naturally on @var{f}.
841 The list @var{orbite} is the orbit, denoted @code{@var{SC}(@var{f})}, of
842 the function @var{f} under the action of @var{SC}. (This list may be
843 obtained by the function @code{multi_orbit}.)  The @var{di} are integers
844 s.t.
845 @iftex
846 $c_1 \le d_1, c_2 \le d_2, \ldots, c_n \le d_n$.
847 @end iftex
848 @ifnottex
849 @math{c_1 <= d_1, c_2 <= d_2, ..., c_n <= d_n}.
850 @end ifnottex
852 @iftex
853 Let @var{SD} be the product of the symmetric groups @math{S_{d_1} \times
854 S_{d_2} \times \cdots \times S_{d_n}}.
855 @end iftex
856 @ifnottex
857 Let @var{SD} be the product of the symmetric groups @math{S_[d_1] x
858 S_[d_2] x ... x S_[d_n]}.
859 @end ifnottex
860 The function @code{pui_direct} returns
861 the first @var{n} power functions of @code{@var{SD}(@var{f})} deduced
862 from the power functions of @code{@var{SC}(@var{f})}, where @var{n} is
863 the size of @code{@var{SD}(@var{f})}.
865 The result is in multi-contracted form w.r.t. @var{SD}, i.e. only one
866 element is kept per orbit, under the action of @var{SD}.
868 @c GENERATED FROM THE FOLLOWING
869 @c l: [[x, y], [a, b]];
870 @c pui_direct (multi_orbit (a*x + b*y, l), l, [2, 2]);
871 @c pui_direct (multi_orbit (a*x + b*y, l), l, [3, 2]);
872 @c pui_direct ([y + x + 2*c, y + x + 2*b, y + x + 2*a], [[x, y], [a, b, c]], [2, 3]);
873 @example
874 @group
875 (%i1) l: [[x, y], [a, b]];
876 (%o1)                   [[x, y], [a, b]]
877 @end group
878 @group
879 (%i2) pui_direct (multi_orbit (a*x + b*y, l), l, [2, 2]);
880                                        2  2
881 (%o2)               [a x, 4 a b x y + a  x ]
882 @end group
883 @group
884 (%i3) pui_direct (multi_orbit (a*x + b*y, l), l, [3, 2]);
885                              2  2     2    2        3  3
886 (%o3) [2 a x, 4 a b x y + 2 a  x , 3 a  b x  y + 2 a  x , 
888     2  2  2  2      3    3        4  4
889 12 a  b  x  y  + 4 a  b x  y + 2 a  x , 
891     3  2  3  2      4    4        5  5
892 10 a  b  x  y  + 5 a  b x  y + 2 a  x , 
894     3  3  3  3       4  2  4  2      5    5        6  6
895 40 a  b  x  y  + 15 a  b  x  y  + 6 a  b x  y + 2 a  x ]
896 @end group
897 @group
898 (%i4) pui_direct ([y + x + 2*c, y + x + 2*b, y + x + 2*a],
899       [[x, y], [a, b, c]], [2, 3]);
900                              2              2
901 (%o4) [3 x + 2 a, 6 x y + 3 x  + 4 a x + 4 a , 
903                  2                   3        2       2        3
904               9 x  y + 12 a x y + 3 x  + 6 a x  + 12 a  x + 8 a ]
905 @end group
906 @end example
907 @c THIS NEXT FUNCTION CALL TAKES A VERY LONG TIME (SEVERAL MINUTES)
908 @c SO LEAVE IT OUT TIL PROCESSORS GET A LITTLE FASTER ...
909 @c pui_direct ([y + x + 2*c, y + x + 2*b, y + x + 2*a], [[x, y], [a, b, c]], [3, 4]);
911 @c @opencatbox
912 @c @category{Package sym}
913 @c @closecatbox
914 @end deffn
916 @c -----------------------------------------------------------------------------
917 @subsection Partitions
919 @c -----------------------------------------------------------------------------
920 @deffn {Function} kostka (@var{part_1}, @var{part_2})
922 written by P. Esperet, calculates the Kostka number of the partition
923 @var{part_1} and @var{part_2}.
925 @c GENERATED FROM THE FOLLOWING
926 @c kostka ([3, 3, 3], [2, 2, 2, 1, 1, 1]);
927 @example
928 @group
929 (%i1) kostka ([3, 3, 3], [2, 2, 2, 1, 1, 1]);
930 (%o1)                           6
931 @end group
932 @end example
934 @c @opencatbox
935 @c @category{Package sym}
936 @c @closecatbox
937 @end deffn
939 @c -----------------------------------------------------------------------------
940 @deffn {Function} lgtreillis (@var{n}, @var{m})
942 returns the list of partitions of weight @var{n} and length @var{m}.
944 @c GENERATED FROM THE FOLLOWING
945 @c lgtreillis (4, 2);
946 @example
947 @group
948 (%i1) lgtreillis (4, 2);
949 (%o1)                   [[3, 1], [2, 2]]
950 @end group
951 @end example
952 @noindent
953 Also see: @code{ltreillis}, @code{treillis} and @code{treinat}.
955 @c @opencatbox
956 @c @category{Package sym}
957 @c @closecatbox
958 @end deffn
960 @c -----------------------------------------------------------------------------
961 @deffn {Function} ltreillis (@var{n}, @var{m})
963 returns the list of partitions of weight @var{n} and length less than or
964 equal to @var{m}.
966 @c GENERATED FROM THE FOLLOWING
967 @c ltreillis (4, 2);
968 @example
969 @group
970 (%i1) ltreillis (4, 2);
971 (%o1)               [[4, 0], [3, 1], [2, 2]]
972 @end group
973 @end example
974 @noindent
975 Also see: @code{lgtreillis}, @code{treillis} and @code{treinat}.
977 @c @opencatbox
978 @c @category{Package sym}
979 @c @closecatbox
980 @end deffn
982 @c -----------------------------------------------------------------------------
983 @deffn {Function} treillis (@var{n})
985 returns all partitions of weight @var{n}.
987 @c GENERATED FROM THE FOLLOWING
988 @c treillis (4);
989 @example
990 @group
991 (%i1) treillis (4);
992 (%o1)    [[4], [3, 1], [2, 2], [2, 1, 1], [1, 1, 1, 1]]
993 @end group
994 @end example
996 See also: @code{lgtreillis}, @code{ltreillis} and @code{treinat}.
998 @c @opencatbox
999 @c @category{Package sym}
1000 @c @closecatbox
1001 @end deffn
1003 @c -----------------------------------------------------------------------------
1004 @deffn {Function} treinat (@var{part})
1006 retruns the list of partitions inferior to the partition @var{part} w.r.t.
1007 the natural order.
1009 @c GENERATED FROM THE FOLLOWING
1010 @c treinat ([5]);
1011 @c treinat ([1, 1, 1, 1, 1]);
1012 @c treinat ([3, 2]);
1013 @example
1014 @group
1015 (%i1) treinat ([5]);
1016 (%o1)                         [[5]]
1017 @end group
1018 @group
1019 (%i2) treinat ([1, 1, 1, 1, 1]);
1020 (%o2) [[5], [4, 1], [3, 2], [3, 1, 1], [2, 2, 1], [2, 1, 1, 1], 
1022                                                  [1, 1, 1, 1, 1]]
1023 @end group
1024 @group
1025 (%i3) treinat ([3, 2]);
1026 (%o3)                 [[5], [4, 1], [3, 2]]
1027 @end group
1028 @end example
1030 See also: @code{lgtreillis}, @code{ltreillis} and @code{treillis}.
1032 @c @opencatbox
1033 @c @category{Package sym}
1034 @c @closecatbox
1035 @end deffn
1037 @c -----------------------------------------------------------------------------
1038 @subsection Polynomials and their roots
1040 @c -----------------------------------------------------------------------------
1041 @deffn {Function} ele2polynome (@var{L}, @var{z})
1043 returns the polynomial in @var{z} s.t. the elementary symmetric
1044 functions of its roots are in the list @code{@var{L} = [@var{n},
1045 @var{e_1}, ..., @var{e_n}]}, where @var{n} is the degree of the
1046 polynomial and @var{e_i} the @var{i}-th elementary symmetric function.
1048 @c GENERATED FROM THE FOLLOWING
1049 @c ele2polynome ([2, e1, e2], z);
1050 @c polynome2ele (x^7 - 14*x^5 + 56*x^3  - 56*x + 22, x);
1051 @c ele2polynome ([7, 0, -14, 0, 56, 0, -56, -22], x);
1052 @example
1053 @group
1054 (%i1) ele2polynome ([2, e1, e2], z);
1055                           2
1056 (%o1)                    z  - e1 z + e2
1057 @end group
1058 @group
1059 (%i2) polynome2ele (x^7 - 14*x^5 + 56*x^3  - 56*x + 22, x);
1060 (%o2)          [7, 0, - 14, 0, 56, 0, - 56, - 22]
1061 @end group
1062 @group
1063 (%i3) ele2polynome ([7, 0, -14, 0, 56, 0, -56, -22], x);
1064                   7       5       3
1065 (%o3)            x  - 14 x  + 56 x  - 56 x + 22
1066 @end group
1067 @end example
1068 @noindent
1069 The inverse: @code{polynome2ele (@var{P}, @var{z})}.
1071 Also see:
1072 @code{polynome2ele}, @code{pui2polynome}.
1074 @c @opencatbox
1075 @c @category{Package sym}
1076 @c @closecatbox
1077 @end deffn
1079 @c -----------------------------------------------------------------------------
1080 @deffn {Function} polynome2ele (@var{P}, @var{x})
1082 gives the list @code{@var{l} = [@var{n}, @var{e_1}, ..., @var{e_n}]}
1083 where @var{n} is the degree of the polynomial @var{P} in the variable
1084 @var{x} and @var{e_i} is the @var{i}-the elementary symmetric function
1085 of the roots of @var{P}.
1087 @c GENERATED FROM THE FOLLOWING
1088 @c polynome2ele (x^7 - 14*x^5 + 56*x^3 - 56*x + 22, x);
1089 @c ele2polynome ([7, 0, -14, 0, 56, 0, -56, -22], x);
1090 @example
1091 @group
1092 (%i1) polynome2ele (x^7 - 14*x^5 + 56*x^3 - 56*x + 22, x);
1093 (%o1)          [7, 0, - 14, 0, 56, 0, - 56, - 22]
1094 @end group
1095 @group
1096 (%i2) ele2polynome ([7, 0, -14, 0, 56, 0, -56, -22], x);
1097                   7       5       3
1098 (%o2)            x  - 14 x  + 56 x  - 56 x + 22
1099 @end group
1100 @end example
1101 @noindent
1102 The inverse: @code{ele2polynome (@var{l}, @var{x})}
1104 @c @opencatbox
1105 @c @category{Package sym}
1106 @c @closecatbox
1107 @end deffn
1109 @c -----------------------------------------------------------------------------
1110 @deffn {Function} prodrac (@var{L}, @var{k})
1112 @var{L} is a list containing the elementary symmetric functions 
1113 on a set @var{A}. @code{prodrac} returns the polynomial whose roots
1114 are the @var{k} by @var{k} products of the elements of @var{A}.
1116 Also see @code{somrac}.
1118 @c @opencatbox
1119 @c @category{Package sym}
1120 @c @closecatbox
1121 @end deffn
1123 @c -----------------------------------------------------------------------------
1124 @deffn {Function} pui2polynome (@var{x}, @var{lpui})
1126 calculates the polynomial in @var{x} whose power functions of the roots
1127 are given in the list @var{lpui}.
1129 @c GENERATED FROM THE FOLLOWING
1130 @c polynome2ele (x^3 - 4*x^2 + 5*x - 1, x);
1131 @c ele2pui (3, %);
1132 @c pui2polynome (x, %);
1133 @example
1134 @group
1135 (%i1) pui;
1136 (%o1)                           1
1137 @end group
1138 @group
1139 (%i2) kill(labels);
1140 (%o0)                         done
1141 @end group
1142 @group
1143 (%i1) polynome2ele (x^3 - 4*x^2 + 5*x - 1, x);
1144 (%o1)                     [3, 4, 5, 1]
1145 @end group
1146 @group
1147 (%i2) ele2pui (3, %);
1148 (%o2)                     [3, 4, 6, 7]
1149 @end group
1150 @group
1151 (%i3) pui2polynome (x, %);
1152                         3      2
1153 (%o3)                  x  - 4 x  + 5 x - 1
1154 @end group
1155 @end example
1156 @noindent
1157 See also:
1158 @code{polynome2ele}, @code{ele2polynome}.
1160 @c @opencatbox
1161 @c @category{Package sym}
1162 @c @closecatbox
1163 @end deffn
1165 @c -----------------------------------------------------------------------------
1166 @deffn {Function} somrac (@var{L}, @var{k})
1168 The list @var{L} contains elementary symmetric functions of a polynomial
1169 @var{P} . The function computes the polynomial whose roots are the 
1170 @var{k} by @var{k} distinct sums of the roots of @var{P}. 
1172 Also see @code{prodrac}.
1174 @c @opencatbox
1175 @c @category{Package sym}
1176 @c @closecatbox
1177 @end deffn
1179 @c -----------------------------------------------------------------------------
1180 @subsection Resolvents
1182 @c -----------------------------------------------------------------------------
1183 @deffn {Function} resolvante (@var{P}, @var{x}, @var{f}, [@var{x_1},..., @var{x_d}]) 
1185 calculates the resolvent of the polynomial @var{P} in @var{x} of degree
1186 @var{n} >= @var{d} by the function @var{f} expressed in the variables
1187 @var{x_1}, ..., @var{x_d}.  For efficiency of computation it is
1188 important to not include in the list @code{[@var{x_1}, ..., @var{x_d}]}
1189 variables which do not appear in the transformation function @var{f}.
1191 To increase the efficiency of the computation one may set flags in
1192 @code{resolvante} so as to use appropriate algorithms:
1194 If the function @var{f} is unitary:
1195 @itemize @bullet
1196 @item
1197 A polynomial in a single variable,
1198 @item
1199   linear,
1200 @item
1201   alternating,
1202 @item
1203   a sum,
1204 @item
1205   symmetric,
1206 @item
1207   a product,
1208 @item
1209 the function of the Cayley resolvent (usable up to degree 5)
1211 @c WHAT IS THIS ILLUSTRATING EXACTLY ??
1212 @example
1213 @group
1214 (x1*x2 + x2*x3 + x3*x4 + x4*x5 + x5*x1 -
1215      (x1*x3 + x3*x5 + x5*x2 + x2*x4 + x4*x1))^2
1216 @end group
1217 @end example
1219 general,
1220 @end itemize
1221 the flag of @code{resolvante} may be, respectively:
1222 @itemize @bullet
1223 @item
1224   unitaire,
1225 @item
1226   lineaire,
1227 @item
1228   alternee,
1229 @item
1230   somme,
1231 @item
1232   produit,
1233 @item
1234   cayley,
1235 @item
1236   generale.
1237 @end itemize
1239 @c GENERATED FROM THE FOLLOWING
1240 @c resolvante: unitaire$
1241 @c resolvante (x^7 - 14*x^5 + 56*x^3 - 56*x + 22, x, x^3 - 1, [x]);
1242 @c resolvante: lineaire$
1243 @c resolvante (x^4 - 1, x, x1 + 2*x2 + 3*x3, [x1, x2, x3]);
1244 @c resolvante: general$
1245 @c resolvante (x^4 - 1, x, x1 + 2*x2 + 3*x3, [x1, x2, x3]);
1246 @c resolvante (x^4 - 1, x, x1 + 2*x2 + 3*x3, [x1, x2, x3, x4]);
1247 @c direct ([x^4 - 1], x, x1 + 2*x2 + 3*x3, [[x1, x2, x3]]);
1248 @c resolvante :lineaire$
1249 @c resolvante (x^4 - 1, x, x1 + x2 + x3, [x1, x2, x3]);
1250 @c resolvante: symetrique$
1251 @c resolvante (x^4 - 1, x, x1 + x2 + x3, [x1, x2, x3]);
1252 @c resolvante (x^4 + x + 1, x, x1 - x2, [x1, x2]);
1253 @c resolvante: alternee$
1254 @c resolvante (x^4 + x + 1, x, x1 - x2, [x1, x2]);
1255 @c resolvante: produit$
1256 @c resolvante (x^7 - 7*x + 3, x, x1*x2*x3, [x1, x2, x3]);
1257 @c resolvante: symetrique$
1258 @c resolvante (x^7 - 7*x + 3, x, x1*x2*x3, [x1, x2, x3]);
1259 @c resolvante: cayley$
1260 @c resolvante (x^5 - 4*x^2 + x + 1, x, a, []);
1261 @example
1262 (%i1) resolvante: unitaire$
1263 @group
1264 (%i2) resolvante (x^7 - 14*x^5 + 56*x^3 - 56*x + 22, x, x^3 - 1,
1265       [x]);
1267 " resolvante unitaire " [7, 0, 28, 0, 168, 0, 1120, - 154, 7840,
1268                          - 2772, 56448, - 33880, 
1270 413952, - 352352, 3076668, - 3363360, 23114112, - 30494464, 
1272 175230832, - 267412992, 1338886528, - 2292126760] 
1273   3       6      3       9      6      3
1274 [x  - 1, x  - 2 x  + 1, x  - 3 x  + 3 x  - 1, 
1276  12      9      6      3       15      12       9       6      3
1277 x   - 4 x  + 6 x  - 4 x  + 1, x   - 5 x   + 10 x  - 10 x  + 5 x
1279        18      15       12       9       6      3
1280  - 1, x   - 6 x   + 15 x   - 20 x  + 15 x  - 6 x  + 1, 
1282  21      18       15       12       9       6      3
1283 x   - 7 x   + 21 x   - 35 x   + 35 x  - 21 x  + 7 x  - 1] 
1284 [- 7, 1127, - 6139, 431767, - 5472047, 201692519, - 3603982011] 
1285        7      6        5         4          3           2
1286 (%o2) y  + 7 y  - 539 y  - 1841 y  + 51443 y  + 315133 y
1288                                               + 376999 y + 125253
1289 @end group
1290 (%i3) resolvante: lineaire$
1291 @group
1292 (%i4) resolvante (x^4 - 1, x, x1 + 2*x2 + 3*x3, [x1, x2, x3]);
1294 " resolvante lineaire " 
1295        24       20         16            12             8
1296 (%o4) y   + 80 y   + 7520 y   + 1107200 y   + 49475840 y
1298                                                     4
1299                                        + 344489984 y  + 655360000
1300 @end group
1301 (%i5) resolvante: general$
1302 @group
1303 (%i6) resolvante (x^4 - 1, x, x1 + 2*x2 + 3*x3, [x1, x2, x3]);
1305 " resolvante generale " 
1306        24       20         16            12             8
1307 (%o6) y   + 80 y   + 7520 y   + 1107200 y   + 49475840 y
1309                                                     4
1310                                        + 344489984 y  + 655360000
1311 @end group
1312 @group
1313 (%i7) resolvante (x^4 - 1, x, x1 + 2*x2 + 3*x3, [x1, x2, x3, x4]);
1315 " resolvante generale " 
1316        24       20         16            12             8
1317 (%o7) y   + 80 y   + 7520 y   + 1107200 y   + 49475840 y
1319                                                     4
1320                                        + 344489984 y  + 655360000
1321 @end group
1322 @group
1323 (%i8) direct ([x^4 - 1], x, x1 + 2*x2 + 3*x3, [[x1, x2, x3]]);
1324        24       20         16            12             8
1325 (%o8) y   + 80 y   + 7520 y   + 1107200 y   + 49475840 y
1327                                                     4
1328                                        + 344489984 y  + 655360000
1329 @end group
1330 (%i9) resolvante :lineaire$
1331 @group
1332 (%i10) resolvante (x^4 - 1, x, x1 + x2 + x3, [x1, x2, x3]);
1334 " resolvante lineaire " 
1335                               4
1336 (%o10)                       y  - 1
1337 @end group
1338 (%i11) resolvante: symetrique$
1339 @group
1340 (%i12) resolvante (x^4 - 1, x, x1 + x2 + x3, [x1, x2, x3]);
1342 " resolvante symetrique " 
1343                               4
1344 (%o12)                       y  - 1
1345 @end group
1346 @group
1347 (%i13) resolvante (x^4 + x + 1, x, x1 - x2, [x1, x2]);
1349 " resolvante symetrique " 
1350                            6      2
1351 (%o13)                    y  - 4 y  - 1
1352 @end group
1353 (%i14) resolvante: alternee$
1354 @group
1355 (%i15) resolvante (x^4 + x + 1, x, x1 - x2, [x1, x2]);
1357 " resolvante alternee " 
1358             12      8       6        4        2
1359 (%o15)     y   + 8 y  + 26 y  - 112 y  + 216 y  + 229
1360 @end group
1361 (%i16) resolvante: produit$
1362 @group
1363 (%i17) resolvante (x^7 - 7*x + 3, x, x1*x2*x3, [x1, x2, x3]);
1365 " resolvante produit "
1366         35      33         29        28         27        26
1367 (%o17) y   - 7 y   - 1029 y   + 135 y   + 7203 y   - 756 y
1369          24           23          22            21           20
1370  + 1323 y   + 352947 y   - 46305 y   - 2463339 y   + 324135 y
1372           19           18             17              15
1373  - 30618 y   - 453789 y   - 40246444 y   + 282225202 y
1375              14              12             11            10
1376  - 44274492 y   + 155098503 y   + 12252303 y   + 2893401 y
1378               9            8            7             6
1379  - 171532242 y  + 6751269 y  + 2657205 y  - 94517766 y
1381             5             3
1382  - 3720087 y  + 26040609 y  + 14348907
1383 @end group
1384 (%i18) resolvante: symetrique$
1385 @group
1386 (%i19) resolvante (x^7 - 7*x + 3, x, x1*x2*x3, [x1, x2, x3]);
1388 " resolvante symetrique " 
1389         35      33         29        28         27        26
1390 (%o19) y   - 7 y   - 1029 y   + 135 y   + 7203 y   - 756 y
1392          24           23          22            21           20
1393  + 1323 y   + 352947 y   - 46305 y   - 2463339 y   + 324135 y
1395           19           18             17              15
1396  - 30618 y   - 453789 y   - 40246444 y   + 282225202 y
1398              14              12             11            10
1399  - 44274492 y   + 155098503 y   + 12252303 y   + 2893401 y
1401               9            8            7             6
1402  - 171532242 y  + 6751269 y  + 2657205 y  - 94517766 y
1404             5             3
1405  - 3720087 y  + 26040609 y  + 14348907
1406 @end group
1407 (%i20) resolvante: cayley$
1408 @group
1409 (%i21) resolvante (x^5 - 4*x^2 + x + 1, x, a, []);
1411 " resolvante de Cayley "
1412         6       5         4          3            2
1413 (%o21) x  - 40 x  + 4080 x  - 92928 x  + 3772160 x  + 37880832 x
1415                                                        + 93392896
1416 @end group
1417 @end example
1419 For the Cayley resolvent, the 2 last arguments are neutral and the input
1420 polynomial must necessarily be of degree 5.
1422 See also:
1423 @flushleft
1424 @code{resolvante_bipartite}, @code{resolvante_produit_sym},
1425 @code{resolvante_unitaire}, @code{resolvante_alternee1}, @code{resolvante_klein}, 
1426 @code{resolvante_klein3}, @code{resolvante_vierer}, @code{resolvante_diedrale}. 
1427 @end flushleft
1429 @c @opencatbox
1430 @c @category{Package sym}
1431 @c @closecatbox
1432 @end deffn
1434 @c -----------------------------------------------------------------------------
1435 @deffn {Function} resolvante_alternee1 (@var{P}, @var{x})
1437 calculates the transformation
1438 @code{@var{P}(@var{x})} of degree @var{n} by the function
1439 @iftex
1440 @math{\prod_{1\leq i<j\leq n-1} (x_i-x_j)}.
1441 @end iftex
1442 @ifnottex
1443 @math{product(x_i - x_j, 1 <= i < j <= n - 1)}.
1444 @end ifnottex
1446 See also:
1447 @flushleft
1448 @code{resolvante_produit_sym}, @code{resolvante_unitaire},
1449 @code{resolvante} , @code{resolvante_klein}, @code{resolvante_klein3},
1450 @code{resolvante_vierer}, @code{resolvante_diedrale}, @code{resolvante_bipartite}.
1451 @end flushleft
1453 @c @opencatbox
1454 @c @category{Package sym}
1455 @c @closecatbox
1456 @end deffn
1458 @c -----------------------------------------------------------------------------
1459 @deffn {Function} resolvante_bipartite (@var{P}, @var{x})
1461 calculates the transformation of
1462 @code{@var{P}(@var{x})} of even degree @var{n} by the function 
1463 @iftex
1464 @math{x_1 x_2 \cdots x_{n/2} + x_{n/2+1}\cdots x_n}.
1465 @end iftex
1466 @c UNFORTUNATELY TEXINFO DOES NOT HAVE A NOTION OF "@ELSE"
1467 @c SO IT IS NECESSARY TO REPEAT THE FOLLOWING NON-TEX STUFF FOR INFO AND FOR HTML ... SIGH
1468 @ifnottex
1469 @math{x_1 x_2 ... x_[n/2] + x_[n/2 + 1] ... x_n}.
1470 @end ifnottex
1472 See also:
1473 @flushleft
1474 @code{resolvante_produit_sym}, @code{resolvante_unitaire},
1475 @code{resolvante} , @code{resolvante_klein}, @code{resolvante_klein3},
1476 @code{resolvante_vierer}, @code{resolvante_diedrale}, @code{resolvante_alternee1}.
1477 @end flushleft
1479 @c GENERATED FROM THE FOLLOWING
1480 @c resolvante_bipartite (x^6 + 108, x);
1481 @example
1482 @group
1483 (%i1) resolvante_bipartite (x^6 + 108, x);
1484               10        8           6             4
1485 (%o1)        y   - 972 y  + 314928 y  - 34012224 y
1486 @end group
1487 @end example
1489 See also:
1490 @flushleft
1491 @code{resolvante_produit_sym}, @code{resolvante_unitaire},
1492 @code{resolvante}, @code{resolvante_klein}, @code{resolvante_klein3},
1493 @code{resolvante_vierer}, @code{resolvante_diedrale},
1494 @code{resolvante_alternee1}.
1495 @end flushleft
1497 @c @opencatbox
1498 @c @category{Package sym}
1499 @c @closecatbox
1500 @end deffn
1502 @c -----------------------------------------------------------------------------
1503 @deffn {Function} resolvante_diedrale (@var{P}, @var{x})
1505 calculates the transformation of @code{@var{P}(@var{x})} by the function
1506 @code{@var{x_1} @var{x_2} + @var{x_3} @var{x_4}}.
1508 @c GENERATED FROM THE FOLLOWING
1509 @c resolvante_diedrale (x^5 - 3*x^4 + 1, x);
1510 @example
1511 @group
1512 (%i1) resolvante_diedrale (x^5 - 3*x^4 + 1, x);
1513        15       12       11       10        9         8         7
1514 (%o1) x   - 21 x   - 81 x   - 21 x   + 207 x  + 1134 x  + 2331 x
1516         6         5          4          3          2
1517  - 945 x  - 4970 x  - 18333 x  - 29079 x  - 20745 x  - 25326 x
1519  - 697
1520 @end group
1521 @end example
1523 See also:
1524 @flushleft
1525 @code{resolvante_produit_sym}, @code{resolvante_unitaire},
1526 @code{resolvante_alternee1}, @code{resolvante_klein}, @code{resolvante_klein3},
1527 @code{resolvante_vierer}, @code{resolvante}.
1528 @end flushleft
1530 @c @opencatbox
1531 @c @category{Package sym}
1532 @c @closecatbox
1533 @end deffn
1535 @c -----------------------------------------------------------------------------
1536 @deffn {Function} resolvante_klein (@var{P}, @var{x})
1538 calculates the transformation of @code{@var{P}(@var{x})} by the function
1539 @code{@var{x_1} @var{x_2} @var{x_4} + @var{x_4}}.
1541 See also:
1542 @flushleft
1543 @code{resolvante_produit_sym}, @code{resolvante_unitaire},
1544 @code{resolvante_alternee1}, @code{resolvante}, @code{resolvante_klein3},
1545 @code{resolvante_vierer}, @code{resolvante_diedrale}.
1546 @end flushleft
1548 @c @opencatbox
1549 @c @category{Package sym}
1550 @c @closecatbox
1551 @end deffn
1553 @c -----------------------------------------------------------------------------
1554 @deffn {Function} resolvante_klein3 (@var{P}, @var{x})
1556 calculates the transformation of @code{@var{P}(@var{x})} by the function
1557 @code{@var{x_1} @var{x_2} @var{x_4} + @var{x_4}}.
1559 See also:
1560 @flushleft
1561 @code{resolvante_produit_sym}, @code{resolvante_unitaire},
1562 @code{resolvante_alternee1}, @code{resolvante_klein}, @code{resolvante},
1563 @code{resolvante_vierer}, @code{resolvante_diedrale}.
1564 @end flushleft
1566 @c @opencatbox
1567 @c @category{Package sym}
1568 @c @closecatbox
1569 @end deffn
1571 @c -----------------------------------------------------------------------------
1572 @deffn {Function} resolvante_produit_sym (@var{P}, @var{x})
1574 calculates the list of all product resolvents of the polynomial
1575 @code{@var{P}(@var{x})}.
1577 @c GENERATED FROM THE FOLLOWING
1578 @c resolvante_produit_sym (x^5 + 3*x^4 + 2*x - 1, x);
1579 @c resolvante: produit$
1580 @c resolvante (x^5 + 3*x^4 + 2*x - 1, x, a*b*c, [a, b, c]);
1581 @example
1582 @group
1583 (%i1) resolvante_produit_sym (x^5 + 3*x^4 + 2*x - 1, x);
1584         5      4             10      8       7       6       5
1585 (%o1) [y  + 3 y  + 2 y - 1, y   - 2 y  - 21 y  - 31 y  - 14 y
1587     4       3      2       10      8       7    6       5       4
1588  - y  + 14 y  + 3 y  + 1, y   + 3 y  + 14 y  - y  - 14 y  - 31 y
1590        3      2       5      4
1591  - 21 y  - 2 y  + 1, y  - 2 y  - 3 y - 1, y - 1]
1592 @end group
1593 (%i2) resolvante: produit$
1594 @group
1595 (%i3) resolvante (x^5 + 3*x^4 + 2*x - 1, x, a*b*c, [a, b, c]);
1597 " resolvante produit "
1598        10      8       7    6        5       4       3     2
1599 (%o3) y   + 3 y  + 14 y  - y  - 14 y  - 31 y  - 21 y  - 2 y  + 1
1600 @end group
1601 @end example
1602 @c INPUT %i3 TICKLES A MINOR BUG IN resolvante: 
1603 @c " resolvante produit " IS PRINTED FROM SOMEWHERE IN THE BOWELS OF resolvante
1604 @c AND IT GOOFS UP THE DISPLAY OF THE EXPONENTS OF %o3 -- I THREW IN A LINE BREAK TO ADJUST
1606 See also:
1607 @flushleft
1608 @code{resolvante}, @code{resolvante_unitaire},
1609 @code{resolvante_alternee1}, @code{resolvante_klein},
1610 @code{resolvante_klein3}, @code{resolvante_vierer},
1611 @code{resolvante_diedrale}.
1612 @end flushleft
1614 @c @opencatbox
1615 @c @category{Package sym}
1616 @c @closecatbox
1617 @end deffn
1619 @c -----------------------------------------------------------------------------
1620 @deffn {Function} resolvante_unitaire (@var{P}, @var{Q}, @var{x})
1622 computes the resolvent of the polynomial @code{@var{P}(@var{x})} by the
1623 polynomial @code{@var{Q}(@var{x})}. 
1625 See also:
1626 @flushleft
1627 @code{resolvante_produit_sym}, @code{resolvante},
1628 @code{resolvante_alternee1}, @code{resolvante_klein}, @code{resolvante_klein3},
1629 @code{resolvante_vierer}, @code{resolvante_diedrale}.
1630 @end flushleft
1632 @c @opencatbox
1633 @c @category{Package sym}
1634 @c @closecatbox
1635 @end deffn
1637 @c -----------------------------------------------------------------------------
1638 @deffn {Function} resolvante_vierer (@var{P}, @var{x})
1640 computes the transformation of
1641 @code{@var{P}(@var{x})} by the function @code{@var{x_1} @var{x_2} -
1642 @var{x_3} @var{x_4}}.
1644 See also:
1645 @flushleft
1646 @code{resolvante_produit_sym}, @code{resolvante_unitaire},
1647 @code{resolvante_alternee1}, @code{resolvante_klein}, @code{resolvante_klein3},
1648 @code{resolvante}, @code{resolvante_diedrale}.
1649 @end flushleft
1651 @c @opencatbox
1652 @c @category{Package sym}
1653 @c @closecatbox
1654 @end deffn
1656 @c -----------------------------------------------------------------------------
1657 @subsection Miscellaneous
1659 @c -----------------------------------------------------------------------------
1660 @deffn {Function} multinomial (@var{r}, @var{part})
1662 where @var{r} is the weight of the partition @var{part}.  This function
1663 returns the associate multinomial coefficient: if the parts of
1664 @var{part} are @var{i_1}, @var{i_2}, ..., @var{i_k}, the result is
1665 @code{@var{r}!/(@var{i_1}! @var{i_2}! ... @var{i_k}!)}.
1667 @c @opencatbox
1668 @c @category{Package sym}
1669 @c @closecatbox
1670 @end deffn
1672 @c -----------------------------------------------------------------------------
1673 @deffn {Function} permut (@var{L})
1675 returns the list of permutations of the list @var{L}.
1677 @c @opencatbox
1678 @c @category{Package sym} @category{Lists}
1679 @c @closecatbox
1680 @end deffn
1682 @c --- End of file symmetries.de.texi ------------------------------------------