#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
-~----------~----~----~----~------~----~------~--~---

Reply via email to