Mathematica和GAP:有接口吗?

nil*_*ock 6 wolfram-mathematica interface gap-system

尽管抽象代数附加组件对于Mathematica来说是一个很好的包,但是没有任何东西可以胜过GAP,至少不是群论.几年前,当我看着Sage的时候,我发现据说它与Mma有一个接口,但是当我仔细观察它时,它变得有点原始(但是可操作).我知道埃因霍温技术大学(OpenMath)已经在一个集成/连接主要数学工具的平台上完成了工作,我甚至开始研究它.但那项工作迷失了.现在问我的问题:

GAP和Mathematica之间的接口是否存在,是否有人愿意分享?

Sjo*_*ies 6

GAP常见问题显得较为悲观的:

8.1:我可以从其他程序调用GAP函数吗?

简短的回答是否定的.为了更全面地解释,基本上所有GAP系统的代数功能都是用GAP语言编写的,因此需要GAP解释器才能运行.解释器是用C语言编写的,但由于多种原因,它不能与同一进程中的其他代码共存,因此没有合理的方法将GAP链接到C,Java或其他程序作为子例程库.

但是有一些希望:

您可以做的是在子进程中运行GAP并使用管道,伪ttys,UNIX FIFO或某些类似设备与它进行通信.我们已经在许多项目中成功完成了这项工作,如果您想沿着这条路走下去,可以联系支持列表获取更详细的建议.

更新

常见问题解答现在也是:

最近,一些SAGE开发人员已经生成了libGAP,它允许将整个GAP系统嵌入为C库.一个人仍然不能自己嵌入单独的函数,并且第一次调用libGAP仍然需要调用完整的GAP启动序列.

或者,有许多方法可以将GAP作为服务器进程运行,并从C++程序中调用它.请参阅GAP方面的SCSCP包.有几个C和C++库实现了客户端.


Sim*_*mon 4

一种选择是使用Sage作为中间体。Sage 可以与MathematicaGAP交互。
我相信 Sage 通过以下方式与这两个程序进行交互: a)使用pexpect
在后台运行它们的控制台界面 b)知道如何将大部分 GAP 和 Mathematica 语法转换为其本机语法。

请注意,我之前已经这样做过几次并且工作正常 - 但这意味着您无法使用 Mathematica 笔记本界面......

一个真正有用的工具是将 Mathematica 连接到Expect(或pexpect),以便可以为 Mathematica 编写与控制台程序类似的接口。这基本上就是 Sjoerd 答案中第二句话所暗示的内容。