Mathematica和GAP:有接口吗?

6
虽然抽象代数附加组件是Mathematica的一个很好的包,但在我看来,在群论方面至少没有什么比GAP更好的了。几年前我看过Sage,发现它声称与Mma有接口,但仔细看后发现它有些原始(但可操作)。我知道埃因霍芬理工大学(OpenMath)已经对集成/接口主要数学工具的平台进行了研究,我甚至开始着手处理它。但是那项工作已经丢失了。现在我的问题是: 是否有人拥有GAP和Mathematica之间的接口,并愿意分享?

1
@Sjoerd,我之前做了一个不错的编辑。<:-o - Mr.Wizard
@mr.wizard 今晚有点晚了。如果我看起来有点慢,请原谅。你指的是哪个编辑? - Sjoerd C. de Vries
我创建了你纠正的语法错误。请查看编辑历史记录以获取完整的故事。 - Mr.Wizard
2个回答

6

GAP FAQ中对此似乎非常悲观:

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

简短的回答是否定的。更详细地解释一下,GAP系统的所有代数功能本质上都是使用GAP语言编写的,因此需要GAP解释器才能运行。解释器是用C编写的,但由于某些原因,它不能与同一进程中的其他代码相容,因此没有明智的方法将GAP链接到C、Java或其他程序作为子例程库。

但还有一些希望:

你可以做的是在子进程中运行GAP,并使用管道、伪终端、UNIX FIFO或类似设备进行通信。我们已经在多个项目中成功地实现了这一点,如果您想走这条路,可以联系支持列表以获取更详细的建议。

更新

FAQ现在也说明了:

最近,SAGE的一些开发人员开发出了libGAP,它允许将整个GAP系统嵌入C库。但仍然无法仅嵌入单个函数,而且对libGAP的第一个调用仍然必须调用完整的GAP启动序列。

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


我几年前曾经做到这一步。我使用了一个Java程序作为中介。(代码在需要维修的PC上。)从GAP到其他语言只能读写字符串。http://www.openmath.org/software/index.html 在这个问题上做了很多工作,但我认为该项目已经停止了。 - nilo de roock
OpenMath的思想在SCIEnce项目中得到了进一步的应用。链接页面包含支持SCSCP协议的系统列表,其中包括GAP和Mathematica实现。 - Olexandr Konovalov
与此同时,答案中引用的GAP FAQ已经进行了一些更新:请参见这里 - Olexandr Konovalov

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

请注意,我以前做过几次,效果还不错,但这意味着您无法使用 Mathematica 笔记本界面....

一个真正有用的工具是将 Mathematica 钩接到 expect(或pexpect),以便可以为 Mathematica 编写类似于控制台程序的界面。这基本上就是 Sjoerd 答案中第二个引用建议的内容。


我在 http://www.openmath.org/software/index.html 上找到了已经完成的与该问题相关的工作,但我认为该项目已经停止。也许我应该从那里开始追求。 - nilo de roock
1
@nilo 有一个名为 Pythonika 的工具可以与 Python 进行交互。使用它可能会更容易使用 pexpect。我前几天看了一下 Pythonika 的工作原理,它并不令人信任(例如使用和删除全局变量,总体上看起来很混乱),但它确实能够正常运行。此外,pexpect 似乎只适用于 Unix 系统。 - Szabolcs
谢谢@Simon和(Szabolics)。我会进一步调查,因为明年我将参加另一个群论课程,我可能会自己研究Mathematica/GAP接口。有了你们的专业建议,这应该是可行的。 - nilo de roock
@nilo:一个稳定的GAP/Mathematica接口会非常棒。我可以看到自己会使用这样的东西,所以如果有时间,我很乐意尝试帮忙! - Simon
@Simon,收到,谢谢。我会在接下来的两周内回复你。 - nilo de roock
@nilo:我将度假,不会查看SO。然后我会忙着写几篇论文。所以请慢慢来... - Simon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接