Symmetric functions are symmetric polynomials over some coefficient ring, hence the algebra of symmetric functions is defined by specifying this ring. There are five standard bases that can be used to express symmetric functions. In Magma there are separate constructions for creating an algebra using each distinct basis.
Basis: MonStgElt Default: "Schur"
Given a ring R, return the algebra of symmetric functions over R. By default this algebra will use the basis of "Schur" functions, though the parameter Basis allows the user to specify that the basis be one of the "Homogeneous", "PowerSum", "Elementary" or "Monomial" functions.
Given a commutative ring with unity R, create the algebra of symmetric functions (polynomials) with coefficients from R. Its elements are expressed in terms of the basis of Schur symmetric functions, which are indexed by partitions.
Given a commutative ring with unity R, create the algebra of symmetric functions (polynomials) with coefficients from R. Its elements are expressed in terms of the basis of Homogeneous symmetric functions, which are indexed by partitions.
Given a commutative ring with unity R, create the algebra of symmetric functions (polynomials) with coefficients from R. Its elements are expressed in terms of the basis of Power Sum symmetric functions, which are indexed by partitions.
Given a commutative ring with unity R, create the algebra of symmetric functions (polynomials) with coefficients from R. Its elements are expressed in terms of the basis of Elementary symmetric functions, which are indexed by partitions.
Given a commutative ring with unity R, create the algebra of symmetric functions (polynomials) with coefficients from R. Its elements are expressed in terms of the basis of Monomial symmetric functions, which are indexed by partitions.
> R := Rationals(); > S := SymmetricFunctionAlgebraSchur(R); Symmetric Algebra over Rational Field, Schur symmetric functions as basis > E := SymmetricFunctionAlgebra(R : Basis := "Elementary"); Symmetric Algebra over Rational Field, Elementary symmetric functions as basis > f1 := S.[2,1]; > f1; S.[2,1] > > f2 := E ! f1; > f2; E.[2,1] - E.[3] > f1 eq f2; true > > P<x,y,z> := PolynomialRing(R, 3); > P ! f1; x^2*y + x^2*z + x*y^2 + 2*x*y*z + x*z^2 + y^2*z + y*z^2 > P ! f2; x^2*y + x^2*z + x*y^2 + 2*x*y*z + x*z^2 + y^2*z + y*z^2
For each of the 5 different standard basis for symmetric functions, basis elements are indexed via partitions (weakly decreasing positive sequences). The weight of a partition is the sum of its entries, and gives the degree of the element.
For example, [3, 1] is a partition of weight 4, hence a symmetric function basis element corresponding to [3, 1] will be a symmetric polynomial of degree 4.
General symmetric functions are linear combinations of basis elements and can be created by taking such linear combinations or via coercion from either another basis or directly from a polynomial.
Given a partition P, which is a weakly decreasing positive sequence of integers, return the basis element of the algebra of symmetric functions A corresponding to P.
Given a positive integer i, return the basis element of the algebra of symmetric functions A corresponding to the partition [i].
> R := Rationals(); > M := SFAMonomial(R); > M.[3,1]; M.[3,1] > M.4; M.[4] > 3 * M.[3,1] - 1/2 * M.4; 3*M.[3,1] - 1/2*M.[4]
Given a multivariate polynomial f which is symmetric in all of its indeterminates (and hence is a symmetric function), return f as an element of the algebra of symmetric functions A. This element returned will be expressed in terms of the symmetric function basis of A.Note that polynomials are considered to be identified with their corresponding representations using the monomial symmetric functions, so the above coercion may involve a change of basis from the monomial symmetric functions to the symmetric function basis used by A. This might appear to introduce unexpected "extra" terms (see the second example below).
> R := Rationals(); > M := SFAMonomial(R); > P<[x]> := PolynomialRing(R, 3); > f := -3*x[1]^3 + x[1]^2*x[2] + x[1]^2*x[3] + x[1]*x[2]^2 + x[1]*x[3]^2 - > 3*x[2]^3 + x[2]^2*x[3] + x[2]*x[3]^2 - 3*x[3]^3; > M!f; M.[2,1] - 3*M.[3] > M ! (x[1] + x[2]*x[3]); >> M ! (x[1] + x[2]*x[3]); ^ Runtime error in '!': Polynomial is not symmetric
> R := Integers(); > M := SFAMonomial(R); > S := SFASchur(R); > P<X, Y> := PolynomialRing(R, 2); > f := X^2*Y + X*Y^2; > M!f; M.[2,1] > S!f; - 2*S.[1,1,1] + S.[2,1]When we coerce S.[1,1,1] back into our polynomial ring, we see that it evaluates to zero and may seem redundant:
> P!S.[1,1,1]; 0However, when we use a polynomial ring with more variables we can see the important of that term:
> P<X, Y, Z> := PolynomialRing(R, 3); > P!M.[2,1]; X^2*Y + X^2*Z + X*Y^2 + X*Z^2 + Y^2*Z + Y*Z^2 > P!S.[2,1]; X^2*Y + X^2*Z + X*Y^2 + 2*X*Y*Z + X*Z^2 + Y^2*Z + Y*Z^2 > P!(S.[2,1] - 2*S.[1,1,1]); X^2*Y + X^2*Z + X*Y^2 + X*Z^2 + Y^2*Z + Y*Z^2
Create the scalar element r in the symmetric function algebra A.
> R := Rationals(); > P := SFAPower(R); > m := P!3; > m; 3 > Parent(m); Symmetric Algebra over Rational Field, Power sum symmetric functions as basis > m + P.[3,2]; 3 + P.[3,2]
Given a symmetric function algebra A and a symmetric function m (possibly with a different basis), return the element m expressed in terms of the basis of A.
> R := Rationals(); > S := SFASchur(R); > H := SFAHomogeneous(R); > P := SFAPower(R); > E := SFAElementary(R); > M := SFAMonomial(R); > > m := S.[3,1]; > S!m; S.[3,1] > H!m; H.[3,1] - H.[4] > P!m; 1/8*P.[1,1,1,1] + 1/4*P.[2,1,1] - 1/8*P.[2,2] - 1/4*P.[4] > E!m; E.[2,1,1] - E.[3,1] - E.[2,2] + E.[4] > M!m; 3*M.[1,1,1,1] + 2*M.[2,1,1] + M.[3,1] + M.[2,2] > > PP<[x]> := PolynomialRing(R, 4); > PP ! m; x[1]^3*x[2] + x[1]^3*x[3] + x[1]^3*x[4] + x[1]^2*x[2]^2 + 2*x[1]^2*x[2]*x[3] + 2*x[1]^2*x[2]*x[4] + x[1]^2*x[3]^2 + 2*x[1]^2*x[3]*x[4] + x[1]^2*x[4]^2 + x[1]*x[2]^3 + 2*x[1]*x[2]^2*x[3] + 2*x[1]*x[2]^2*x[4] + 2*x[1]*x[2]*x[3]^2 + 3*x[1]*x[2]*x[3]*x[4] + 2*x[1]*x[2]*x[4]^2 + x[1]*x[3]^3 + 2*x[1]*x[3]^2*x[4] + 2*x[1]*x[3]*x[4]^2 + x[1]*x[4]^3 + x[2]^3*x[3] + x[2]^3*x[4] + x[2]^2*x[3]^2 + 2*x[2]^2*x[3]*x[4] + x[2]^2*x[4]^2 + x[2]*x[3]^3 + 2*x[2]*x[3]^2*x[4] + 2*x[2]*x[3]*x[4]^2 + x[2]*x[4]^3 + x[3]^3*x[4] + x[3]^2*x[4]^2 + x[3]*x[4]^3
> R := Rationals(); > M := SFA(R : Basis := "Monomial"); > H := SFA(R : Basis := "Homogeneous"); > > H ! (M.[1]); H.[1] > H ! (M.[2] + M.[1,1]); H.[2] > H ! (M.[3] + M.[2,1] + M.[1,1,1]); H.[3] > H ! (M.[4] + M.[3,1] + M.[2,2] + M.[2,1,1] + M.[1,1,1,1]); H.[4] > > k := 5; > H ! &+ [ M.P : P in Partitions(k)]; H.[5] > k := 10; > H ! &+ [ M.P : P in Partitions(k)]; H.[10]