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);




_______________________________________________
Forum mailing list
Forum@mail.gap-system.org
http://mail.gap-system.org/mailman/listinfo/forum

Reply via email to