Sage Magma interface

71 views
Skip to first unread message

Kannappan Sampath

unread,
Aug 26, 2020, 12:15:44 PM8/26/20
to sage-...@googlegroups.com
Hello everyone: 

I am trying to compute with Eichler orders in a definite quaternion algebra and consequently would like for Sage and Magma to talk to each other.  I am using Sage version 9.1 and Magma version V2.25-2. I think that Sage is able to discover the Magma installation (eg. magma_console() works). 

However, in my installation, somehow many of the basic Sage<->Magma interface commands are broken. For example: 

sage: magma(1).sage()

---------------------------------------------------------------------------

RuntimeError                              Traceback (most recent call last)

<ipython-input-26-1c79c0c0379c> in <module>()

----> 1 magma(Integer(1)).sage()


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/interface.py in sage(self, *args, **kwds)

   1085             [0 0]

   1086         """

-> 1087         return self._sage_(*args, **kwds)

   1088 

   1089     def __repr__(self):


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/magma.py in _sage_(self)

   2062             Ring of integers modulo 137

   2063         """

-> 2064         z, preparse = self.Sage(nvals=2)

   2065         s = str(z)

   2066         preparse = str(preparse) == 'true'


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/magma.py in __call__(self, *args, **kwds)

   1680                                [self._obj.name()] + list(args),

   1681                                params=kwds,

-> 1682                                nvals=nvals)

   1683 

   1684     def _instancedoc_(self):


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/magma.py in function_call(self, function, args, params, nvals)

   1163         fun = "%s(%s%s)" % (function, ",".join([s.name() for s in args]), par)

   1164 

-> 1165         return self._do_call(fun, nvals)

   1166 

   1167     def _do_call(self, code, nvals):


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/magma.py in _do_call(self, code, nvals)

   1218             vars = ", ".join(v)

   1219             cmd = "%s := %s;" % (vars, code)

-> 1220             out = self.eval(cmd)

   1221             ans = tuple([MagmaElement(self, x, is_name=True) for x in v])

   1222 


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/magma.py in eval(self, x, strip, **kwds)

    561         ans = Expect.eval(self, x, **kwds).replace('\\\n', '')

    562         if 'Runtime error' in ans or 'User error' in ans:

--> 563             raise RuntimeError("Error evaluating Magma code.\nIN:%s\nOUT:%s" % (x, ans))

    564         return ans

    565 


RuntimeError: Error evaluating Magma code.

IN:_sage_[33], _sage_[16] := Sage(_sage_[24]);

OUT:

>> _sage_[33], _sage_[16] := Sage(_sage_[24]);

                             ^

User error: Identifier 'Sage' has not been declared or assigned


sage: R.<y> = PolynomialRing(QQ)

sage: S = magma(R)

---------------------------------------------------------------------------

RuntimeError                              Traceback (most recent call last)

/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/expect.py in __init__(self, parent, value, is_name, name)

   1470             try:

-> 1471                 self._name = parent._create(value, name=name)

   1472             # Convert ValueError and RuntimeError to TypeError for


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/interface.py in _create(self, value, name)

    501         name = self._next_var_name() if name is None else name

--> 502         self.set(name, value)

    503         return name


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/magma.py in set(self, var, value)

    628         """

--> 629         out = self.eval("%s:=%s" % (var, value))

    630         if out.lower().find("error") != -1:


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/magma.py in eval(self, x, strip, **kwds)

    562         if 'Runtime error' in ans or 'User error' in ans:

--> 563             raise RuntimeError("Error evaluating Magma code.\nIN:%s\nOUT:%s" % (x, ans))

    564         return ans


RuntimeError: Error evaluating Magma code.

IN:_sage_[17]:=SageCreateWithNames(PolynomialRing(_sage_ref2),["y"]);

OUT:

>> _sage_[17]:=SageCreateWithNames(PolynomialRing(_sage_ref2),["y"]);

               ^

User error: Identifier 'SageCreateWithNames' has not been declared or assigned


During handling of the above exception, another exception occurred:


TypeError                                 Traceback (most recent call last)

<ipython-input-28-a5ee0ecd878c> in <module>()

----> 1 S = magma(R)


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/magma.py in __call__(self, x, gens)

    792             pass

    793 

--> 794         A = Expect.__call__(self, x)

    795         if has_cache:

    796             x._magma_cache[self] = A


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/interface.py in __call__(self, x, name)

    302             # user-assigned name might change its value, so we return a

    303             # new element.

--> 304             result = self._coerce_from_special_method(x)

    305             return result if name is None else result.name(new_name=name)

    306         except TypeError:


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/magma.py in _coerce_from_special_method(self, x)

    831         """

    832         s = x._magma_init_(self)

--> 833         a = self(s)

    834 

    835         # dereference all _sage_ref's used in this string.


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/magma.py in __call__(self, x, gens)

    792             pass

    793 

--> 794         A = Expect.__call__(self, x)

    795         if has_cache:

    796             x._magma_cache[self] = A


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/interface.py in __call__(self, x, name)

    295 

    296         if isinstance(x, string_types):

--> 297             return cls(self, x, name=name)

    298         try:

    299             # Special methods do not and should not have an option to


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/expect.py in __init__(self, parent, value, is_name, name)

   1474             except (RuntimeError, ValueError) as x:

   1475                 self._session_number = -1

-> 1476                 raise_(TypeError, TypeError(*x.args), sys.exc_info()[2])

   1477             except BaseException:

   1478                 self._session_number = -1


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/six.py in reraise(tp, value, tb)

    690                 value = tp()

    691             if value.__traceback__ is not tb:

--> 692                 raise value.with_traceback(tb)

    693             raise value

    694         finally:


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/expect.py in __init__(self, parent, value, is_name, name)

   1469         else:

   1470             try:

-> 1471                 self._name = parent._create(value, name=name)

   1472             # Convert ValueError and RuntimeError to TypeError for

   1473             # coercion to work properly.


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/interface.py in _create(self, value, name)

    500     def _create(self, value, name=None):

    501         name = self._next_var_name() if name is None else name

--> 502         self.set(name, value)

    503         return name

    504 


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/magma.py in set(self, var, value)

    627             13/5

    628         """

--> 629         out = self.eval("%s:=%s" % (var, value))

    630         if out.lower().find("error") != -1:

    631             raise TypeError("Error executing Magma code:\n%s" % out)


/sw/lsa/centos7/sage/9.1/lib/python3.7/site-packages/sage/interfaces/magma.py in eval(self, x, strip, **kwds)

    561         ans = Expect.eval(self, x, **kwds).replace('\\\n', '')

    562         if 'Runtime error' in ans or 'User error' in ans:

--> 563             raise RuntimeError("Error evaluating Magma code.\nIN:%s\nOUT:%s" % (x, ans))

    564         return ans

    565 


TypeError: Error evaluating Magma code.

IN:_sage_[17]:=SageCreateWithNames(PolynomialRing(_sage_ref2),["y"]);

OUT:

>> _sage_[17]:=SageCreateWithNames(PolynomialRing(_sage_ref2),["y"]);

               ^

User error: Identifier 'SageCreateWithNames' has not been declared or assigned


Any ideas about how to debug the problem would be much appreciated. 

                                       Best, 
                                       Kannappan 


---------
Kannappan Sampath
Graduate Student

Department of Mathematics | University of Michigan

Kannappan Sampath

unread,
Aug 26, 2020, 10:01:16 PM8/26/20
to sage-devel
Hello everyone: 

After some poking around (and hat tip from Marc Masdeu), I notice that the source for the error might be in part due to the following: 


[knsam@gl-login1 magma]$ echo $SAGE_ROOT
/sw/lsa/centos7/sage/9.1


For some reason, sage is looking in $SAGE_ROOT/lib/sage/ext_data/magma/ and from what I can see, in my installation, there is no such thing. However, I do notice that the file containing the commands that would make this run namely basic.m is in 

$SAGE_ROOT/lib/python3.7/site-packages/sage/ext_data/magma/

Does this mean that I should somehow recompile sage with a different SAGE_ROOT, or teach Sage to look here instead when it wants to fool around with magma? Any help fixing it would be appreciated. Thank you! 

Dima Pasechnik

unread,
Aug 27, 2020, 4:03:20 AM8/27/20
to sage-devel
On Thu, Aug 27, 2020 at 3:01 AM Kannappan Sampath <kn...@umich.edu> wrote:
>
> Hello everyone:
>
> After some poking around (and hat tip from Marc Masdeu), I notice that the source for the error might be in part due to the following:
>
>
> [knsam@gl-login1 magma]$ echo $SAGE_ROOT
> /sw/lsa/centos7/sage/9.1
>
> For some reason, sage is looking in $SAGE_ROOT/lib/sage/ext_data/magma/ and from what I can see, in my installation, there is no such thing. However, I do notice that the file containing the commands that would make this run namely basic.m is in
>
> $SAGE_ROOT/lib/python3.7/site-packages/sage/ext_data/magma/
>
> Does this mean that I should somehow recompile sage with a different SAGE_ROOT, or teach Sage to look here instead when it wants to fool around with magma? Any help fixing it would be appreciated. Thank you!


Sage looks for Magma stuff in SAGE_EXTCODE/magma/, where SAGE_EXTCODE
value may be inspected by

sage: from sage.env import SAGE_EXTCODE
sage: SAGE_EXTCODE


on my installation I see the latter showing
'/mnt/opt/Sage/sage-dev/local/lib/python3.7/site-packages/sage/ext_data'
(where SAGE_ROOT==/mnt/opt/Sage/sage-dev/)

What is the value of SAGE_EXTCODE in your case?
It should be $SAGE_ROOT/lib/python3.7/site-packages/sage/ext_data/

If it's not, it has to be set to the correct value.
> --
> You received this message because you are subscribed to the Google Groups "sage-devel" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/2cf101be-f455-4bbb-91f2-2a8b0f8dc7ccn%40googlegroups.com.

Kannappan Sampath

unread,
Aug 27, 2020, 4:30:06 AM8/27/20
to sage-...@googlegroups.com
Thank you! That is very useful to know! 
Marc helped me more and I have gotten it working again! 

Thank you! 

                                       Best, 
                                       Kannappan 


---------
Kannappan Sampath
Graduate Student

Department of Mathematics | University of Michigan

You received this message because you are subscribed to a topic in the Google Groups "sage-devel" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/sage-devel/jX_1CCjwSEw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to sage-devel+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/CAAWYfq3F8W3z7m4HyWOf-LfMLQ5C8jLscjA0Yq%3Dvs%2B_PSL%3Dutg%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages