[GAP Forum] Generating symmetric polynomials

Ravi Kulkarni ravi.kulk at gmail.com
Fri Oct 23 17:09:44 BST 2009


Hello GAP Forum,
  I thought it would be useful to have a function that generates a
basis for the space of symmetric polynomials in the ring
k[x_1,x_2,..,x_n]. Here is some simple code that does the job.
  The code is implemented only for k[x,y,z] right now, but changing it
to any number of variables is straightforward.
  The code is not the most efficient possible certainly, but it works...

  Ravi

#####################################################################
# symPol(k)
#############
# symPol(k) will return a basis for the space of symmetric polynomials
# of degree k in three variables x,y,z
# WARNING: It is assumed that x,y,z exist in the environment!
# Do this first, before invoking symPol:

# gap> R := PolynomialRing(Rationals,3);; 	
# gap> inds := IndeterminatesOfPolynomialRing(R);;
# gap> x := inds[1];; y := inds[2];; z := inds[3];;
#############

symPol := function(k)
  local lis1, i, j, outlist, outpolist;
  	lis1 := Tuples([0..k],3); # am interested in C^3 only
  	
	# now only retain those elements of lis1 whose sum equals k
	outlist := "";
	for i in [1..Length(lis1)] do
		if Sum(lis1[i]) = k then
			Add(outlist, lis1[i]);
		fi;
	od;
	
	outpolist := "";
	for j in [1..Length(outlist)] do
		Add(outpolist,x^(outlist[j][1])*y^(outlist[j][2])*z^(outlist[j][3]));
	od;
	return Reversed(outpolist);
end;
#####################################################################



More information about the Forum mailing list