2011-12-17 9 views
6

Sebbene il componente aggiuntivo Algebra astratta sia un bel pacchetto per Mathematica, non c'è niente che batte GAP, almeno non per la teoria di gruppo. Quando ho guardato Sage alcuni anni fa, ho scoperto che diceva di avere un'interfaccia con Mma, ma quando l'ho guardato più da vicino si è rivelato un po 'primitivo (ma operativo). So che il lavoro è stato fatto all'Università Tecnica di Eindhoven (OpenMath) su una piattaforma per integrare/interfacciare i principali strumenti matematici, ho persino iniziato a lavorarci su. Ma quel lavoro si è perso. Ora alla mia domanda:Mathematica e GAP: esiste un'interfaccia?

C'è, qualcuno ha e sei disposto a condividere un'interfaccia tra GAP e Mathematica?

+1

@Sjoerd bella modifica ho fatto un po 'indietro. <: - o –

+0

@ mr.wizard Era tardi stanotte. Per favore perdonami se sembro lento. A quale modifica ti riferisci? –

+0

Ho creato l'errore grammaticale corretto. Vedi la cronologia delle modifiche per l'intera storia. –

risposta

4

Una delle opzioni è utilizzare Sage come intermedio. Sage può interfacciare entrambi con Mathematica e GAP.
Credo che le interfacce Sage con entrambi i programmi per:
a) in esecuzione le loro interfacce console in background utilizzando pexpect
b) sapere come tradurre la maggior parte del GAP e la sintassi Mathematica nella sua sintassi nativa.

Nota che ho fatto questo un paio di volte prima e funziona bene - ma significa che non si arriva a utilizzare l'interfaccia notebook di Mathematica ....

uno strumento davvero utile sarebbe quello di agganciare Mathematica fino a expect (o pexpect) in modo che le interfacce simili ai programmi di console possano essere scritte per Mathematica. Questo è fondamentalmente ciò che suggerisce la seconda citazione nella risposta di Sjoerd.

+0

Ho trovato il lavoro che è già stato fatto sul problema all'indirizzo http://www.openmath.org/software/index.html, ma penso che il progetto sia morto. Forse dovrei perseguire da lì. –

+1

@nilo C'è [Pythonika] (http://code.google.com/p/pythonika/) per l'interfaccia con Python. Potrebbe rendere più semplice l'uso di pexpect. Ho guardato come Pythonika lavora l'altro giorno e non ispira fiducia (ad esempio usa e rimuove le variabili di Global' e sembra in disordine in generale), ma funziona. Inoltre, pexpect sembra essere solo Unix. – Szabolcs

+0

Grazie. @Simon e (Szabolics). Investigherò ulteriormente, poiché il prossimo anno farò un altro corso in Teoria dei gruppi, potrei lavorare io stesso sull'interfaccia Mathematica/GAP. Con tutti i tuoi consigli di esperti questo dovrebbe essere fattibile. –

6

La GAP FAQ sembra essere piuttosto pessimista su questo:

8,1: Posso chiamare funzioni GAP da un altro programma?

La risposta breve è. Per spiegare un po 'più pienamente, in sostanza, la funzionalità algebrica del sistema GAP è scritta nel linguaggio GAP nella lingua GAP e pertanto è necessario eseguire l'interprete GAP. L'interprete è scritto in C, ma non coesiste felicemente con altro codice nello stesso processo, per motivi diversi, quindi non esiste un modo ragionevole per collegare GAP in un C, Java o altro programma come libreria di subroutine.

c'è qualche speranza, però:

cosa si può fare è quello di eseguire GAP in un processo figlio e comunicare con utilizzando tubi, pseudo-ttys, FIFO UNIX o qualche simile dispositivo. Noi abbiamo fatto questo con successo in un certo numero di progetti, e tu puoi contattare l'elenco di supporto per un consiglio più dettagliato se vuoi andare su questo percorso .

Aggiornamento

La FAQ ora legge anche:

tempi relativamente recenti, alcuni dei SAGE sviluppatori hanno prodotto libGAP, che consente l'intero sistema GAP per essere incorporato come libreria C . Tuttavia, non è ancora possibile incorporare singole funzioni da soli e la prima chiamata a libGAP deve comunque richiamare la sequenza di avvio GAP completa.

In alternativa, esistono diversi modi per eseguire GAP come processo server e chiamarlo da C dei programmi C++. Vedi il pacchetto SCSCP per il lato GAP. Esistono diverse librerie C e C++ che implementano il lato client.

+0

Sono arrivato fino a questo punto, alcuni anni fa. Ho usato un programma Java come intermediario. (Il codice è su un PC che deve essere riparato). Da e verso GAP è possibile solo leggere e scrivere stringhe. http://www.openmath.org/software/index.html ha lavorato molto sul problema, ma penso che il progetto sia morto. –

+0

Le idee di OpenMath trovano ulteriore utilizzo nel [progetto SCIEnce] (http://www.symcomp.org/). La pagina collegata contiene un elenco di sistemi che supportano il protocollo SCSCP e sono presenti entrambe le implementazioni GAP e Mathematica. –

+0

Nel frattempo, le FAQ GAP citate nella risposta sono state leggermente aggiornate: si veda [qui] (http://www.gap-system.org/Faq/faq.html#8.1). –