6

Abstract Algebra Add-on は Mathematica の美しいパッケージですが、少なくとも群論ではGAPに勝るものはありません。数年前に 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、または同様のデバイスを使用してGAPと通信することです。これは多くのプロジェクトで成功を収めています。このルートをたどりたい場合は、サポートリストに連絡して詳細なアドバイスを得ることができます。

アップデート

FAQには次のようにも書かれています。

比較的最近、SAGE開発者の一部がlibGAPを作成しました。これにより、GAPシステム全体をCライブラリとして組み込むことができます。ただし、それでも個々の関数を単独で埋め込むことはできず、libGAPを最初に呼び出すには、完全なGAP起動シーケンスを呼び出す必要があります。

または、GAPをサーバープロセスとして実行し、C++プログラムのCから呼び出す方法はいくつかあります。GAP側のSCSCPパッケージを参照してください。クライアント側を実装するCおよびC++ライブラリがいくつかあります。

于 2011-12-17T20:18:02.627 に答える
4

1 つのオプションは、Sageを中間体として使用することです。Sage はMathematicaGAPの両方と連携できます。
Sage は次の方法で両方のプログラムとやり取りしていると思います: a) pexpect
を使用してコンソール インターフェイスをバックグラウンドで実行する b) ほとんどの GAP と Mathematica の構文をネイティブの構文に変換する方法を知っている。

これは以前に数回行ったことがあり、問題なく動作することに注意してください。ただし、Mathematica ノートブック インターフェイスを使用できないことを意味します。

本当に便利なツールは Mathematica をexpect (またはpexpect ) に接続してコンソールプログラムへの同様のインターフェースを Mathematica 用に書くことができるようにすることです. これは基本的に、Sjoerd の回答の 2 番目の引用が示唆していることです。

于 2011-12-17T22:17:42.667 に答える