I stumbled across this in my inbox. Here's a sample of code I've used to get the change of basis matrices between different bases of the ring of symmetric functions:
--
s = 5
R = QQ[x_0..x_s]
L = apply(partitions(s), k-> toList k)
E = id_(ZZ^(s));
repeats = P -> entries sum(P,p-> E_(p-1))
Mon1 = P-> product(#P, j-> x_j^(P_j))
Mon = L -> 1/(product(repeats L, l-> l!))* sum(subsets(s,#L), p -> sum(permutations p, q-> product(#L, i-> x_(q_i)^(L_i))))
Mon {2,2}
Pow = L -> product(L, l-> sum(s, i->x_i^l))
Pow {3,2}
elem = r-> sum(subsets(s,r), L-> product(L, l-> x_l))
elem1 = r-> product(0..(r-1), l-> x_l)
Elem = L -> product(L, l-> elem l)
Elem {1,1}
Elem1 = L -> product(L, l-> elem1 l)
Elem1 {1,1}
Elem {3,2}
elem 3
homog1 = r-> sum(partitions r, P-> product(#P, l-> x_l^(P_l)))
homog1 5
homog = r -> sum(partitions r, P -> Mon toList P )
Homog = L -> product(L, l-> homog l)
Homog1 = L -> product(L, l-> homog1 l)
homog 3
MM = matrix apply(L, l-> apply(L, k-> contract(Mon1 k, Mon l)))
contract(x_0+x_1, x_0^3 + x_1^2*x_0)
contract( Mon1 {5}, Elem {5})
ElM = matrix apply(L, l-> apply(L, k-> contract(Mon1 k, Elem l)))
PM = matrix apply(L, l-> apply(L, k-> contract(Mon1 k, Pow l)))
HM = matrix apply(L, l-> apply(L, k-> contract(Mon1 k, Homog l)))
EE = matrix apply(L, l-> apply(L, k-> contract(Elem1 k, Elem l)))
ME = matrix apply(L, l-> apply(L, k-> contract(Elem1 k, Mon l)))
PE = matrix apply(L, l-> apply(L, k-> contract(Elem1 k, Pow l)))
HE = matrix apply(L, l-> apply(L, k-> contract(Elem1 k, Homog l)))
HoH = matrix apply(L, l-> apply(L, k-> contract(Homog1 k, Homog l)))
EH = matrix apply(L, l-> apply(L, k-> contract(Homog1 k, Elem l)))
MH = matrix apply(L, l-> apply(L, k-> contract(Homog1 k, Mon l)))
PH = matrix apply(L, l-> apply(L, k-> contract(Homog1 k, Pow l)))