Context : finding patterns of explicit forms of inverse 
(hyperbolic|trigonometric) functions for simplification.

Simple solution :
reset() y=SR.var("y") IL = [] w0=SR.wild(0) L=[sin, cos, tan, csc, sec, 
cot, sinh, cosh, tanh, csch, sech, coth] for f in L: 
R=(f(y)==x).solve(y)[0].rhs() for s in (f(y)==x).exponentialize().solve(y): 
IL += [s.rhs().subs(x==w0)==R.subs(x==w0)] # End loop 

This works. But I’d like to express this list as a dictionary. Brute-force 
solution fails with a mysterious TypeError: ECL says: THROW: The catch 
MACSYMA-QUIT is undefined.. But calling this on *parts* of the list seems 
to work (not shown).

Try a loop :
ID=dict() for s in IL: ID[s.lhs()]=s.rhs() # End loop 

This fails again :
--------------------------------------------------------------------------- 
RuntimeError Traceback (most recent call last) File 
/usr/local/sage-10/src/sage/interfaces/interface.py:749, in 
InterfaceElement.__init__(self, parent, value, is_name, name) 748 try: --> 
749 self._name = parent._create(value, name=name) 750 except (TypeError, 
RuntimeError, ValueError) as x: File 
/usr/local/sage-10/src/sage/interfaces/maxima_lib.py:632, in 
MaximaLib._create(self, value, name) 631 else: --> 632 self.set(name, 
value) 633 except RuntimeError as error: File 
/usr/local/sage-10/src/sage/interfaces/maxima_lib.py:540, in 
MaximaLib.set(self, var, value) 539 cmd = '%s : %s$' % (var, 
value.rstrip(';')) --> 540 self.eval(cmd) File 
/usr/local/sage-10/src/sage/interfaces/maxima_lib.py:486, in 
MaximaLib._eval_line(self, line, locals, reformat, **kwds) 485 if 
statement: --> 486 maxima_eval("#$%s$" % statement) 487 if not reformat: 
File /usr/local/sage-10/src/sage/libs/ecl.pyx:837, in 
sage.libs.ecl.EclObject.__call__() 836 """ --> 837 lispargs = 
EclObject(list(args)) 838 return ecl_wrap(ecl_safe_apply(self.obj, 
(<EclObject>lispargs).obj)) File 
/usr/local/sage-10/src/sage/libs/ecl.pyx:698, in 
sage.libs.ecl.EclObject.__init__() 697 elif len(args) == 1: --> 698 
self.set_obj(python_to_ecl(args[0], True)) 699 elif len(args) == 2: File 
/usr/local/sage-10/src/sage/libs/ecl.pyx:481, in 
sage.libs.ecl.python_to_ecl() 480 for i in range(len(pyobj) - 1, -1, -1): 
--> 481 L = cl_cons(python_to_ecl(pyobj[i], read_strings), L) 482 return L 
File /usr/local/sage-10/src/sage/libs/ecl.pyx:458, in 
sage.libs.ecl.python_to_ecl() 457 if read_strings: --> 458 return 
ecl_safe_funcall(read_from_string_clobj, o) 459 else: File 
/usr/local/sage-10/src/sage/libs/ecl.pyx:342, in 
sage.libs.ecl.ecl_safe_funcall() 341 else: --> 342 raise RuntimeError("ECL 
says: {}".format(message)) 343 else: RuntimeError: ECL says: THROW: The 
catch MACSYMA-QUIT is undefined. During handling of the above exception, 
another exception occurred: TypeError Traceback (most recent call last) 
Cell In[231], line 1 ----> 1 
load('/tmp/sage_shell_modeSJ8pfj/sage_shell_mode_temp.sage') File 
/usr/local/sage-10/src/sage/misc/persist.pyx:175, in 
sage.misc.persist.load() 173 174 if 
sage.repl.load.is_loadable_filename(filename): --> 175 
sage.repl.load.load(filename, globals()) 176 return 177 File 
/usr/local/sage-10/src/sage/repl/load.py:277, in load(filename, globals, 
attach) 275 add_attached_file(fpath) 276 with fpath.open() as f: --> 277 
exec(preparse_file(f.read()) + "\n", globals) 278 elif ext in ['.spyx', 
'.pyx']: 279 if attach: File <string>:5 File 
/usr/local/sage-10/src/sage/symbolic/expression.pyx:3515, in 
sage.symbolic.expression.Expression.__bool__() 3513 if res in (True, 
False): 3514 return res -> 3515 res = 
self.operator()((self.lhs()-self.rhs()).simplify_full(), 0).test_relation() 
3516 if res in (True, False): 3517 return res File 
/usr/local/sage-10/src/sage/symbolic/expression.pyx:10737, in 
sage.symbolic.expression.Expression.simplify_full() 10735 """ 10736 x = 
self > 10737 x = x.simplify_factorial() 10738 x = x.simplify_rectform() 
10739 x = x.simplify_trig() File 
/usr/local/sage-10/src/sage/symbolic/expression.pyx:11217, in 
sage.symbolic.expression.Expression.simplify_factorial() 11215 11216 """ > 
11217 return 
self.parent()(self._maxima_().makefact().factcomb().minfactorial()) 11218 
11219 factorial_simplify = simplify_factorial File 
/usr/local/sage-10/src/sage/symbolic/expression.pyx:1227, in 
sage.symbolic.expression.Expression._maxima_() 1225 # Maybe not such a 
great idea because the "default" interface is another one 1226 from 
sage.calculus.calculus import maxima -> 1227 return 
super()._interface_(maxima) 1228 else: 1229 return 
super()._interface_(session) File 
/usr/local/sage-10/src/sage/structure/sage_object.pyx:724, in 
sage.structure.sage_object.SageObject._interface_() 722 except Exception: 
723 raise NotImplementedError("coercion of object %s to %s not 
implemented:\n%s\n%s" % (repr(self), I)) --> 724 X = I(s) 725 if c: 726 
try: File /usr/local/sage-10/src/sage/interfaces/interface.py:299, in 
Interface.__call__(self, x, name) 296 pass 298 if isinstance(x, str): --> 
299 return cls(self, x, name=name) 300 try: 301 # Special methods do not 
and should not have an option to 302 # set the name directly, as the 
identifier assigned by the 303 # interface should stay consistent. An 
identifier with a 304 # user-assigned name might change its value, so we 
return a 305 # new element. 306 result = 
self._coerce_from_special_method(x) File 
/usr/local/sage-10/src/sage/interfaces/interface.py:751, in 
InterfaceElement.__init__(self, parent, value, is_name, name) 749 
self._name = parent._create(value, name=name) 750 except (TypeError, 
RuntimeError, ValueError) as x: --> 751 raise TypeError(x) TypeError: ECL 
says: THROW: The catch MACSYMA-QUIT is undefined. 

Diagnosis :
sage: len(IL) 24 sage: len(ID) 20 

Hmm. The problem starts with :
sage: IL[len(ID)] log(-sqrt(-$0^2 + 1)/$0 + 1/$0) == arcsech($0) 

which *can* be put in dictionary form :
sage: {IL[len(ID)].lhs():IL[len(ID)].rhs()} {log(-sqrt(-$0^2 + 1)/$0 + 
1/$0): arcsech($0)} 

But can’t be used for updating the dictionary :
sage: foo=copy(ID)|{IL[len(ID)].lhs():IL[len(ID)].rhs()} 
--------------------------------------------------------------------------- 
RuntimeError Traceback (most recent call last) File 
/usr/local/sage-10/src/sage/interfaces/interface.py:749, in 
InterfaceElement.__init__(self, parent, value, is_name, name) 748 try: --> 
749 self._name = parent._create(value, name=name) 750 except (TypeError, 
RuntimeError, ValueError) as x: File 
/usr/local/sage-10/src/sage/interfaces/maxima_lib.py:632, in 
MaximaLib._create(self, value, name) 631 else: --> 632 self.set(name, 
value) 633 except RuntimeError as error: File 
/usr/local/sage-10/src/sage/interfaces/maxima_lib.py:540, in 
MaximaLib.set(self, var, value) 539 cmd = '%s : %s$' % (var, 
value.rstrip(';')) --> 540 self.eval(cmd) File 
/usr/local/sage-10/src/sage/interfaces/maxima_lib.py:486, in 
MaximaLib._eval_line(self, line, locals, reformat, **kwds) 485 if 
statement: --> 486 maxima_eval("#$%s$" % statement) 487 if not reformat: 
File /usr/local/sage-10/src/sage/libs/ecl.pyx:837, in 
sage.libs.ecl.EclObject.__call__() 836 """ --> 837 lispargs = 
EclObject(list(args)) 838 return ecl_wrap(ecl_safe_apply(self.obj, 
(<EclObject>lispargs).obj)) File 
/usr/local/sage-10/src/sage/libs/ecl.pyx:698, in 
sage.libs.ecl.EclObject.__init__() 697 elif len(args) == 1: --> 698 
self.set_obj(python_to_ecl(args[0], True)) 699 elif len(args) == 2: File 
/usr/local/sage-10/src/sage/libs/ecl.pyx:481, in 
sage.libs.ecl.python_to_ecl() 480 for i in range(len(pyobj) - 1, -1, -1): 
--> 481 L = cl_cons(python_to_ecl(pyobj[i], read_strings), L) 482 return L 
File /usr/local/sage-10/src/sage/libs/ecl.pyx:458, in 
sage.libs.ecl.python_to_ecl() 457 if read_strings: --> 458 return 
ecl_safe_funcall(read_from_string_clobj, o) 459 else: File 
/usr/local/sage-10/src/sage/libs/ecl.pyx:342, in 
sage.libs.ecl.ecl_safe_funcall() 341 else: --> 342 raise RuntimeError("ECL 
says: {}".format(message)) 343 else: RuntimeError: ECL says: THROW: The 
catch MACSYMA-QUIT is undefined. During handling of the above exception, 
another exception occurred: TypeError Traceback (most recent call last) 
Cell In[243], line 1 ----> 1 
foo=copy(ID)|{IL[len(ID)].lhs():IL[len(ID)].rhs()} File 
/usr/local/sage-10/src/sage/symbolic/expression.pyx:3515, in 
sage.symbolic.expression.Expression.__bool__() 3513 if res in (True, 
False): 3514 return res -> 3515 res = 
self.operator()((self.lhs()-self.rhs()).simplify_full(), 0).test_relation() 
3516 if res in (True, False): 3517 return res File 
/usr/local/sage-10/src/sage/symbolic/expression.pyx:10737, in 
sage.symbolic.expression.Expression.simplify_full() 10735 """ 10736 x = 
self > 10737 x = x.simplify_factorial() 10738 x = x.simplify_rectform() 
10739 x = x.simplify_trig() File 
/usr/local/sage-10/src/sage/symbolic/expression.pyx:11217, in 
sage.symbolic.expression.Expression.simplify_factorial() 11215 11216 """ > 
11217 return 
self.parent()(self._maxima_().makefact().factcomb().minfactorial()) 11218 
11219 factorial_simplify = simplify_factorial File 
/usr/local/sage-10/src/sage/symbolic/expression.pyx:1227, in 
sage.symbolic.expression.Expression._maxima_() 1225 # Maybe not such a 
great idea because the "default" interface is another one 1226 from 
sage.calculus.calculus import maxima -> 1227 return 
super()._interface_(maxima) 1228 else: 1229 return 
super()._interface_(session) File 
/usr/local/sage-10/src/sage/structure/sage_object.pyx:724, in 
sage.structure.sage_object.SageObject._interface_() 722 except Exception: 
723 raise NotImplementedError("coercion of object %s to %s not 
implemented:\n%s\n%s" % (repr(self), I)) --> 724 X = I(s) 725 if c: 726 
try: File /usr/local/sage-10/src/sage/interfaces/interface.py:299, in 
Interface.__call__(self, x, name) 296 pass 298 if isinstance(x, str): --> 
299 return cls(self, x, name=name) 300 try: 301 # Special methods do not 
and should not have an option to 302 # set the name directly, as the 
identifier assigned by the 303 # interface should stay consistent. An 
identifier with a 304 # user-assigned name might change its value, so we 
return a 305 # new element. 306 result = 
self._coerce_from_special_method(x) File 
/usr/local/sage-10/src/sage/interfaces/interface.py:751, in 
InterfaceElement.__init__(self, parent, value, is_name, name) 749 
self._name = parent._create(value, name=name) 750 except (TypeError, 
RuntimeError, ValueError) as x: --> 751 raise TypeError(x) TypeError: ECL 
says: THROW: The catch MACSYMA-QUIT is undefined. 

I’m stymied… Any idea ?
​

-- 
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-support+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-support/c627ff47-6bcb-4be9-996a-d6bf23c2a046n%40googlegroups.com.

Reply via email to