[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