Kurze Einführung in GAP



Im folgenden soll das Computer-Algebra-System GAP kurz vorgestellt werden. In GAP kann man insbesondere sehr einfach Gruppen definieren und Berechnungen mit ihnen anstellen. Besonders bequem kann man mit Permutationsgruppen rechnen, dabei verwendet man in GAP die übliche Zykelschreibweise.

Hat man GAP installiert und gestartet, so erscheint der Eingabeprompt

gap>

Nun kann beispielsweise eine Permutationsgruppe definiert werden. Als Bezeichner für die Gruppe sind fast alle Wörter zugelassen.

gap> G1 := Group( (2,4) , (1,3,6)(2,5) );

Eine Zuweisung wird mit := ausgedrückt und eine beliebige Anweisung mit einem Semikolon abgeschlossen.
Außerdem wird jede Anweisung erst nach Betätigung der Eingabetaste von GAP verarbeitet.
Der Ausdruck Group( ... ) definiert die Permutationsgruppe, welche von den Permutationen in der Klammer erzeugt wird.
Dabei gibt man die Permutationen, wie schon erwähnt, in (disjunkter) Zykelschreibweise an.

Für bestimmte Gruppen gibt es in GAP auch feststehende Befehle: Zum Beispiel kann die symmetrische Gruppe auf n Ziffern definiert werden durch SymmetricGroup(n), also etwa:

gap> S5 := SymmetricGroup(5);

Hat man sich nun eine Gruppe definiert, kann man vielfältige Berechnungen mit ihr anstellen. Hierzu bietet GAP eine Reihe von Befehlen, deren Bedeutung sich oft von ganz alleine erschließt, z.B. Size( ), IsSimple( ), IsSolvable( ), Centre( ), NormalSubgroups( ). Für die obige Gruppe G1 könnte eine kleine Untersuchung nun folgendermaßen aussehen:

gap> G1:= Group((2,4), (1,3,6)(2,5) );
Group([ (2,4), (1,3,6)(2,5) ])
gap> Size(G1);
18
gap> NormalSubgroups(G1);
[ Group(()), Group([ (1,6,3) ]), Group([ (2,5,4) ]),
Group([ (2,5,4), (1,6,3) ]), Group([ (4,5), (2,5,4) ]),
Group([ (2,4), (1,3,6)(2,5) ]) ]
gap> IsSimple(G1);
false
gap> quit;

Mit der Anweisung gap>quit; kann GAP beendet werden.
In GAP gibt es die Möglichkeit, die Ein- und Ausgaben beim Arbeiten mit GAP zu protokollieren. Dies macht man mit der Anweisung

gap> LogTo("dateiname.txt");

Alles was nach dieser Anweisung auf dem Bildschirm zu sehen ist, wird in die Datei dateiname.txt geschrieben.
Außerdem kann man eine beliebige Textdatei mittels der Anweisung

gap> Read("dateiname.txt");

in das laufende Programm einlesen. Dies hat im Prinzip die gleiche Wirkung, wie wenn man den Inhalt der Textdatei an dieser Stelle selbst eingibt.
Ferner kann man auch Funktionen in GAP schreiben, wie das auch in üblichen Programmiersprachen der Fall ist.
Eine Funktion in GAP hat folgende Syntax:

Funktionsname:=function (übergebene Argumente)
Anweisungen
end;

Man kann nun beispielsweise eine Funktion, die in einer Textdatei gespeichert ist, in ein laufendes GAP-Programm einlesen und die Funktion dann direkt im Programm aufrufen. Will man also z.B. etwas über eine komplexe Spiegelungsgruppe erfahren, so kann man eine Funktion, in der eine Permutationsdarstellung dieser Gruppe bestimmt wird, auf diese Weise in das Programm einlesen und dann beliebige GAP-Befehle auf diese Gruppe anwenden. Indem man bei den hier vorliegenden komplexen Spiegelungsgruppen auf die zugehörigen Graphen klickt, kommt man zu einer Beschreibung der Gruppen. Hier sind jeweils Funktionen pgr4( ), pgr5( ),... , die als Ausgabe die jeweilige Gruppe in Permutationsdarstellung liefern. Die Funktion NTSize( ) ist eine eigens geschriebene Funktion, die die Anzahl und Ordnung der Normalteiler einer Gruppe ausgibt. Die Wirkung der dann folgenden Anweisungen sollte aus den Namen der Befehle klar sein.

Für eine ausführliche Beschreibung von GAP, insbesondere für die Befehle, sei auf das GAP-Tutorial verwiesen, das in der GAP 4-Installation im Verzeichnis \gap4r2\doc\htm\tut zu finden ist.

Falls man GAP downloaden beziehungsweise weitere Informationen über GAP erhalten möchte, kann man das alles z.B. auf dieser Homepage von GAP erreichen.
Dazu nur den Link anklicken und man gelangt direkt dorthin.

Hier ist nun eine Simulation von GAP anhand der Gruppe G8.
Wir wünschen Ihnen viel Spass dabei :-)


Jahn, Heinz, Todorovic 2002-02-28