1 | initial version |
Ok, it sounds like you want to work in the ring of symmetric functions (however you didn't mention that there might be a + or * or take linear combinations, but these features don't seem to interfere with what you are asking for). Are you allowed repeated entries?
If I am not mistaken, even if this is not precisely what you are looking for, it seems like this algebra should be your model.
You seem to be asking for a vector space whose coefficients are integers and whose index set is a sorted list of non-negative integers (I'm adding the non-negative integer condition for convenience). If this is the case, then lets call them 'partitions.' I hope you don't mind that they will display in weakly decreasing order rather than increasing order, but I don't see that option built in so it will take slightly more than a couple of lines of programming.
sage: Sym = SymmetricFunctions(ZZ)
sage: s = Sym.complete()
sage: s._prefix='s'
sage: def my_s(lst):
....: return s.mul(s([a]) for a in lst)
....:
sage: my_s([2,1,2,3])
s[3, 2, 2, 1]
sage: 2*my_s([2,4])+my_s([1,2,3])
s[3, 2, 1] + 2*s[4, 2]
Is this what you were looking for or am I interpreting what you were asking.
P.S. calling the complete basis 's' kind of goes against my nature, because we use that for Schur functions normally. But the line "s._prefix='s'" makes sure that the result is displayed with an 's' instead of the default 'h' just to follow closely the notation you were looking for.
2 | No.2 Revision |
Ok, it sounds like you want to work in the ring of symmetric functions (however you didn't mention that there might be a + or * or take linear combinations, but these features don't seem to interfere with what you are asking for). Are you allowed repeated entries?
If I am not mistaken, even if this is not precisely what you are looking for, it seems like this algebra should be your model.
You seem to be asking for a vector space whose coefficients are integers and whose index set is a sorted list of non-negative integers (I'm adding the non-negative integer condition for convenience). If this is the case, then lets call them 'partitions.' I hope you don't mind that they will display in weakly decreasing order rather than increasing order, but I don't see that option built in so it will take slightly more than a couple of lines of programming.
sage: Sym = SymmetricFunctions(ZZ)
sage: s = Sym.complete()
sage: s._prefix='s'
sage: def my_s(lst):
....: return s.mul(s([a]) for a in lst)
....:
sage: my_s([2,1,2,3])
s[3, 2, 2, 1]
sage: 2*my_s([2,4])+my_s([1,2,3])
s[3, 2, 1] + 2*s[4, 2]
Is this what you were looking for or am I interpreting mis-interpreting what you were asking.asking?
P.S. calling the complete basis 's' kind of goes against my nature, because we use that for Schur functions normally. But the line "s._prefix='s'" makes sure that the result is displayed with an 's' instead of the default 'h' just to follow closely the notation you were looking for.
3 | No.3 Revision |
Ok, it sounds like you want to work in the ring of symmetric functions (however you didn't mention that there might be a + or * or take linear combinations, but these features don't seem to interfere with what you are asking for). Are you allowed repeated entries?
If I am not mistaken, even if this is not precisely what you are looking for, it seems like this algebra should be your model.
You seem to be asking for a vector space whose coefficients are integers and whose index set is a sorted list of non-negative integers (I'm adding the non-negative integer condition for convenience). If this is the case, then lets call them 'partitions.' I hope you don't mind that they will display in weakly decreasing order rather than increasing order, but I don't see that option built in so it will take slightly more than a couple of lines of programming.
sage: Sym = SymmetricFunctions(ZZ)
sage: s h = Sym.complete()
sage: s._prefix='s'
h._prefix='s'
sage: def my_s(lst):
s(lst):
....: return s.mul(s([a]) h.mul(h([a]) for a in lst)
....:
sage: my_s([2,1,2,3])
s([2,1,2,3])
s[3, 2, 2, 1]
sage: 2*my_s([2,4])+my_s([1,2,3])
2*s([2,4])+s([1,2,3])
s[3, 2, 1] + 2*s[4, 2]
Is this what you were looking for or am I mis-interpreting what you were asking?
P.S. calling the complete basis 's' kind of goes against my nature, because we use that for Schur functions normally. But the line "s._prefix='s'" makes sure that the result is displayed with an 's' instead of the default 'h' just to follow closely the notation you were looking for.