#5566: [with patch, needs review] Groebner bases of Symmetric Ideals
---------------------------------+------------------------------------------
 Reporter:  SimonKing            |       Owner:  SimonKing      
     Type:  enhancement          |      Status:  new            
 Priority:  major                |   Milestone:  sage-3.4.1     
Component:  commutative algebra  |    Keywords:  Symmetric Ideal
---------------------------------+------------------------------------------

Comment(by SimonKing):

 Replying to [comment:7 SimonKing]:
 > Replying to [comment:6 SimonKing]:
 > > Example: if we start with an ideal
 > > {{{
 > > sage: I = X*(x[1]*y[1],x[50]*y[1000])
 > > sage: J=I.groebner_basis()
 > > sage: J
 > > Ideal (x1*y1, x50*y1000, x51*y1) of Symmetric polynomial ring in y, x
 over Rational Field
 > > }}}
 >
 > ARRGH! This result is complete nonsense. I need to find out what
 happened. Needs work. Sorry

 Got it! The new version of ``SymmetricIdeals.patch`` should still apply to
 sage-3.4 (tell me if I messed it up), and fixes the bug.

 Let N be the maximal variable index occuring in the generators of a
 symmetric ideal I. According to Aschenbrenner, one has to apply all
 elements of Sym(N) to the generators, form all S-polynomials, interreduce,
 then apply Sym(N+1), and so on, until it stabilizes.

 Sym(N) can be rather huge, so i tried to be clever: Apply the
 ''generators'' of Sym(N) to the generators of J, interreduce, and repeat
 until it stabilizes; i thought this is the same as applying ''all''
 elements of Sym(N), but i was mistaken.

 Now i proceed more carefully. I introduced a method 'squeezed', that makes
 the variable indices as small as possible, without to change the ideal.
 So, the N above is decreased. Next i apply ''all'' elements of Sym(N) to
 the generators of {{{I.squeezed()}}}. Compute the S-polynomials and
 interreduce (which i do using libsingular's groebner method).

 The result takes care of symmetry out to level N. In order to make it
 symmetric out to N+1, it then suffices to apply coset representatives of
 Sym(N+1)/Sym(N), namely (1,N+1), (2,N+1), ..., (N,N+1). The rest is,
 again, computation of S-polynomials and interreduction, and iteration.

 Do you agree that this is a correct improvement of the algorithm of
 Aschenbrenner and Hillar?

 Anyway.
 The critical example from above is now
 {{{
 sage: X.<x,y> = SymmetricPolynomialRing(QQ)
 sage: I = X*(x[1]*y[1],x[50]*y[1000])
 sage: [p._p.parent() for p in I.gens()] # start with different rings

 [Multivariate Polynomial Ring in y1, x1 over Rational Field,
  Multivariate Polynomial Ring in y1000, x50 over Rational Field]
 sage: sage: J=I.groebner_basis()
 sage: sage: J
 Ideal (y1*x1, y1*x2, y2*x1) of Symmetric polynomial ring in x, y over
 Rational Field
 sage: sage: [p._p.parent() for p in J.gens()] # end with common rings

 [Multivariate Polynomial Ring in y2, y1, x2, x1 over Rational Field,
  Multivariate Polynomial Ring in y2, y1, x2, x1 over Rational Field,
  Multivariate Polynomial Ring in y2, y1, x2, x1 over Rational Field]
 }}}

 And this is indeed the symmetric Groebner basis.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/5566#comment:8>
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