6

尽管 Abstract Algebra Add-on 是 Mathematica 的一个漂亮的软件包,但在我看来,没有什么能比GAP 更好,至少对于 Group Theory 来说是这样。几年前我看 Sage 时,发现据说有一个与 Mma 的接口,但当我仔细观察它时发现它有点原始(但可操作)。我知道埃因霍温技术大学 ( OpenMath ) 已经在一个集成/连接主要数学工具的平台上完成了工作,我什至开始研究它。但这项工作丢失了。现在我的问题:

GAP 和 Mathematica 之间是否存在、是否有人拥有并且您愿意分享?

4

2 回答 2

6

GAP FAQ似乎对此相当悲观:

8.1: 我可以从另一个程序调用 GAP 函数吗?

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

不过还是有希望的:

您可以做的是在子进程中运行 GAP 并使用管道、伪 tty、UNIX FIFO 或一些类似设备与其通信。我们已经在许多项目中成功地做到了这一点,如果您想沿着这条路线走下去,可以联系支持列表以获得更详细的建议。

更新

常见问题解答现在还显示:

最近,一些 SAGE 开发人员制作了 libGAP,它允许将整个 GAP 系统嵌入为 C 库。尽管如此,仍然不能自己嵌入单个函数,并且第一次调用 libGAP 仍然必须调用完整的 GAP 启动序列。

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

于 2011-12-17T20:18:02.627 回答
4

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

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

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

于 2011-12-17T22:17:42.667 回答