Martin,

On Sat, Aug 16, 2008 at 1:59 AM, Martin Rubey wrote:
>
> Bill Page writes:
>
>> I am not so sure that a similar role can be played by FriCAS.
>> The FriCAS/Axiom libraries are not so easily called by an
>> external program. Instead we have the same option to interface
>> with FriCAS as we have with Maxima - via the pseudo-terminal
>> (pty) serial interface. This has the same drawbacks in both
>> Maxima and FriCAS.
>
> I recently thought that it might be quite easy to have a domain
> SAGEForm, similar to OutputForm or --
>
> actually, doesn't OpenMath provide what SAGE needs?
>

OpenMath was an early attempt to do something much more ambitious than
what Sage needs. *If* the OpenMath option in Axiom was working today,
then it would indeed be a good way to pass output from Axiom back to
Sage while retaining as much of the Axiom type information as
possible. The necessary hooks for OpenMath generation are present in
the current panAxiom code, but OpenMath as implemented in Axiom
depends on an external library that is not currently included with any
panAxiom version.

But as I said, OpenMath attempts to solve the general problem of
exporting full semantic information from a computer algebra system.
This is more than what is required for a good interface to Sage. In
panAxiom we also have the MathML output. Currently only presentation
MathML is generated but there is an extension of MathML that include
much more content (semantic) information without getting into the
generalities of OpenMath. Perhaps a 'SAGEform' domain could be based
on an extension of the MathML output option.

But still misses one of the hardest parts - mapping Axiom type
structures back to Sage in a way that other parts of Sage understand
these structures. At a mathematical level (e.g. various kinds of
polynomials) this is probably not too hard, but at a more fundamental
level things get more difficult. For example, Sage (actually
originating with Python) has not data structure directly corresponding
to 'Record' or 'Union' in Axiom. This can cause a lot of trouble when
trying to access the results of those computations in Axiom that
return complex results. You will no doubt be aware that this occurs
when accessing the output of GUESS from within Sage.

The "dumb" mode of calling an external program like Axiom just passes
a string, e.g.

  sage:  axiom('x^2+1')

then the parsing of 'x^2+1' occurs entirely within Axiom. But it is
not so interesting to always be creating and passing strings.

There is very a little documentation available in Sage about how the
conversion from Sage internal format to some external format (such as
used when calling Axiom). This happens automatically when you write
something like

  sage:  axiom(x^2+1)

without including the 'quotes'. In this case Sage parses the expression

  x^2+1

and creates a native polynomial object. Then the 'axiom' function must
now recursively process this Sage expression until it finds objects
and operations near the bottom of the tree that it knows how to
interpret as Axiom objects and operations. Most of the coding that
accomplishes this is outside of the 'axiom.py' interface itself,
distributed over several other Python classes. As far as I know
William Stein is still the best source for how this conversion works.
He has said that "really it is very simple" and I guess I do
understand parts of it, but you should expect to spend some time to
re-discover how it works sufficiently well in order to improve it.

In order to pass Axiom expressions back to Sage, it seems to me that
we might have to implement something like this only working in
reverse.

Anyway, I think there is a lot of potential for improvement in the
existing 'axiom.py' interface even without considering how to solve
the problem of an efficient application program interface. One thing
that I miss a lot when using Axiom from the Sage notebook is the
ability to embed Spad code and compile it. This should be quite
straightforward to add to 'axiom.py'.

I would be glad to work with anyone else interested in improving the
Axiom/FriCAS interface for Sage.

Regards,
Bill Page.

--~--~---------~--~----~------------~-------~--~----~
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-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to