No, I don't think so.
sage: eqn = x + 3 < 10
sage: solve(eqn,x)
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
/Users/wstein/.sage/temp/flat.local/9055/_Users_wstein__sage_init_sage_0.py
in <module>()
/Users/wstein/sage/build/64bit/sage/local/lib/python2.6/site-packages/sage/symbolic/relation.pyc
in solve(f, *args, **kwds)
489 """
490 try:
--> 491 return f.solve(*args,**kwds)
492 except AttributeError:
493 from sage.symbolic.ring import is_SymbolicVariable
/Users/wstein/sage/build/64bit/sage/local/lib/python2.6/site-packages/sage/symbolic/expression.so
in sage.symbolic.expression.Expression.solve
(sage/symbolic/expression.cpp:22004)()
NotImplementedError: solving only implemented for equalities
sage: m = maxima(eqn)
sage: m.solve(x)
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (2, 0))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/Users/wstein/.sage/temp/flat.local/9055/_Users_wstein__sage_init_sage_0.py
in <module>()
/Users/wstein/sage/build/64bit/sage/local/lib/python2.6/site-packages/sage/interfaces/expect.pyc
in __call__(self, *args, **kwds)
1402
1403 def __call__(self, *args, **kwds):
-> 1404 return self._obj.parent().function_call(self._name,
[self._obj] + list(args), kwds)
1405
1406 def help(self):
/Users/wstein/sage/build/64bit/sage/local/lib/python2.6/site-packages/sage/interfaces/expect.pyc
in function_call(self, function, args, kwds)
1310 [s.name() for s in args],
1311
['%s=%s'%(key,value.name()) for key, value in kwds.items()])
-> 1312 return self.new(s)
1313
1314 def _function_call_string(self, function, args, kwds):
/Users/wstein/sage/build/64bit/sage/local/lib/python2.6/site-packages/sage/interfaces/expect.pyc
in new(self, code)
1094
1095 def new(self, code):
-> 1096 return self(code)
1097
1098 ###################################################################
/Users/wstein/sage/build/64bit/sage/local/lib/python2.6/site-packages/sage/interfaces/expect.pyc
in __call__(self, x, name)
1029
1030 if isinstance(x, basestring):
-> 1031 return cls(self, x, name=name)
1032 try:
1033 return self._coerce_from_special_method(x)
/Users/wstein/sage/build/64bit/sage/local/lib/python2.6/site-packages/sage/interfaces/expect.pyc
in __init__(self, parent, value, is_name, name)
1445 except (TypeError, KeyboardInterrupt,
RuntimeError, ValueError), x:
1446 self._session_number = -1
-> 1447 raise TypeError, x
1448 self._session_number = parent._session_number
1449
TypeError: Error executing code in Maxima
CODE:
sage3 : solve(sage1,sage2)$
Maxima ERROR:
Cannot solve inequalities. -`solve'
Wow, that's awesome. You should definitely try two weeks from now!!
William
But the string that is send to the parser is first preprocessed in the
function
symbolic_expression_from_maxima_string() in the file
sage/calculus/calculus.py
It is probably enough to put something like:
s = s.replace('#', '!=')
somewhere into this function. At least if '#' can not have an other
meaning in Maxima.
Wilfried
Working on Sage is addictive, isn't it!!
-- William