#5453: [with patch, needs review] Create a ring for working with polynomials in
countably infinitely many variables
---------------------------------+------------------------------------------
Reporter: mhansen | Owner: mhansen
Type: enhancement | Status: assigned
Priority: major | Milestone: sage-3.4.2
Component: commutative algebra | Keywords:
---------------------------------+------------------------------------------
Comment(by SimonKing):
Meanwhile I implemented my approach to infinite polynomial rings. For the
moment, I call them "symmetric polynomials", since Aschenbrenner and
Hillar use the notion "symmetric ideals" (and implementing the algorithms
of Aschenbrenner and Hillar is my aim).
Mike, since I took your implementation as a template, I named both you and
me in the copyright notes.
I provide essentially the same methods than you. Main changes, compared
with your implementation:
* The {{{__pow__}}} method now also provides a permutation action.
* The stretch method is '''much''' faster than in your implementation.
* In order to have a sparse implementation, I probably had to take a
compromise speed-wise. Can you please look whether the arithmetic in
{{{SymmetricPolynomialRing}}} is sufficient for your purposes?
* I allow coercions whenever variable names match (i.e., I coerce R into
S if the generator names of R form a subset of the generator names of S,
regardless of the order). Is this acceptable behaviour?
I took care about term orders. We have x[m]<y[n] iff
* x appears before y in the list of generators, or
* x=y and m<n
One technical question: I marked the {{{_coerce_map_from_}}} method as
@cached. Is this allowed (probably yes, since we talk about parent
structures, and they can be used in dictionaries)? Is this not necessary
(perhaps the existence of coercions is cached anyway?)?
Here some examples:
{{{
sage: X.<x,y> = SymmetricPolynomialRing(QQ)
sage: p=x[10]*y[2]^3+2*x[1]*y[3]
sage: P=Permutation(((1,2),(3,4,5)))
sage: p^P
y1^3*x10 + 2*y4*x2
sage: x[5]<y[3]
True
sage: y[5]<y[3]
False
sage: p(x1=x[3],x10=y[1])
y2^3*y1 + 2*y3*x3
}}}
I could imagine to have both implementations in Sage, in particular if it
turns out that there is a big speed difference in arithmetic. Please test!
To be continued (probably on a different ticket): Implement symmetric
ideals (= ideals in an infinite polynomial ring that are set-wise
invariant under variable permutations).
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/5453#comment:14>
Sage <http://sagemath.org/>
Sage - Open Source Mathematical Software: Building the Car Instead of
Reinventing the Wheel
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en
-~----------~----~----~----~------~----~------~--~---