Opened 7 years ago

#10554 new enhancement

Better support for casual usage of symmetric functions

Reported by: nthiery Owned by: sage-combinat
Priority: major Milestone:
Component: combinatorics Keywords: Symmetric Functions
Cc: sage-combinat, jbandlow Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description

Following a discussion with Alexandre Casamayou (coauthor of the French sage book), here is a would-be session for casual usage of symmetric functions (please feel free to extend):

    sage: S = SymmetricFunctions(QQ)
    sage: e = S.e()
    sage: var('x,y,z')
    sage: pol = S.from_polynomial(x^3+y^3+z^3); pol   # or from_expr?
    m[3]
    sage: pole = e(pol); pole
    e[1, 1, 1] - 3*e[2, 1] + 3*e[3]
    sage: pole([x,y,z])
    (x + y + z)^3 + 3*x*y*z - 3*(x + y + z)*(x*y + x*z + y*z)

The best working approximation with the current implementation seems to be:

    sage: S = SymmetricFunctions(QQ)
    sage: e = S.e()
    sage: QQ.<x,y,z> = QQ[]
    sage: pol = S.from_polynomial(x^3+y^3+z^3); pol
    m[3]
    sage: e(pol)
    e[1, 1, 1] - 3*e[2, 1] + 3*e[3]
    sage: e1 = SR(e[1].expand(3,[x,y,z])); e1
    x + y + z
    sage: e2 = SR(e[2].expand(3,[x,y,z])); e2
    x*y + x*z + y*z
    sage: e3 = SR(e[3].expand(3,[x,y,z])); e3
    x*y*z
    sage: e1^3 - 3* e2*e1 + 3*e3
    (x + y + z)^3 + 3*x*y*z - 3*(x + y + z)*(x*y + x*z + y*z)

What needs to be done:

  • from_expr (or extend from_polynomial to accept a symbolic expression)
  • f(alphabet) for f a symmetric function, and alphabet a list of objects in some ring (possibly supporting plethysm), as implemented in MuPAD-Combinat

Change History (0)

Note: See TracTickets for help on using tickets.