[GAP Forum] Cryst and CrystCat packages
Franz Gaehler
gaehler at math.uni-bielefeld.de
Thu Jan 10 14:49:44 GMT 2013
Dear Barry Monson,
sorry for the late reply.
> I have a question about the Cryst and CrystCat packages in Gap. Is
> it possible to classify a given (and legitimate)
> AffineCrystGroupOnRight G according to standard nomenclature?
>
> Of course, I have a 4-dimensional example (whose point group is
> SymmetricGroup(4)). I would like to know where it fits into the
> Brown...Zassenhaus classification. On the other hand, since this is
> really just for my own curiosity, I don't much want to have to read
> that book more carefully. It is a bit daunting.
>
> I understand my G quite well. Besides the faithful affine
> representation I have a nice presentation and a further geometric
> interpretation. G is the so-called monodromy group of the pyramid
> over an apeirogon (infinite sided polygon).
Cryst provides a function ConjugatorSpaceGroups, which requires
the package Carat to be installed however. It returns a conjugating
affine transformation if two space groups are equivalent, or fail
otherwise. With this, you can loop over the space group catalogue
in CrystCat and find the right one. In order to make it not too
inefficient, one should skip entire classes of groups as early
as possible. I have attached such a function below.
As the original catalogue consists of left-acting space groups,
my function takes the transpose of a right-acting space group,
and compares it to the left-acting ones from the catalogue.
SpaceGroupTypeBBNWZ := function( S )
local S1, d, P, c, q, G, z, s, S2;
if IsAffineCrystGroupOnRight( S ) then
S1 := TransposedMatrixGroup(S);
elif IsAffineCrystGroupOnLeft( S )
S1 := S;
else
Error( "S must be an AffineCrystGroup" );
fi;
d := DimensionOfMatrixGroup( S1 ) - 1;
if not d in [2..4] then return fail; fi;
P := PointGroup( StandardAffineCrystGroup( S1 ) );
for c in [1 .. NrCrystalSystems( d )] do
for q in [1 .. NrQClassesCrystalSystem( d, c )] do
G := MatGroupZClass( d, c, q, 1 );
if Size( P ) <> Size( G ) then continue; fi;
if fail = ConjugatorQClass( P, G ) then continue; fi;
for z in [1 .. NrZClassesQClass( d, c, q )] do
G := MatGroupZClass( d, c, q, z );
if fail = RepresentativeAction(GL(d,Integers), P, G) then continue; fi;
for s in [1 .. NrSpaceGroupTypesZClass( d, c, q, z )] do
S2 := SpaceGroupOnLeftBBNWZ( d, c, q, z, s );
if fail <> ConjugatorSpaceGroups( S1, S2 ) then
return [d, c, q, z, s];
fi;
od;
od;
od;
od;
return fail;
end;
With best regards,
Franz Gähler
_____________________________________________________________________________
Dr. Franz Gähler Phone +49 521 / 106 3876
Faculty of Mathematics Fax +49 521 / 106 153876
University of Bielefeld Email gaehler at math.uni-bielefeld.de
D-33615 Bielefeld http://www.math.uni-bielefeld.de/~gaehler/
More information about the Forum
mailing list