[GAP Forum] normalizers of normalizers of groups of order 64

Alexander Hulpke hulpke at math.colostate.edu
Thu Aug 21 00:10:53 BST 2014


Dear Forum, Dear Tim Kohl,

> Hi,
> 
> I have computed (in GAP) regular representations of the 267 groups of order 64 and also computed
> the normalizers (holomorphs) of these groups in S_64. 
> 
> What I'm after now are the normalizers of *these* holomorphs, but there are 37 of
> them that I can't get my hands on.

The cost of a normalizer calculation is in 0-th approximation proportional to the index. Calculating normalizers in S_n naively thus becomes very expensive.

To help with this, the code in GAP tries to descend immediately to a wreath product of groups of smaller degree by identifying a block system that must be fixed by the normalizer. 

So far the code in GAP only used the size of blocks as an invariant, which in your case doesn't always have a unique candidate. (So this is the reason for the slowness).

One thing one can do about it easily is to use not only the block sizes, but also (as far as the transitive groups library is available) the type of the action on the blocks (and of a block stabilizer on its block). I will add such code to the next release. (I append the change done in lib/grpprmsya.gi, in case anyone is interested in a temporary patch.)

Doing so helps with some, but not all cases, still leaving 14 groups.

I think can get the remaining normalizers with other methods, but this is not yet code that would be releasable as a general method.

Best,

    Alexander Hulpke


 
 BindGlobal("OneNormalizerfixedBlockSystem",function(G,dom)
-local b, bl;
+local b, bl,prop;
+
+  # what properties can we find easily
+  prop:=function(s)
+  local p;
+  s:=Set(dom{s});
+    p:=[Length(s)];
+
+    # type of action on blocks
+    if TRANS_AVAILABLE=true and Length(dom)/Length(s)<=TRANSDEGREES then
+      Add(p,TransitiveIdentification(Action(G,Orbit(G,s,OnSets),OnSets)));
+    fi;
+
+    # type of action on blocks
+    if TRANS_AVAILABLE=true and Length(s)<=TRANSDEGREES then
+      Add(p,TransitiveIdentification(Action(Stabilizer(G,s,OnSets),s)));
+    fi;
+
+    if Length(p)=1 then
+      return p[1];
+    else
+      return p;
+    fi;
+  end;
+
   if IsPrimeInt(Length(dom)) then
     # no need trying
     return fail;
   fi;
   b:=AllBlocks(Action(G,dom));
-  bl:=Collected(List(b,Length));
+  b:=ShallowCopy(b);
+
+  #Print(List(b,Length),"\n");
+  bl:=Collected(List(b,prop));
   bl:=Filtered(bl,i->i[2]=1);
   if Length(bl)=0 then
     Info(InfoGroup,3,"No normalizerfixed block found");
     return fail;
   fi;
-  b:=First(b,i->Length(i)=bl[1][1]);
+  b:=First(b,i->prop(i)=bl[1][1]);
   Info(InfoGroup,3,"Normalizerfixed block system blocksize ",Length(b));
   return Set(Orbit(G,Set(dom{b}),OnSets));
 end);






More information about the Forum mailing list