#13103: Makes BooleanPolynomial more compatible with MPolynomial
---------------------------------------+------------------------------------
       Reporter:  Bouillaguet          |         Owner:  malb    
           Type:  enhancement          |        Status:  new     
       Priority:  minor                |     Milestone:  sage-5.1
      Component:  commutative algebra  |    Resolution:          
       Keywords:  polybori             |   Work issues:          
Report Upstream:  N/A                  |     Reviewers:          
        Authors:  Charles Bouillaguet  |     Merged in:          
   Dependencies:                       |      Stopgaps:          
---------------------------------------+------------------------------------

Comment (by Bouillaguet):

 With the patch, the variety() function "works":
 {{{
 sage: R.<x,y,z> = BooleanPolynomialRing()
 sage: I = ideal( [ x*y*z + x*z + y + 1, x*y+x*z+y*z, x+y+z+1 ] )
 sage: I.variety()
 verbose 0 (3293: multi_polynomial_ideal.py, groebner_basis) Warning:
 falling back to very slow toy implementation.
 verbose 0 (2364: multi_polynomial_ideal.py, variety) Warning: falling back
 to very slow toy implementation.
 [{y: 1, z: 0, x: 0}]
 }}}

 However, it returns a '''mathematically wrong result''' when the
 polynomials do not generate a zero-dimensional ideal without the field
 equations. In this case, the variety() function normally fails (because on
 non-finite fields, the variety would be infinite).

 Example:
 {{{
 sage: R.<x,y,z> = GF(2)[]
 sage: I = ideal( [ x*y*z + x*z + y + 1, x+y+z+1 ] )
 sage: I.variety()
 ...
 ValueError: The dimension of the ideal is 1, but it should be 0
 }}}

 If we add the field equations, then the ideal becomes zero-dimensional,
 and the variety() function works normally:
 {{{
 sage: J = I + sage.rings.ideal.FieldIdeal(R)
 sage: J.variety()
 [{y: 1, z: 0, x: 0}, {y: 1, z: 1, x: 1}]
 }}}

 But over BooleanPolynomial things go wrong:
 {{{
 sage: R.<x,y,z> = BooleanPolynomialRing()
 sage: I = ideal( [ x*y*z + x*z + y + 1, x+y+z+1 ] )
 sage: I.variety()
 verbose 0 (3293: multi_polynomial_ideal.py, groebner_basis) Warning:
 falling back to very slow toy implementation.
 verbose 0 (2364: multi_polynomial_ideal.py, variety) Warning: falling back
 to very slow toy implementation.
 [{y: 1}]
 }}}
 This result does not make sense. Of course ideals of BooleanPolynomials
 should have dimension zero, so that the variety() function should always
 work. But it should always return the right result!

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/13103#comment:1>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

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