Mathematica и GAP: есть ли интерфейс? - PullRequest
6 голосов
/ 17 декабря 2011

Хотя надстройка «Абстрактная алгебра» - прекрасный пакет для Mathematica, imo ничто не сравнит с GAP , по крайней мере, для теории групп.Когда я посмотрел на Sage несколько лет назад, я обнаружил, что у него есть интерфейс с Mma, но когда я посмотрел на него поближе, он оказался несколько примитивным (но работающим).Я знаю, что в Техническом университете Эйндховена ( OpenMath ) была проделана работа над платформой для интеграции / сопряжения основных математических инструментов, я даже начал над ней работать.Но эта работа потерялась.Теперь на мой вопрос:

Есть ли у кого-нибудь, и вы готовы поделиться, интерфейс между GAP и Mathematica?

Ответы [ 2 ]

6 голосов
/ 18 декабря 2011

FAQ GAP выглядит довольно пессимистично по этому поводу:

8.1: можно ли вызывать функции GAP из другой программы?

краткий ответ - нет .Чтобы объяснить чуть более подробно, по существу, все алгебраические функции системы GAP написаны на языке GAP, и поэтому для их работы требуется интерпретатор GAP.Интерпретатор написан на C, но по ряду причин счастливо не сосуществует с другим кодом в том же процессе, поэтому нет разумного способа связать GAP с C, Java или другой программой как библиотекой подпрограмм.

Однако есть некоторая надежда:

Что вы можете сделать , это запустить GAP в дочернем процессе и взаимодействовать с ним с использованием каналов, псевдо-ttys, UNIX FIFO или аналогичные устройства.Мы успешно сделали это в ряде проектов, и вы можете обратиться к списку поддержки для получения более подробной информации, если хотите пойти по этому пути.

Обновление

FAQ теперь также гласит:

Относительно недавно некоторые разработчики SAGE создали libGAP, который позволяет встраивать всю систему GAP в виде библиотеки C.Однако по-прежнему невозможно встроить отдельные функции самостоятельно, и при первом вызове libGAP все равно должна вызываться полная последовательность запуска GAP.

В качестве альтернативы, существует ряд способов запуска GAP в качестве серверного процесса.и вызывая его из C программ C ++.Посмотрите пакет SCSCP для стороны GAP.Существует несколько библиотек C и C ++, которые реализуют клиентскую часть.

4 голосов
/ 18 декабря 2011

Один из вариантов - использовать Мудрец в качестве промежуточного звена. Sage может взаимодействовать как с Mathematica , так и с GAP .
Я считаю, что Sage взаимодействует с обеими программами:
а) запуск их консольных интерфейсов в фоновом режиме с использованием pexpect
б) умение переводить большую часть синтаксиса GAP и Mathematica в его собственный синтаксис.

Обратите внимание, что я делал это пару раз раньше, и все работает нормально - но это означает, что вы не можете использовать интерфейс ноутбука Mathematica ....

Действительно полезным инструментом было бы подключить Mathematica до ожидают (или pexpect ), чтобы подобные интерфейсы для консольных программ могли быть написаны для Mathematica. Это в основном то, что предлагает вторая цитата в ответе Шёрда.

...