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