1 @c end concepts Symmetries
4 * Introduction to Symmetries::
5 * Functions and Variables for Symmetries::
8 @node Introduction to Symmetries, Functions and Variables for Symmetries, Package sym, Package sym
9 @section Introduction to Symmetries
11 @code{sym} is a package for working with symmetric groups of polynomials.
14 It was written for Macsyma-Symbolics by Annick Valibouze (@url{https://web.archive.org/web/20061125035035/http://www-calfor.lip6.fr/~avb/}).
15 The algorithms are described in the following papers:
18 It was written for Macsyma-Symbolics by Annick Valibouze@footnote{@url{https://web.archive.org/web/20061125035035/http://www-calfor.lip6.fr/~avb/}}.
19 The algorithms are described in the following papers:
25 Fonctions sym@'etriques et changements de bases. Annick Valibouze.
26 EUROCAL'87 (Leipzig, 1987), 323--332, Lecture Notes in Comput. Sci 378.
27 Springer, Berlin, 1989.@*
28 @url{http://www.stix.polytechnique.fr/publications/1984-1994.html}
30 @item R@'esolvantes et fonctions sym@'etriques. Annick Valibouze.
31 Proceedings of the ACM-SIGSAM 1989 International Symposium on Symbolic
32 and Algebraic Computation, ISSAC'89 (Portland, Oregon).
33 ACM Press, 390-399, 1989.@*
34 @url{https://web.archive.org/web/20061125035035/http://www-calfor.lip6.fr/~avb/DonneesTelechargeables/MesArticles/issac89ACMValibouze.pdf}
36 @item Symbolic computation with symmetric polynomials, an extension to Macsyma.
37 Annick Valibouze. Computers and Mathematics (MIT, USA, June 13-17, 1989),
38 Springer-Verlag, New York Berlin, 308-320, 1989.@*
39 @url{http://www.stix.polytechnique.fr/publications/1984-1994.html}
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.
49 Fonctions sym@'etriques et changements de bases
50 @footnote{@url{www.stix.polytechnique.fr/publications/1984-1994.html}}.
51 Annick Valibouze. EUROCAL'87 (Leipzig, 1987), 323--332, Lecture Notes in Comput. Sci 378.
52 Springer, Berlin, 1989.
54 @item R@'esolvantes et fonctions sym@'etriques
55 @footnote{@url{https://web.archive.org/web/20061125035035/http://www-calfor.lip6.fr/~avb/DonneesTelechargeables/MesArticles/issac89ACMValibouze.pdf}}.
56 Annick Valibouze. Proceedings of the ACM-SIGSAM 1989 International Symposium on Symbolic
57 and Algebraic Computation, ISSAC'89 (Portland, Oregon). ACM Press, 390-399, 1989.
59 @item Symbolic computation with symmetric polynomials, an extension to Macsyma
60 @footnote{@url{www.stix.polytechnique.fr/publications/1984-1994.html}}.
61 Annick Valibouze. Computers and Mathematics (MIT, USA, June 13-17, 1989),
62 Springer-Verlag, New York Berlin, 308-320, 1989.
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.
69 @opencatbox{Categories:}
70 @category{Group theory}
71 @category{Polynomials}
72 @category{Share packages}
73 @category{Package sym}
77 @node Functions and Variables for Symmetries, , Introduction to Symmetries, Package sym
78 @section Functions and Variables for Symmetries
81 @subsection Changing bases
84 @deffn {Function} comp2pui (@var{n}, @var{L})
85 implements 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
87 list @var{L} contains fewer than @var{n+1} elements, it will be completed with
88 formal values of the type @var{h1}, @var{h2}, etc. If the first element
89 of the list @var{L} exists, it specifies the size of the alphabet,
90 otherwise the size is set to @var{n}.
92 @c GENERATED FROM THE FOLLOWING
93 @c comp2pui (3, [4, g]);
96 (%i1) comp2pui (3, [4, g]);
98 (%o1) [4, g, 2 h2 - g , 3 h3 - g h2 + g (g - 2 h2)]
102 @opencatbox{Categories:}
103 @category{Package sym}
108 @deffn {Function} ele2pui (@var{m}, @var{L})
109 goes from the elementary symmetric functions to the complete functions.
110 Similar to @code{comp2ele} and @code{comp2pui}.
112 Other functions for changing bases: @code{comp2ele}.
114 @opencatbox{Categories:}
115 @category{Package sym}
120 @deffn {Function} ele2comp (@var{m}, @var{L})
121 Goes from the elementary symmetric functions to the compete functions.
122 Similar to @code{comp2ele} and @code{comp2pui}.
124 Other functions for changing bases: @code{comp2ele}.
126 @opencatbox{Categories:}
127 @category{Package sym}
132 @deffn {Function} elem (@var{ele}, @var{sym}, @var{lvar})
133 decomposes the symmetric polynomial @var{sym}, in the variables
134 contained in the list @var{lvar}, in terms of the elementary symmetric
135 functions 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
137 size will be the degree of the polynomial @var{sym}. If values are
138 missing 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
140 three different forms: contracted (@code{elem} should then be 1, its
141 default value), partitioned (@code{elem} should be 3), or extended
142 (i.e. the entire polynomial, and @code{elem} should then be 2). The
143 function @code{pui} is used in the same way.
145 On an alphabet of size 3 with @var{e1}, the first elementary symmetric
146 function, with value 7, the symmetric polynomial in 3 variables whose
147 contracted 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:
150 @c GENERATED FROM THE FOLLOWING
151 @c elem ([3, 7], x^4 - 2*x*y, [x, y]);
155 (%i1) elem ([3, 7], x^4 - 2*x*y, [x, y]);
156 (%o1) 7 (e3 - 7 e2 + 7 (49 - e2)) + 21 e3
158 + (- 2 (49 - e2) - 2) e2
163 (%o2) 28 e3 + 2 e2 - 198 e2 + 2401
168 Other functions for changing bases: @code{comp2ele}.
170 @opencatbox{Categories:}
171 @category{Package sym}
176 @deffn {Function} mon2schur (@var{L})
177 The list @var{L} represents the Schur function @math{S_L}: we have
179 @math{L = [i_1,i_2, \ldots, i_q]}, with @math{i_1 \le i_2 \le \ldots \le i_q}.
180 The Schur function @math{S_{i_1,i_2, \ldots, i_q}} is the minor
181 of the infinite matrix @math{h_{i-j}}, @math{i \ge 1, j \ge 1},
182 consisting of the @math{q} first rows and the columns @math{i_1+1,
183 i_2+2, \ldots, i_q+q}.
186 @math{L = [i_1, i_2, ..., i_q]}, with @math{i_1 <= i_2 <= ... <= i_q}.
187 The Schur function @math{S_[i_1, i_2, ..., i_q]} is the minor
188 of the infinite matrix @math{h_[i-j]}, @math{i <= 1, j <= 1},
189 consisting of the @math{q} first rows and the columns @math{1 + i_1,
190 2 + i_2, ..., q + i_q}.
193 This Schur function can be written in terms of monomials by using
194 @mref{treinat} and @mrefdot{kostka} The form returned is a symmetric
195 polynomial in a contracted representation in the variables
203 @c GENERATED FROM THE FOLLOWING
204 @c mon2schur ([1, 1, 1]);
206 @c mon2schur ([1, 2]);
209 (%i1) mon2schur ([1, 1, 1]);
213 (%i2) mon2schur ([3]);
215 (%o2) x1 x2 x3 + x1 x2 + x1
218 (%i3) mon2schur ([1, 2]);
220 (%o3) 2 x1 x2 x3 + x1 x2
225 which means that for 3 variables this gives:
227 @c UM, FROM WHAT ARGUMENTS WAS THE FOLLOWING GENERATED ?? (original comment)
230 2 x1 x2 x3 + x1^2 x2 + x2^2 x1 + x1^2 x3 + x3^2 x1
235 Other functions for changing bases: @code{comp2ele}.
237 @opencatbox{Categories:}
238 @category{Package sym}
243 @deffn {Function} multi_elem (@var{l_elem}, @var{multi_pc}, @var{l_var})
244 decomposes 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
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]]);
254 (%i1) multi_elem ([[2, e1, e2], [2, f1, f2]], a*x + a^2 + x^3,
257 (%o1) - 2 f2 + f1 (f1 + e1) - 3 e1 e2 + e1
262 (%o2) - 2 f2 + f1 + e1 f1 - 3 e1 e2 + e1
266 Other functions for changing bases: @code{comp2ele}.
268 @opencatbox{Categories:}
269 @category{Package sym}
274 @c WHAT ARE THE ARGUMENTS FOR THIS FUNCTION ?? (original comment)
276 @deffn {Function} multi_pui
277 is to the function @code{pui} what the function @code{multi_elem} is to
278 the function @code{elem}.
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]]);
284 (%i1) multi_pui ([[2, p1, p2], [2, t1, t2]], a*x + a^2 + x^3,
288 (%o1) t2 + p1 t1 + ------- - ---
293 @opencatbox{Categories:}
294 @category{Package sym}
299 @c HMM, pui IS A VARIABLE AS WELL. It's a function, for sure.
301 @deffn {Function} pui (@var{L}, @var{sym}, @var{lvar})
302 decomposes the symmetric polynomial @var{sym}, in the variables in the
303 list @var{lvar}, in terms of the power functions in the list @var{L}.
304 If the first element of @var{L} is given, it will be the size of the
305 alphabet, 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
307 the type @var{p1}, @var{p2} , etc. will be added. The polynomial
308 @var{sym} may be given in three different forms: contracted (@code{elem}
309 should then be 1, its default value), partitioned (@code{elem} should be
310 3), or extended (i.e. the entire polynomial, and @code{elem} should then
311 be 2). The function @code{pui} is used in the same way.
313 @c GENERATED FROM THE FOLLOWING
315 @c pui ([3, a, b], u*x*y*z, [x, y, z]);
323 (%i2) pui ([3, a, b], u*x*y*z, [x, y, z]);
325 a (a - b) u (a b - p3) u
326 (%o2) ------------ - ------------
332 (2 p3 - 3 a b + a ) u
333 (%o3) ---------------------
338 Other functions for changing bases: @code{comp2ele}.
340 @opencatbox{Categories:}
341 @category{Package sym}
347 @deffn {Function} pui2comp (@var{n}, @var{lpui})
348 renders the list of the first @var{n} complete functions (with the
349 length 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},
351 otherwise it is its first element (as in @code{comp2ele} and
354 @c GENERATED FROM THE FOLLOWING
356 @c pui2comp (3, [2, a1]);
360 (%i1) pui2comp (2, []);
363 (%o1) [2, p1, --------]
367 (%i2) pui2comp (3, [2, a1]);
370 2 p3 + ------------- + a1 p2
372 (%o2) [2, a1, --------, --------------------------]
378 p2 + a1 2 p3 + 3 a1 p2 + a1
379 (%o3) [2, a1, --------, --------------------]
384 Other functions for changing bases: @code{comp2ele}.
386 @opencatbox{Categories:}
387 @category{Package sym}
393 @deffn {Function} pui2ele (@var{n}, @var{lpui})
394 effects the passage from power functions to the elementary symmetric functions.
395 If the flag @code{pui2ele} is @code{girard}, it will return the list of
396 elementary 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.
399 Other functions for changing bases: @code{comp2ele}.
401 @opencatbox{Categories:}
402 @category{Package sym}
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
412 @c GENERATED FROM THE FOLLOWING
413 @c puireduc (3, [2]);
416 (%i1) puireduc (3, [2]);
419 (%o1) [2, p1, p2, p1 p2 - -------------]
426 (%o2) [2, p1, p2, -------------]
431 @opencatbox{Categories:}
432 @category{Package sym}
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
439 of these variables represents a complete symmetric function. In
440 @var{l_var} the @var{i}-th complete symmetric function is represented by
441 the 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
446 @c GENERATED FROM THE FOLLOWING
447 @c schur2comp (h1*h2 - h3, [h1, h2, h3]);
448 @c schur2comp (a*h3, [h3]);
451 (%i1) schur2comp (h1*h2 - h3, [h1, h2, h3]);
456 (%i2) schur2comp (a*h3, [h3]);
462 @opencatbox{Categories:}
463 @category{Package sym}
471 @subsection Changing representations
473 @deffn {Function} cont2part (@var{pc}, @var{lvar})
474 returns the partitioned polynomial associated to the contracted form
475 @var{pc} whose variables are in @var{lvar}.
477 @c GENERATED FROM THE FOLLOWING
478 @c pc: 2*a^3*b*x^4*y + x^5;
479 @c cont2part (pc, [x, y]);
482 (%i1) pc: 2*a^3*b*x^4*y + x^5;
487 (%i2) cont2part (pc, [x, y]);
489 (%o2) [[1, 5, 0], [2 a b, 4, 1]]
493 @opencatbox{Categories:}
494 @category{Package sym}
500 @deffn {Function} contract (@var{psym}, @var{lvar})
501 returns a contracted form (i.e. a monomial orbit under the action of the
503 symmetric group) of the polynomial @var{psym} in the variables contained
504 in the list @var{lvar}. The function @code{explose} performs the
505 inverse operation. The function @code{tcontract} tests the symmetry of
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]);
513 (%i1) psym: explose (2*a^3*b*x^4*y, [x, y, z]);
515 (%o1) 2 a b y z + 2 a b x z + 2 a b y z + 2 a b x z
518 + 2 a b x y + 2 a b x y
521 (%i2) contract (psym, [x, y, z]);
527 @opencatbox{Categories:}
528 @category{Package sym}
533 @deffn {Function} explose (@var{pc}, @var{lvar})
534 returns the symmetric polynomial associated with the contracted form
535 @var{pc}. The list @var{lvar} contains the variables.
537 @c GENERATED FROM THE FOLLOWING
538 @c explose (a*x + 1, [x, y, z]);
541 (%i1) explose (a*x + 1, [x, y, z]);
542 (%o1) a z + a y + a x + 1
546 @opencatbox{Categories:}
547 @category{Package sym}
552 @deffn {Function} part2cont (@var{ppart}, @var{lvar})
553 goes from the partitioned form to the contracted form of a symmetric polynomial.
554 The contracted form is rendered with the variables in @var{lvar}.
556 @c GENERATED FROM THE FOLLOWING
557 @c part2cont ([[2*a^3*b, 4, 1]], [x, y]);
560 (%i1) part2cont ([[2*a^3*b, 4, 1]], [x, y]);
566 @opencatbox{Categories:}
567 @category{Package sym}
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 returns its partitioned representation.
577 @c GENERATED FROM THE FOLLOWING
578 @c partpol (-a*(x + y) + 3*x*y, [x, y]);
581 (%i1) partpol (-a*(x + y) + 3*x*y, [x, y]);
582 (%o1) [[3, 1, 1], [- a, 1, 0]]
586 @opencatbox{Categories:}
587 @category{Package sym}
592 @deffn {Function} tcontract (@var{pol}, @var{lvar})
593 tests if the polynomial @var{pol} is symmetric in the variables of the
594 list @var{lvar}. If so, it returns a contracted representation like the
595 function @code{contract}.
597 @opencatbox{Categories:}
598 @category{Package sym}
604 @deffn {Function} tpartpol (@var{pol}, @var{lvar})
605 tests if the polynomial @var{pol} is symmetric in the variables of the
606 list @var{lvar}. If so, it returns its partitioned representation like
607 the function @code{partpol}.
609 @opencatbox{Categories:}
610 @category{Package sym}
617 @subsection Groups and orbits
620 @deffn {Function} direct ([@var{p_1}, ..., @var{p_n}], @var{y}, @var{f}, [@var{lvar_1}, ..., @var{lvar_n}])
621 calculates the direct image (see M. Giusti, D. Lazard et A. Valibouze,
622 ISSAC 1988, Rome) associated to the function @var{f}, in the lists of
623 variables @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
625 function @var{f} is important for the calculation. Thus, if the
626 expression for @var{f} does not depend on some variable, it is useless
627 to include this variable, and not including it will also considerably
628 reduce the amount of computation.
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]]);
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]]));
638 (%i1) direct ([z^2 - e1* z + e2, z^2 - f1* z + f2],
639 z, b*v + a*u, [[u, v], [a, b]]);
644 - 4 e2 f2 - (e1 - 2 e2) (f1 - 2 f2) + e1 f1
645 + -----------------------------------------------
651 (%o2) y - e1 f1 y + (e1 - 4 e2) f2 + e2 f1
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]]));
657 (%o3) y - 2 e1 f1 y + ((2 e1 - 6 e2) f2 + (2 e2 + e1 ) f1 ) y
660 + ((9 e3 + 5 e1 e2 - 2 e1 ) f1 f2 + (- 2 e3 - 2 e1 e2) f1 ) y
663 + ((9 e2 - 6 e1 e2 + e1 ) f2
666 + (- 9 e1 e3 - 6 e2 + 3 e1 e2) f1 f2 + (2 e1 e3 + e2 ) f1 )
669 y + (((9 e1 - 27 e2) e3 + 3 e1 e2 - e1 e2) f1 f2
672 + ((15 e2 - 2 e1 ) e3 - e1 e2 ) f1 f2 - 2 e2 e3 f1 ) y
675 + (- 27 e3 + (18 e1 e2 - 4 e1 ) e3 - 4 e2 + e1 e2 ) f2
678 + (27 e3 + (e1 - 9 e1 e2) e3 + e2 ) f1 f2
681 + (e1 e2 e3 - 9 e3 ) f1 f2 + e3 f1
685 Finding the polynomial whose roots are the sums @math{a+u} where @math{a}
686 is a root of @math{z^2 - e_1 z + e_2} and @math{u} is a root of @math{z^2 -
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]]));
694 (%i1) ratsimp (direct ([z^2 - e1* z + e2, z^2 - f1* z + f2],
695 z, a + u, [[u], [a]]));
697 (%o1) y + (- 2 f1 - 2 e1) y + (2 f2 + f1 + 3 e1 f1 + 2 e2
700 + e1 ) y + ((- 2 f1 - 2 e1) f2 - e1 f1 + (- 2 e2 - e1 ) f1
703 - 2 e1 e2) y + f2 + (e1 f1 - 2 e2 + e1 ) f2 + e2 f1 + e1 e2 f1
710 @code{direct} accepts two flags: @code{elementaires} and
711 @code{puissances} (default) which allow decomposing the symmetric
712 polynomials appearing in the calculation into elementary symmetric
713 functions, or power functions, respectively.
715 Functions of @code{sym} used in this function:
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}).
721 @opencatbox{Categories:}
722 @category{Package sym}
729 @deffn {Function} multi_orbit (@var{P}, [@var{lvar_1}, @var{lvar_2},..., @var{lvar_p}])
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
733 orbit of the polynomial @var{P} under the action of the product of the
734 symmetric groups of the sets of variables represented in these @var{p}
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]]);
742 (%i1) multi_orbit (a*x + b*y, [[x, y], [a, b]]);
743 (%o1) [b y + a x, a y + b x]
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]
751 Also see: @code{orbit} for the action of a single symmetric group.
753 @opencatbox{Categories:}
754 @category{Package sym}
761 @deffn {Function} multsym (@var{ppart_1}, @var{ppart_2}, @var{n})
762 returns the product of the two symmetric polynomials in @var{n}
763 variables by working only modulo the action of the symmetric group of
764 order @var{n}. The polynomials are in their partitioned form.
766 Given 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,
768 1], [2, 1, 1]]} and @code{[[5, 2]]}, their product will be
770 @c GENERATED FROM THE FOLLOWING
771 @c multsym ([[3, 1], [2, 1, 1]], [[5, 2]], 2);
774 (%i1) multsym ([[3, 1], [2, 1, 1]], [[5, 2]], 2);
775 (%o1) [[10, 3, 1], [15, 3, 0], [15, 2, 1]]
779 that is @code{10*(x^3*y + y^3*x) + 15*(x^2*y + y^2*x) + 15*(x^3 + y^3)}.
781 Functions for changing the representations of a symmetric polynomial:
783 @code{contract}, @code{cont2part}, @code{explose}, @code{part2cont},
784 @code{partpol}, @code{tcontract}, @code{tpartpol}.
786 @opencatbox{Categories:}
787 @category{Package sym}
793 @deffn {Function} orbit (@var{P}, @var{lvar})
794 computes 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
796 variables in the list @var{lvar}.
798 @c GENERATED FROM THE FOLLOWING
799 @c orbit (a*x + b*y, [x, y]);
800 @c orbit (2*x + x^2, [x, y]);
803 (%i1) orbit (a*x + b*y, [x, y]);
804 (%o1) [a y + b x, b y + a x]
807 (%i2) orbit (2*x + x^2, [x, y]);
809 (%o2) [y + 2 y, x + 2 x]
813 See also @mref{multi_orbit} for the action of a product of symmetric
814 groups on a polynomial.
816 @opencatbox{Categories:}
817 @category{Package sym}
823 @deffn {Function} pui_direct (@var{orbite}, [@var{lvar_1}, ..., @var{lvar_n}], [@var{d_1}, @var{d_2}, ..., @var{d_n}])
825 Let @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
828 degree @var{c_1}, ..., @var{c_n}. This group acts naturally on @var{f}.
829 The list @var{orbite} is the orbit, denoted @code{@var{SC}(@var{f})}, of
830 the function @var{f} under the action of @var{SC}. (This list may be
831 obtained by the function @code{multi_orbit}.) The @var{di} are integers
834 $c_1 \le d_1, c_2 \le d_2, \ldots, c_n \le d_n$.
837 @math{c_1 <= d_1, c_2 <= d_2, ..., c_n <= d_n}.
841 Let @var{SD} be the product of the symmetric groups @math{S_{d_1} \times
842 S_{d_2} \times \cdots \times S_{d_n}}.
845 Let @var{SD} be the product of the symmetric groups @math{S_[d_1] x
846 S_[d_2] x ... x S_[d_n]}.
848 The function @code{pui_direct} returns
849 the first @var{n} power functions of @code{@var{SD}(@var{f})} deduced
850 from the power functions of @code{@var{SC}(@var{f})}, where @var{n} is
851 the size of @code{@var{SD}(@var{f})}.
853 The result is in multi-contracted form w.r.t. @var{SD}, i.e. only one
854 element is kept per orbit, under the action of @var{SD}.
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]);
863 (%i1) l: [[x, y], [a, b]];
864 (%o1) [[x, y], [a, b]]
867 (%i2) pui_direct (multi_orbit (a*x + b*y, l), l, [2, 2]);
869 (%o2) [a x, 4 a b x y + a x ]
872 (%i3) pui_direct (multi_orbit (a*x + b*y, l), l, [3, 2]);
874 (%o3) [2 a x, 4 a b x y + 2 a x , 3 a b x y + 2 a x ,
877 12 a b x y + 4 a b x y + 2 a x ,
880 10 a b x y + 5 a b x y + 2 a x ,
882 3 3 3 3 4 2 4 2 5 5 6 6
883 40 a b x y + 15 a b x y + 6 a b x y + 2 a x ]
886 (%i4) pui_direct ([y + x + 2*c, y + x + 2*b, y + x + 2*a],
887 [[x, y], [a, b, c]], [2, 3]);
889 (%o4) [3 x + 2 a, 6 x y + 3 x + 4 a x + 4 a ,
892 9 x y + 12 a x y + 3 x + 6 a x + 12 a x + 8 a ]
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]);
899 @opencatbox{Categories:}
900 @category{Package sym}
909 @subsection Partitions
911 @deffn {Function} kostka (@var{part_1}, @var{part_2})
912 written by P. Esperet, calculates the Kostka number of the partition
913 @var{part_1} and @var{part_2}.
915 @c GENERATED FROM THE FOLLOWING
916 @c kostka ([3, 3, 3], [2, 2, 2, 1, 1, 1]);
919 (%i1) kostka ([3, 3, 3], [2, 2, 2, 1, 1, 1]);
924 @opencatbox{Categories:}
925 @category{Package sym}
931 @deffn {Function} lgtreillis (@var{n}, @var{m})
932 returns the list of partitions of weight @var{n} and length @var{m}.
934 @c GENERATED FROM THE FOLLOWING
935 @c lgtreillis (4, 2);
938 (%i1) lgtreillis (4, 2);
939 (%o1) [[3, 1], [2, 2]]
943 Also see: @mrefcomma{ltreillis} @mref{treillis} and @mrefdot{treinat}
945 @opencatbox{Categories:}
946 @category{Package sym}
952 @deffn {Function} ltreillis (@var{n}, @var{m})
953 returns the list of partitions of weight @var{n} and length less than or
956 @c GENERATED FROM THE FOLLOWING
960 (%i1) ltreillis (4, 2);
961 (%o1) [[4, 0], [3, 1], [2, 2]]
965 Also see: @mrefcomma{lgtreillis} @mref{treillis} and @mrefdot{treinat}
967 @opencatbox{Categories:}
968 @category{Package sym}
974 @deffn {Function} treillis (@var{n})
975 returns all partitions of weight @var{n}.
977 @c GENERATED FROM THE FOLLOWING
982 (%o1) [[4], [3, 1], [2, 2], [2, 1, 1], [1, 1, 1, 1]]
986 See also: @mrefcomma{lgtreillis} @mref{ltreillis} and @mrefdot{treinat}
988 @opencatbox{Categories:}
989 @category{Package sym}
995 @deffn {Function} treinat (@var{part})
996 returns the list of partitions inferior to the partition @var{part} w.r.t.
999 @c GENERATED FROM THE FOLLOWING
1001 @c treinat ([1, 1, 1, 1, 1]);
1002 @c treinat ([3, 2]);
1005 (%i1) treinat ([5]);
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],
1015 (%i3) treinat ([3, 2]);
1016 (%o3) [[5], [4, 1], [3, 2]]
1020 See also: @mrefcomma{lgtreillis} @mref{ltreillis} and @mrefdot{treillis}
1022 @opencatbox{Categories:}
1023 @category{Package sym}
1031 @subsection Polynomials and their roots
1033 @anchor{ele2polynome}
1034 @deffn {Function} ele2polynome (@var{L}, @var{z})
1035 returns the polynomial in @var{z} s.t. the elementary symmetric
1036 functions 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
1038 polynomial and @var{e_i} the @var{i}-th elementary symmetric function.
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);
1046 (%i1) ele2polynome ([2, e1, e2], z);
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]
1055 (%i3) ele2polynome ([7, 0, -14, 0, 56, 0, -56, -22], x);
1057 (%o3) x - 14 x + 56 x - 56 x + 22
1061 The inverse: @code{polynome2ele (@var{P}, @var{z})}.
1064 @code{polynome2ele}, @code{pui2polynome}.
1066 @opencatbox{Categories:}
1067 @category{Package sym}
1072 @anchor{polynome2ele}
1073 @deffn {Function} polynome2ele (@var{P}, @var{x})
1074 gives the list @code{@var{l} = [@var{n}, @var{e_1}, ..., @var{e_n}]}
1075 where @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
1077 of the roots of @var{P}.
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);
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]
1088 (%i2) ele2polynome ([7, 0, -14, 0, 56, 0, -56, -22], x);
1090 (%o2) x - 14 x + 56 x - 56 x + 22
1094 The inverse: @code{ele2polynome (@var{l}, @var{x})}
1096 @opencatbox{Categories:}
1097 @category{Package sym}
1103 @deffn {Function} prodrac (@var{L}, @var{k})
1104 @var{L} is a list containing the elementary symmetric functions
1105 on a set @var{A}. @code{prodrac} returns the polynomial whose roots
1106 are the @var{k} by @var{k} products of the elements of @var{A}.
1108 Also see @code{somrac}.
1110 @opencatbox{Categories:}
1111 @category{Package sym}
1115 @anchor{pui2polynome}
1116 @deffn {Function} pui2polynome (@var{x}, @var{lpui})
1117 calculates the polynomial in @var{x} whose power functions of the roots
1118 are given in the list @var{lpui}.
1120 @c GENERATED FROM THE FOLLOWING
1121 @c polynome2ele (x^3 - 4*x^2 + 5*x - 1, x);
1123 @c pui2polynome (x, %);
1134 (%i1) polynome2ele (x^3 - 4*x^2 + 5*x - 1, x);
1138 (%i2) ele2pui (3, %);
1142 (%i3) pui2polynome (x, %);
1144 (%o3) x - 4 x + 5 x - 1
1149 @mrefcomma{polynome2ele} @mrefdot{ele2polynome}
1151 @opencatbox{Categories:}
1152 @category{Package sym}
1158 @deffn {Function} somrac (@var{L}, @var{k})
1159 The 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}.
1163 Also see @code{prodrac}.
1165 @opencatbox{Categories:}
1166 @category{Package sym}
1174 @subsection Resolvents
1177 @deffn {Function} resolvante (@var{P}, @var{x}, @var{f}, [@var{x_1},..., @var{x_d}])
1178 calculates the resolvent of the polynomial @var{P} in @var{x} of degree
1179 @code{n >= d} by the function @var{f} expressed in the variables
1180 @var{x_1}, ..., @var{x_d}. For efficiency of computation it is
1181 important to not include in the list @code{[@var{x_1}, ..., @var{x_d}]}
1182 variables which do not appear in the transformation function @var{f}.
1184 To increase the efficiency of the computation one may set flags in
1185 @code{resolvante} so as to use appropriate algorithms:
1187 If the function @var{f} is unitary:
1190 A polynomial in a single variable,
1202 the function of the Cayley resolvent (usable up to degree 5)
1204 @c WHAT IS THIS ILLUSTRATING EXACTLY ??
1207 (x1*x2 + x2*x3 + x3*x4 + x4*x5 + x5*x1 -
1208 (x1*x3 + x3*x5 + x5*x2 + x2*x4 + x4*x1))^2
1214 the flag of @code{resolvante} may be, respectively:
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, []);
1255 (%i1) resolvante: unitaire$
1257 (%i2) resolvante (x^7 - 14*x^5 + 56*x^3 - 56*x + 22, x, x^3 - 1,
1260 " resolvante unitaire " [7, 0, 28, 0, 168, 0, 1120, - 154, 7840,
1261 - 2772, 56448, - 33880,
1263 413952, - 352352, 3076668, - 3363360, 23114112, - 30494464,
1265 175230832, - 267412992, 1338886528, - 2292126760]
1267 [x - 1, x - 2 x + 1, x - 3 x + 3 x - 1,
1269 12 9 6 3 15 12 9 6 3
1270 x - 4 x + 6 x - 4 x + 1, x - 5 x + 10 x - 10 x + 5 x
1273 - 1, x - 6 x + 15 x - 20 x + 15 x - 6 x + 1,
1276 x - 7 x + 21 x - 35 x + 35 x - 21 x + 7 x - 1]
1277 [- 7, 1127, - 6139, 431767, - 5472047, 201692519, - 3603982011]
1279 (%o2) y + 7 y - 539 y - 1841 y + 51443 y + 315133 y
1283 (%i3) resolvante: lineaire$
1285 (%i4) resolvante (x^4 - 1, x, x1 + 2*x2 + 3*x3, [x1, x2, x3]);
1287 " resolvante lineaire "
1289 (%o4) y + 80 y + 7520 y + 1107200 y + 49475840 y
1292 + 344489984 y + 655360000
1294 (%i5) resolvante: general$
1296 (%i6) resolvante (x^4 - 1, x, x1 + 2*x2 + 3*x3, [x1, x2, x3]);
1298 " resolvante generale "
1300 (%o6) y + 80 y + 7520 y + 1107200 y + 49475840 y
1303 + 344489984 y + 655360000
1306 (%i7) resolvante (x^4 - 1, x, x1 + 2*x2 + 3*x3, [x1, x2, x3, x4]);
1308 " resolvante generale "
1310 (%o7) y + 80 y + 7520 y + 1107200 y + 49475840 y
1313 + 344489984 y + 655360000
1316 (%i8) direct ([x^4 - 1], x, x1 + 2*x2 + 3*x3, [[x1, x2, x3]]);
1318 (%o8) y + 80 y + 7520 y + 1107200 y + 49475840 y
1321 + 344489984 y + 655360000
1323 (%i9) resolvante :lineaire$
1325 (%i10) resolvante (x^4 - 1, x, x1 + x2 + x3, [x1, x2, x3]);
1327 " resolvante lineaire "
1331 (%i11) resolvante: symetrique$
1333 (%i12) resolvante (x^4 - 1, x, x1 + x2 + x3, [x1, x2, x3]);
1335 " resolvante symetrique "
1340 (%i13) resolvante (x^4 + x + 1, x, x1 - x2, [x1, x2]);
1342 " resolvante symetrique "
1346 (%i14) resolvante: alternee$
1348 (%i15) resolvante (x^4 + x + 1, x, x1 - x2, [x1, x2]);
1350 " resolvante alternee "
1352 (%o15) y + 8 y + 26 y - 112 y + 216 y + 229
1354 (%i16) resolvante: produit$
1356 (%i17) resolvante (x^7 - 7*x + 3, x, x1*x2*x3, [x1, x2, x3]);
1358 " resolvante produit "
1360 (%o17) y - 7 y - 1029 y + 135 y + 7203 y - 756 y
1363 + 1323 y + 352947 y - 46305 y - 2463339 y + 324135 y
1366 - 30618 y - 453789 y - 40246444 y + 282225202 y
1369 - 44274492 y + 155098503 y + 12252303 y + 2893401 y
1372 - 171532242 y + 6751269 y + 2657205 y - 94517766 y
1375 - 3720087 y + 26040609 y + 14348907
1377 (%i18) resolvante: symetrique$
1379 (%i19) resolvante (x^7 - 7*x + 3, x, x1*x2*x3, [x1, x2, x3]);
1381 " resolvante symetrique "
1383 (%o19) y - 7 y - 1029 y + 135 y + 7203 y - 756 y
1386 + 1323 y + 352947 y - 46305 y - 2463339 y + 324135 y
1389 - 30618 y - 453789 y - 40246444 y + 282225202 y
1392 - 44274492 y + 155098503 y + 12252303 y + 2893401 y
1395 - 171532242 y + 6751269 y + 2657205 y - 94517766 y
1398 - 3720087 y + 26040609 y + 14348907
1400 (%i20) resolvante: cayley$
1402 (%i21) resolvante (x^5 - 4*x^2 + x + 1, x, a, []);
1404 " resolvante de Cayley "
1406 (%o21) x - 40 x + 4080 x - 92928 x + 3772160 x + 37880832 x
1412 For the Cayley resolvent, the 2 last arguments are neutral and the input
1413 polynomial must necessarily be of degree 5.
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}
1422 @opencatbox{Categories:}
1423 @category{Package sym}
1428 @anchor{resolvante_alternee1}
1429 @deffn {Function} resolvante_alternee1 (@var{P}, @var{x})
1430 calculates the transformation
1431 @code{@var{P}(@var{x})} of degree @var{n} by the function
1433 @math{\prod_{1\leq i<j\leq n-1} (x_i-x_j)}.
1436 @math{product(x_i - x_j, 1 <= i < j <= n - 1)}.
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}
1446 @opencatbox{Categories:}
1447 @category{Package sym}
1452 @anchor{resolvante_bipartite}
1453 @deffn {Function} resolvante_bipartite (@var{P}, @var{x})
1454 calculates the transformation of
1455 @code{@var{P}(@var{x})} of even degree @var{n} by the function
1457 @math{x_1 x_2 \cdots x_{n/2} + x_{n/2+1}\cdots x_n}.
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
1462 @math{x_1 x_2 ... x_[n/2] + x_[n/2 + 1] ... x_n}.
1465 @c GENERATED FROM THE FOLLOWING
1466 @c resolvante_bipartite (x^6 + 108, x);
1469 (%i1) resolvante_bipartite (x^6 + 108, x);
1471 (%o1) y - 972 y + 314928 y - 34012224 y
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}
1482 @opencatbox{Categories:}
1483 @category{Package sym}
1488 @anchor{resolvante_diedrale}
1489 @deffn {Function} resolvante_diedrale (@var{P}, @var{x})
1490 calculates 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}}.
1493 @c GENERATED FROM THE FOLLOWING
1494 @c resolvante_diedrale (x^5 - 3*x^4 + 1, x);
1497 (%i1) resolvante_diedrale (x^5 - 3*x^4 + 1, x);
1499 (%o1) x - 21 x - 81 x - 21 x + 207 x + 1134 x + 2331 x
1502 - 945 x - 4970 x - 18333 x - 29079 x - 20745 x - 25326 x
1510 @mrefcomma{resolvante_produit_sym} @mrefcomma{resolvante_unitaire}
1511 @mrefcomma{resolvante_alternee1} @mrefcomma{resolvante_klein} @mrefcomma{resolvante_klein3}
1512 @mrefcomma{resolvante_vierer} @mrefdot{resolvante}
1515 @opencatbox{Categories:}
1516 @category{Package sym}
1521 @anchor{resolvante_klein}
1522 @deffn {Function} resolvante_klein (@var{P}, @var{x})
1523 calculates 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}}.
1528 @mrefcomma{resolvante_produit_sym} @mrefcomma{resolvante_unitaire}
1529 @mrefcomma{resolvante_alternee1} @mrefcomma{resolvante} @mrefcomma{resolvante_klein3}
1530 @mrefcomma{resolvante_vierer} @mrefdot{resolvante_diedrale}
1533 @opencatbox{Categories:}
1534 @category{Package sym}
1538 @anchor{resolvante_klein3}
1539 @deffn {Function} resolvante_klein3 (@var{P}, @var{x})
1540 calculates 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}}.
1545 @mrefcomma{resolvante_produit_sym} @mrefcomma{resolvante_unitaire}
1546 @mrefcomma{resolvante_alternee1} @mrefcomma{resolvante_klein} @mrefcomma{resolvante}
1547 @mrefcomma{resolvante_vierer} @mrefdot{resolvante_diedrale}
1550 @opencatbox{Categories:}
1551 @category{Package sym}
1556 @anchor{resolvante_produit_sym}
1557 @deffn {Function} resolvante_produit_sym (@var{P}, @var{x})
1558 calculates the list of all product resolvents of the polynomial
1559 @code{@var{P}(@var{x})}.
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]);
1567 (%i1) resolvante_produit_sym (x^5 + 3*x^4 + 2*x - 1, x);
1569 (%o1) [y + 3 y + 2 y - 1, y - 2 y - 21 y - 31 y - 14 y
1572 - y + 14 y + 3 y + 1, y + 3 y + 14 y - y - 14 y - 31 y
1575 - 21 y - 2 y + 1, y - 2 y - 3 y - 1, y - 1]
1577 (%i2) resolvante: produit$
1579 (%i3) resolvante (x^5 + 3*x^4 + 2*x - 1, x, a*b*c, [a, b, c]);
1581 " resolvante produit "
1583 (%o3) y + 3 y + 14 y - y - 14 y - 31 y - 21 y - 2 y + 1
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
1592 @mrefcomma{resolvante} @mrefcomma{resolvante_unitaire}
1593 @mrefcomma{resolvante_alternee1} @mrefcomma{resolvante_klein}
1594 @mrefcomma{resolvante_klein3} @mrefcomma{resolvante_vierer}
1595 @mrefdot{resolvante_diedrale}
1598 @opencatbox{Categories:}
1599 @category{Package sym}
1604 @anchor{resolvante_unitaire}
1605 @deffn {Function} resolvante_unitaire (@var{P}, @var{Q}, @var{x})
1606 computes the resolvent of the polynomial @code{@var{P}(@var{x})} by the
1607 polynomial @code{@var{Q}(@var{x})}.
1611 @mrefcomma{resolvante_produit_sym} @mrefcomma{resolvante}
1612 @mrefcomma{resolvante_alternee1} @mrefcomma{resolvante_klein} @mrefcomma{resolvante_klein3}
1613 @mrefcomma{resolvante_vierer} @mrefdot{resolvante_diedrale}
1616 @opencatbox{Categories:}
1617 @category{Package sym}
1621 @anchor{resolvante_vierer}
1622 @deffn {Function} resolvante_vierer (@var{P}, @var{x})
1623 computes 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}}.
1629 @mrefcomma{resolvante_produit_sym} @mrefcomma{resolvante_unitaire}
1630 @mrefcomma{resolvante_alternee1} @mrefcomma{resolvante_klein} @mrefcomma{resolvante_klein3}
1631 @mrefcomma{resolvante} @mrefdot{resolvante_diedrale}
1634 @opencatbox{Categories:}
1635 @category{Package sym}
1642 @subsection Miscellaneous
1644 @anchor{multinomial}
1645 @deffn {Function} multinomial (@var{r}, @var{part})
1646 where @var{r} is the weight of the partition @var{part}. This function
1647 returns 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}!)}.
1651 @opencatbox{Categories:}
1652 @category{Package sym}
1657 @deffn {Function} permut (@var{L})
1658 returns the list of permutations of the list @var{L}.
1660 @opencatbox{Categories:}
1661 @category{Package sym}