> < ^ Date: Thu, 14 May 1992 08:31:12 +0200
> ^ From: Frank Celler <frank.celler@math.rwth-aachen.de >
> < ^ Subject: Re: FreeGroup etc

MW> Sie belegen sukzessive den ganzen Speicher und brechen dann ab.
MW> Auch Versuche, die Gruppe mit AgGroup in eine AG Gruppe umrechnen
MW> zu lassen, scheiterten. Machen wir da etwas falsch ? (Warnungen
MW> im Handbuch Kap. 21.3) Hier ein Beispiel mit der Diedergruppe 5

Aus demgleichen Grund, warum 'ConjugacyClasses' f"ur endlich pr"asentierte
Gruppen nicht funktioniert (siehe Brief von M.Schoenert), scheitert auch
'AgGroup'. Es gibt deswegen eine spezielle Funktion 'AgGroupFpGroup',
welche eine Potenz/Kommutator oder Potenz/Konjugierten Pr"azentation
als Argument erwartet und die Ag-Gruppe zur"uckliefert. Diese Funktion
nimmt *keine* Umstellungen der Pr"asentation vor, so dass die
Erzeuger nach Tiefe sortiert sein m"ussen.

gap> G := FreeGroup( 2, "g" );
Group( g.1, g.2 )
gap> G.relators := [ G.1^2, G.2^5, G.2^G.1/G.2^4 ];
[ g.1^2, g.2^5, g.1^-1*g.2*g.1*g.2^-4 ]
gap>
gap> A := AgGroupFpGroup( G );
Group( g.1, g.2 )
gap> Size( A );
10
gap> ConjugacyClasses( A );
[ ConjugacyClass( Group( g.1, g.2 ), IdAgWord ),
  ConjugacyClass( Group( g.1, g.2 ), g.2 ),
  ConjugacyClass( Group( g.1, g.2 ), g.2^2 ),
  ConjugacyClass( Group( g.1, g.2 ), g.1 ) ]

Folgende Funktion liefert zu jedem <n> die entsprechnde Ag-Diedergruppe,
indem man 'DihedralGroup( AgWords, <n> )' aufruft.

------------------ cut here --------------- cut here ------------------------
#############################################################################
##
#F  AgWordsOps.DihedralGroup( <D>, <n> )  . . . . . . . . . .  dihedral group
##
AgWordsOps.DihedralGroup := function( AgWords, n )
    local   F,  d,  s;
d := AbstractGenerator( "d" );
s := AbstractGenerator( "s" );
F := AgFpGroup( rec( generators := [s,d],
                     relators   := [s^2,d^(n/2),d^s*d] ) );
F.isGroup := true;
F.isAgGroup := true;
F.operations := AgGroupOps;
return RefinedAgSeries(F);
end;
----------------------------------------------------------------------------

MW> Hat man eine Gruppe bereits in AG oder PAG Praesentation, so
MW> funktioniert gap hervorragend. So haben wir eine AG Gruppe von
MW> Ordnung 2^24 ohne Probleme in eine PQ Praesentation umrechnen
MW> lassen. Kann man eigentlich aus der PQ Datenstruktur wieder eine
MW> Gruppe gewinnen, die genau die Erzeugenden und PC Relationen hat,
MW> die in der Struktur angegeben sind ? Einige unserer
MW> p-Gruppenprogramme brauchen solche Praesentationen.

Ja, kann man. Eigentlich sollte 'AgGroup' dies machen, das ist aber im
Moment noch nicht so. Um eine PQ-Datenstruktur umzuwandel, kann man
'AgGroupPcp' verwenden.

gap> G := FreeGroup( 2, "g" );
Group( g.1, g.2 )
gap> G.relators := [];
[  ]
gap> P := pQuotient( G, 2, 5 );;
gap> B := AgGroupPcp( P.P );
Group( g1, g2, a3, a4, a5, a6, a7, a9, a12, a13, a14, a15, a17, a18, a19,
a21, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a35, a36, a37, a39,
a42, a43 )

mfg Frank Celler


> < [top]