#8969: problems with maxima inequalities
-------------------------+--------------------------------------------------
   Reporter:  dsm        |       Owner:  burcin
       Type:  defect     |      Status:  new   
   Priority:  minor      |   Milestone:        
  Component:  symbolics  |    Keywords:        
     Author:             |    Upstream:  N/A   
   Reviewer:             |      Merged:        
Work_issues:             |  
-------------------------+--------------------------------------------------
Description changed by dsm:

Old description:

> 'Sage Version 4.4.1, Release Date: 2010-05-02'[[BR]]mac 10.4 32 bit
> running on 10.5.8.
>
> sage: solve([2*x==3, x < 10], x)[[BR]][[x == (3/2)]][[BR]]sage:
> solve([2*x==3, x > 10], x)[[BR]][][[BR]]sage: solve([2*x==3, x == 10],
> x)[[BR]][][[BR]]sage: solve([2*x==3, x == 3/2], x)[[BR]][[x == (3/2)]]
>
> sage: solve([2*x==3, x < 4, x > 4], x)[[BR]][][[BR]]
>
> all work as expected, but:
>
> sage: solve([2*x==3, x != 5],
> x)[[BR]]---------------------------------------------------------------------------[[BR]]!TypeError
> Traceback (most recent call last)[[BR]][[BR]]/Applications/sage/devel
> /sage-main/build/sage/<ipython console> in
> <module>()[[BR]][[BR]]/Applications/sage/local/lib/python2.6/site-
> packages/sage/symbolic/relation.pyc in solve(f, *args, **kwds)[[BR]]
> 670                 s = [][[BR]]    671 [[BR]]--> 672         sol_list =
> string_to_list_of_solutions(repr(s))[[BR]]    673         if
> 'solution_dict' in kwds and kwds!['solution_dict']==True:[[BR]]    674
> if isinstance(sol_list![0],
> list):[[BR]][[BR]]/Applications/sage/local/lib/python2.6/site-
> packages/sage/symbolic/relation.pyc in
> string_to_list_of_solutions(s)[[BR]]    455     from
> sage.structure.sequence import Sequence[[BR]]    456     from
> sage.calculus.calculus import
> symbolic_expression_from_maxima_string[[BR]]--> 457     v =
> symbolic_expression_from_maxima_string(s, equals_sub=True)[[BR]]    458
> return Sequence(v, universe=Objects(), cr_str=True)[[BR]]    459
> [[BR]][[BR]]/Applications/sage/local/lib/python2.6/site-
> packages/sage/calculus/calculus.py in
> symbolic_expression_from_maxima_string(x, equals_sub, maxima)[[BR]]
> 1527         return symbolic_expression_from_string(s, syms,
> accept_sequence=True)[[BR]]   1528     except !!!SyntaxError:[[BR]]->
> 1529         raise !TypeError, "unable to make sense of Maxima expression
> '%s' in Sage"%s[[BR]]   1530     finally:[[BR]]   1531
> is_simplified = False[[BR]][[BR]]!TypeError: unable to make sense of
> Maxima expression '[[x==3/2,-7/2!==0]]' in Sage
>
> --
>
> The "!==" which is causing trouble is due to the
>
> if equals_sub:[[BR]]            s = s.replace('=','==')
>
> lines in  symbolic_expression_from_maxima_string.  This could be fixed by
> changing the replace to a regexp, or adding a hack s = s.replace('!==',
> '!=') afterwards.
>
> This deals with the obvious problem but not the underlying one, which is
> that the result is still IMHO underprocessed:
>
> MODIFIED_sage: solve([2*x==3, x != 4], x)[[BR]][[x == (3/2), (-5/2) !=
> 0]]
>
> when I wanted [[x == (3/2)]], or
>
> MODIFIED_sage: solve([2*x==3, x != 3/2], x)[[BR]][[x == (3/2), 0 != 0]]
>
> when I wanted [].
>
> In fact, even in cases not involving "!=", it's possible for maxima
> output -- %union([x = 3/2,  -5/2 # 0]) --  to be insufficiently
> processed,IMHO:
>
> sage: solve([2*x==3, (x-4)!^2 > 0], x)[[BR]][[x == (3/2), (-5/2) != 0]]
>
> ISTM the extra information about what condition maxima used isn't worth
> the inconvenience of having to postprocess the solutions to see if one
> exists.

New description:

 'Sage Version 4.4.1, Release Date: 2010-05-02'[[BR]]mac 10.4 32 bit
 running on 10.5.8.

 sage: solve([2*x==3, x < 10], x)[[BR]][[x == (3/2)]][[BR]]sage:
 solve([2*x==3, x > 10], x)[[BR]][][[BR]]sage: solve([2*x==3, x == 10],
 x)[[BR]][][[BR]]sage: solve([2*x==3, x == 3/2], x)[[BR]][[x == (3/2)]]

 sage: solve([2*x==3, x < 4, x > 4], x)[[BR]][][[BR]]

 all work as expected, but:

 sage: solve([2*x==3, x != 5],
 
x)[[BR]]---------------------------------------------------------------------------[[BR]]!TypeError
 Traceback (most recent call last)[[BR]][[BR]]/Applications/sage/devel
 /sage-main/build/sage/<ipython console> in
 <module>()[[BR]][[BR]]/Applications/sage/local/lib/python2.6/site-
 packages/sage/symbolic/relation.pyc in solve(f, *args, **kwds)[[BR]]
 670                 s = [][[BR]]    671 [[BR]]--> 672         sol_list =
 string_to_list_of_solutions(repr(s))[[BR]]    673         if
 'solution_dict' in kwds and kwds!['solution_dict']==True:[[BR]]    674
 if isinstance(sol_list![0],
 list):[[BR]][[BR]]/Applications/sage/local/lib/python2.6/site-
 packages/sage/symbolic/relation.pyc in
 string_to_list_of_solutions(s)[[BR]]    455     from
 sage.structure.sequence import Sequence[[BR]]    456     from
 sage.calculus.calculus import
 symbolic_expression_from_maxima_string[[BR]]--> 457     v =
 symbolic_expression_from_maxima_string(s, equals_sub=True)[[BR]]    458
 return Sequence(v, universe=Objects(), cr_str=True)[[BR]]    459
 [[BR]][[BR]]/Applications/sage/local/lib/python2.6/site-
 packages/sage/calculus/calculus.py in
 symbolic_expression_from_maxima_string(x, equals_sub, maxima)[[BR]]   1527
 return symbolic_expression_from_string(s, syms,
 accept_sequence=True)[[BR]]   1528     except !!!!SyntaxError:[[BR]]->
 1529         raise !TypeError, "unable to make sense of Maxima expression
 '%s' in Sage"%s[[BR]]   1530     finally:[[BR]]   1531
 is_simplified = False[[BR]][[BR]]!TypeError: unable to make sense of
 Maxima expression '[[x==3/2,-7/2!==0]]' in Sage

 --

 The "!==" which is causing trouble is due to the

 if equals_sub:[[BR]]            s = s.replace('=','==')

 lines in  symbolic_expression_from_maxima_string.  This could be fixed by
 changing the replace to a regexp, or adding a hack s = s.replace('!==',
 '!=') afterwards.

 This deals with the obvious problem but not the underlying one, which is
 that the result is still IMHO underprocessed:

 MODIFIED_sage: solve([2*x==3, x != 4], x)[[BR]][[x == (3/2), (-5/2) != 0]]

 when I wanted [[x == (3/2)]], or

 MODIFIED_sage: solve([2*x==3, x != 3/2], x)[[BR]][[x == (3/2), 0 != 0]]

 when I wanted [].

 In fact, even in cases not involving "!=", it's possible for maxima output
 -- %union([x = 3/2,  -5/2 # 0]) --  to be insufficiently processed,IMHO:

 MODIFIED_sage: solve([2*x==3, (x-4)!^2 > 0], x)[[BR]][[x == (3/2), (-5/2)
 != 0]]

 ISTM the extra information about what condition maxima used isn't worth
 the inconvenience of having to postprocess the solutions to see if one
 exists.

--

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