/* Gruppentheorie */

/* Verschiedene vorimplementierte Gruppen in Magma */

/* Abelsche Gruppen*/
A := AbelianGroup([2,3,5]);
A;
A:= AbelianGroup(GrpPerm, [2,3,5]);
A;

/* Symmetrische und alternierende Gruppen */
S4 := SymmetricGroup(4);
S4;
A4 := AlternatingGroup(4);
A4;

/* Definition von Elementen in symmetrischen und alternierenden Gruppen */
A4!(1,2,3);
A4!(1,2);
S4!(1,2);

/* Eine einfache Implementierung des Signums-Homomorphismus */
Signum := function(tau)
    n := #Eltseq(tau);
    A := ZeroMatrix(Integers(), n, n);
    for i:=1 to n do
        A[i, i^tau] := 1;
    end for;
    return Determinant(A);
end function;

/* Simple Tests zur Korrektheit der definierten Funktion */
G := SymmetricGroup(4);
[Signum(g) : g in G];
[Signum(g) eq Sign(g) : g in G];   /* Vergleich mit der vorimplemetierten MAGMA-Funktion */


/* Diedergruppen */
D := DihedralGroup(11);
D;

IsIsomorphic( DihedralGroup(11), SymmetricGroup(3) );
IsIsomorphic( DihedralGroup(3), SymmetricGroup(3) );  /* Beweisen Sie die Isomorphie */
