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 gaeh...@math.uni-bielefeld.de D-33615 Bielefeld http://www.math.uni-bielefeld.de/~gaehler/ _______________________________________________ Forum mailing list Forum@mail.gap-system.org http://mail.gap-system.org/mailman/listinfo/forum