Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

SSL factgrp.gi   Sprache: Shell

 

#############################################################################
##
##  This file is part of GAP, a system for computational discrete algebra.
##  This file's authors include Alexander Hulpke.
##
##  Copyright of GAP belongs to its developers, whose names are too numerous
##  to list here. Please refer to the COPYRIGHT file for details.
##
##  SPDX-License-Identifier: GPL-2.0-or-later
##
##  This file contains the declarations of operations for factor group maps
##

#############################################################################
##
#M  NaturalHomomorphismsPool(G) . . . . . . . . . . . . . . initialize method
##
InstallMethod(NaturalHomomorphismsPool,true,[IsGroup],0,
  G->rec(GopDone:=false,ker:=[],ops:=[],cost:=[],group:=G,lock:=[],
         intersects:=[],blocksdone:=[],in_code:=false,dotriv:=false));

#############################################################################
##
#F  EraseNaturalHomomorphismsPool(G) . . . . . . . . . . . . initialize
##
InstallGlobalFunction(EraseNaturalHomomorphismsPool,function(G)
local r;
  r:=NaturalHomomorphismsPool(G);
  if r.in_code=true then return;fi;
  r.GopDone:=false;
  r.ker:=[];
  r.ops:=[];
  r.cost:=[];
  r.group:=G;
  r.lock:=[];
  r.intersects:=[];
  r.blocksdone:=[];
  r.in_code:=false;
  r.dotriv:=false;
  r:=NaturalHomomorphismsPool(G);
end);

#############################################################################
##
#F  AddNaturalHomomorphismsPool(G,N,op[,cost[,blocksdone]]) . Store operation
##       op for kernel N if there is not already a cheaper one
##       returns false if nothing had been added and 'fail' if adding was
##       forbidden
##
InstallGlobalFunction(AddNaturalHomomorphismsPool,function(arg)
local G, N, op, pool, p, c, perm, ch, diff, nch, nd, involved, i;
  G:=arg[1];
  N:=arg[2];
  op:=arg[3];

  # don't store trivial cases
  if Size(N)=Size(G) then
    Info(InfoFactor,4,"full group");
    return false;
  elif Size(N)=1 then
    # do we really want the trivial subgroup?
    if not (HasNaturalHomomorphismsPool(G) and
      NaturalHomomorphismsPool(G).dotriv=true) then
      Info(InfoFactor,4,"trivial sub: ignore");
      return false;
    fi;
    Info(InfoFactor,4,"trivial sub: OK");
  fi;

  pool:=NaturalHomomorphismsPool(G);

  # split lists in their components
  if IsList(op) and not IsInt(op[1]) then
    p:=[];
    for i in op do
      if IsMapping(i) then
        c:=Intersection(G,KernelOfMultiplicativeGeneralMapping(i));
      else
        c:=Core(G,i);
      fi;
      Add(p,c);
      AddNaturalHomomorphismsPool(G,c,i);
    od;
    # transfer in numbers list
    op:=List(p,i->PositionSet(pool.ker,i));
    if Length(arg)<4 then
      # add the prices
      c:=Sum(pool.cost{op});
    fi;
  # compute/get costs
  elif Length(arg)>3 then
    c:=arg[4];
  else
    if IsGroup(op) then
      c:=IndexNC(G,op);
    elif IsMapping(op) then
      c:=Image(op);
      if IsPcGroup(c) then
        c:=1;
      elif IsPermGroup(c) then
        c:=NrMovedPoints(c);
      else
        c:=Size(c);
      fi;
    fi;
  fi;

  # check whether we have already a better operation (or whether this normal
  # subgroup is locked)

  p:=PositionSet(pool.ker,N);
  if p=fail then
    if pool.in_code then
      return fail;
    fi;
    p:=PositionSorted(pool.ker,N);
    # compute the permutation we have to apply finally
    perm:=PermList(Concatenation([1..p-1],[Length(pool.ker)+1],
                   [p..Length(pool.ker)]))^-1;

    # first add at the end
    p:=Length(pool.ker)+1;
    pool.ker[p]:=N;
    Info(InfoFactor,2,"Added price ",c," for size ",IndexNC(G,N),
         " in group of size ",Size(G));
  elif c>=pool.cost[p] then
    Info(InfoFactor,4,"bad price");
    return false; # nothing added
  elif pool.lock[p]=true then
    return fail; # nothing added
  else
    Info(InfoFactor,2,"Changed price ",c," for size ",IndexNC(G,N));
    perm:=();
    # update dependent costs
    ch:=[p];
    diff:=[pool.cost[p]-c];
    while Length(ch)>0 do
      nch:=[];
      nd:=[];
      for i in [1..Length(pool.ops)] do
        if IsList(pool.ops[i]) then
          involved:=Intersection(pool.ops[i],ch);
          if Length(involved)>0 then
            involved:=Sum(diff{List(involved,x->Position(ch,x))});
            pool.cost[i]:=pool.cost[i]-involved;
            Add(nch,i);
            Add(nd,involved);
          fi;
        fi;
      od;
      ch:=nch;
      diff:=nd;
    od;
  fi;

  if IsMapping(op) and not HasKernelOfMultiplicativeGeneralMapping(op) then
    SetKernelOfMultiplicativeGeneralMapping(op,N);
  fi;
  pool.ops[p]:=op;
  pool.cost[p]:=c;
  pool.lock[p]:=false;

  # update the costs of all intersections that are affected
  for i in [1..Length(pool.ker)] do
    if IsList(pool.ops[i]) and IsInt(pool.ops[i][1]) and p in pool.ops[i] then
      pool.cost[i]:=Sum(pool.cost{pool.ops[i]});
    fi;
  od;

  if Length(arg)>4 then
    pool.blocksdone[p]:=arg[5];
  else
    pool.blocksdone[p]:=false;
  fi;

  if perm<>() then
    # sort the kernels anew
    pool.ker:=Permuted(pool.ker,perm);
    # sort/modify the other components accordingly
    pool.ops:=Permuted(pool.ops,perm);
    for i in [1..Length(pool.ops)] do
      # if entries are lists of integers
      if IsList(pool.ops[i]) and IsInt(pool.ops[i][1]) then
        pool.ops[i]:=List(pool.ops[i],i->i^perm);
      fi;
    od;
    pool.cost:=Permuted(pool.cost,perm);
    pool.lock:=Permuted(pool.lock,perm);
    pool.blocksdone:=Permuted(pool.blocksdone,perm);
    pool.intersects:=Set(pool.intersects,i->List(i,j->j^perm));
  fi;

  return perm; # if anyone wants to keep the permutation
end);


#############################################################################
##
#F  LockNaturalHomomorphismsPool(G,N)  . .  store flag to prohibit changes of
##                                                               the map to N
##
InstallGlobalFunction(LockNaturalHomomorphismsPool,function(G,N)
local pool;
  pool:=NaturalHomomorphismsPool(G);
  N:=PositionSet(pool.ker,N);
  if N<>fail then
    pool.lock[N]:=true;
  fi;
end);


#############################################################################
##
#F  UnlockNaturalHomomorphismsPool(G,N) . . .  clear flag to allow changes of
##                                                               the map to N
##
InstallGlobalFunction(UnlockNaturalHomomorphismsPool,function(G,N)
local pool;
  pool:=NaturalHomomorphismsPool(G);
  N:=PositionSet(pool.ker,N);
  if N<>fail then
    pool.lock[N]:=false;
  fi;
end);


#############################################################################
##
#F  KnownNaturalHomomorphismsPool(G,N) . . . . .  check whether Hom is stored
##                                                               (or obvious)
##
InstallGlobalFunction(KnownNaturalHomomorphismsPool,function(G,N)
  return N=G or Size(N)=1
      or PositionSet(NaturalHomomorphismsPool(G).ker,N)<>fail;
end);


#############################################################################
##
#F  GetNaturalHomomorphismsPool(G,N)  . . . .  get operation for G/N if known
##
InstallGlobalFunction(GetNaturalHomomorphismsPool,function(G,N)
local pool,p,h,ise,emb,i,j;
  if not HasNaturalHomomorphismsPool(G) then
    return fail;
  fi;
  pool:=NaturalHomomorphismsPool(G);
  p:=PositionSet(pool.ker,N);
  if p<>fail then
    h:=pool.ops[p];
    if IsList(h) then
      # just stored as intersection. Construct the mapping!
      # join intersections
      ise:=ShallowCopy(h);
      for i in ise do
        if IsList(pool.ops[i]) and IsInt(pool.ops[i][1]) then
          for j in Filtered(pool.ops[i],j-> not j in ise) do
            Add(ise,j);
          od;
        elif not pool.blocksdone[i] then
          h:=GetNaturalHomomorphismsPool(G,pool.ker[i]);
          pool.in_code:=true; # don't add any new kernel here
          # (which would mess up the numbering)
          ImproveActionDegreeByBlocks(G,pool.ker[i],h);
          pool.in_code:=false;
        fi;
      od;
      ise:=List(ise,i->GetNaturalHomomorphismsPool(G,pool.ker[i]));
      if not (ForAll(ise,IsPcGroup) or ForAll(ise,IsPermGroup)) then
        ise:=List(ise,x->x*IsomorphismPermGroup(Image(x)));
      fi;

      h:=CallFuncList(DirectProduct,List(ise,Image));
      emb:=List([1..Length(ise)],i->Embedding(h,i));
      emb:=List(GeneratorsOfGroup(G),
           i->Product([1..Length(ise)],j->Image(emb[j],Image(ise[j],i))));
      ise:=SubgroupNC(h,emb);

      h:=GroupHomomorphismByImagesNC(G,ise,GeneratorsOfGroup(G),emb);
      SetKernelOfMultiplicativeGeneralMapping(h,N);
      pool.ops[p]:=h;
    elif IsGroup(h) then
      h:=FactorCosetAction(G,h,N); # will implicitly store
    fi;
    p:=h;
  fi;
  return p;
end);


#############################################################################
##
#F  DegreeNaturalHomomorphismsPool(G,N) degree for operation for G/N if known
##
InstallGlobalFunction(DegreeNaturalHomomorphismsPool,function(G,N)
local p,pool;
  pool:=NaturalHomomorphismsPool(G);
  p:=First([1..Length(pool.ker)],i->IsIdenticalObj(pool.ker[i],N));
  if p=fail then
    p:=PositionSet(pool.ker,N);
  fi;
  if p<>fail then
    p:=pool.cost[p];
  fi;
  return p;
end);


#############################################################################
##
#F  CloseNaturalHomomorphismsPool(<G>[,<N>]) . . calc intersections of known
##         operation kernels, don't continue anything which is smaller than N
##
InstallGlobalFunction(CloseNaturalHomomorphismsPool,function(arg)
local G,pool,p,comb,i,c,perm,isi,N,discard,Npos,psub,pder,new,co,pos,j,k;

  G:=arg[1];
  pool:=NaturalHomomorphismsPool(G);
  p:=[1..Length(pool.ker)];

  Npos:=fail;
  if Length(arg)>1 then
    # get those p that lie above N
    N:=arg[2];
    p:=Filtered(p,i->IsSubset(pool.ker[i],N));
    if Length(p)=0 then
      return;
    fi;
    SortParallel(List(pool.ker{p},Size),p);
    if Size(pool.ker[p[1]])=Size(N) then
      # N in pool
      Npos:=p[1];
      c:=pool.cost[Npos];
      p:=Filtered(p,x->pool.cost[x]<c);
    fi;
  else
    SortParallel(List(pool.ker{p},Size),p);
    N:=fail;
  fi;

  if Size(Intersection(pool.ker{p}))>Size(N) then
    # cannot reach N
    return;
  fi;

  # determine inclusion, derived
  psub:=List(pool.ker,x->0);
  pder:=List(pool.ker,x->0);
  discard:=[];
  for i in [1..Length(p)] do
    c:=Filtered(p{[1..i-1]},x->IsSubset(pool.ker[p[i]],pool.ker[x]));
    psub[p[i]]:=Set(c);
    if ForAny(c,x->pool.cost[x]<=pool.cost[p[i]]) then
      AddSet(discard,p[i]);
    fi;
    c:=DerivedSubgroup(pool.ker[p[i]]);
    if N<>fail then c:=ClosureGroup(N,c);fi;
    pder[p[i]]:=Position    #########################################################################
  od##  This file is part of GAP, a system for computational discrete algebra.
#if Length(discard)>0 then Error(discard);fi;
#discard:=[];
  p:=##  to list here. Please refer to theor-later
  for i in java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 2

  new:=p;
  repeat
    # now intersect, staring from top
##       forbidden
      G N ,pool p, c, java.lang.StringIndexOutOfBoundsException: Range [42, 36) out of bounds for length 65
    else# do we really want the trivial subgroup?
      NaturalHomomorphismsPool)=rue) 
    ;
        ;
    ,2,CloseNaturalHomomorphismsPool: "(combcomb))java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
    new:=[]    :[]java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
    discard:=[];
    =;
     i=comb do
      co:=comb[i];
      # unless they contained in each other
      if not (co[1] in psub[co[2]] or co[2] in psub[co[1]]
        # or there a subgroup below both that is already at least as cheap
        or ForAny(Intersection(psub[co[1]],psub[java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
          .costco[]+co])
        ifjava.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 25
        or  Length)3 
andpder[[]<>Npos) java.lang.StringIndexOutOfBoundsException: Range [40, 41) out of bounds for length 40
        c:=Intersection(pool.ker[co[1]],pool.ker[co[2]]);

        pos:=Position(pool.ker,c);
        if pos=fail or pool.cost[pos]>pool.cost[co[1]]+pool.cost[co[2]] then
          Info(InfoFactor,3,"Intersect ",co,": ",
              Size(pool.ker[co[1]])," ",Size(pool.ker[co[2]]),
                " yields ",Size(c));
          isi:=ShallowCopy(co);

          # unpack 'iterated' lists
          if IsList(pool.ops[co[2]]) and IsInt(pool.ops[co[2]][1]) then
            isi:=Concatenation(isi{[1]},pool.ops[co[2]]);
          fi;
          if IsList(pool.ops[co[1]]) and IsInt(pool.ops[co[1]][1]) then
            isi:=Concatenation(isi{[2..Length(isi)]},pool.ops[co[1]]);
          fi;
          isi:=Set(isi);

          perm:=AddNaturalHomomorphismsPool(G,c,isi,Sum(pool.cost{co}));
          if pos=fail then
            pos:=Position(pool.ker,c);
            p:=List(p,i->i^perm);
            new:=List(new,i->i^perm);
            discard:=OnSets(discard,perm);
            #pder:=Permuted(List(pder,x->x^perm),perm);
            for k in [1..Length(pder)] do
              if IsPosInt(pder[k]) then pder[k]:=pder[k]^perm;fi;
            od;
            Add(pder,0);
            pder:=Permuted(java.lang.StringIndexOutOfBoundsException: Range [0, 31) out of bounds for length 27
            #psub:=Permuted(List(psub,x->OnTuples(x,perm)));c=Imageop;
             k in in [..Length(psub)] do
              if IsList(psub[k]) then psub[k]:=OnSets(psub[k],perm);fi;
             elif IsPermGroup(c) then
            Add(psub,0);
            java.lang.StringIndexOutOfBoundsException: Range [26, 16) out of bounds for length 38

            Apply(comb,j->OnSets(j,perm));

            # add new c if needed
            for j in p do
                  fi;
                AddSet(psub[j],pos);
                if pool.cost  # subgroup is locked)
                  (discard,j);
                fi;
              fi;
            ;
            psub[pos]:=Set(java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 18
            pder[pos]:=fail;

          else
            if perm<>() then Error("why perm here?");fi;
            psub[pos]:=Set(Filtered(p,x->IsSubset(c,pool.ker[x])));

          fi;
          AddSet(new,pos);
          if ForAny(psub[pos],x->pool.cost[x]<=pool.cost[pos]) then
            (discard,pos)java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
         ;
          pder[pos]:[p.(java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 46
          ifcNand.costpos]^<=ndexNC(G,)then
            return;    :=ength.ker)+;
          fi;

        else
          Info    pool.erp:N;
Size(pool.ker[co[]],""Sizepool.[o2],
                " yields ",         " in group of size "(G)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
        fi;

      fi;
      i:=i+1    return false; # nothing added
    od;
#discard:=[];
    for i in discard do    return fail;# nothing added
    pInfoInfoFactor,2,"hanged  ",,"for  "IndexNC(,N);
    new::()java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
SortParallel(List(pool.ker{p},Size),p);
    SortParallel(List(pool.ker:[cost[]-c]
ew)=;

end);


#############################################################################
##
#F  FactorCosetAction( <G>, <U>, [<N>] )  operation on the right cosets Ug
##                                        with possibility to indicate kernel
##
InstallGlobalFunctioninvolved:SumdiffList(nvolvedx>osition)};
local G,u,op,h,N,rt;
  G:=arg[1];
  u:=arg[            (nch,)
  if          ;
    N:=arg[3] fi;
  else      diff:java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
    N:=false;
      (op,N;
  poolojava.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 18
    u:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    (onlyjava.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
  i;
   then
    N:  od;
  fi;
  rt:=RightTransversal(G,u)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  if not    blocksdonep]=rg[5]java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
    # the right transversal has no special `PositionCanonical' method.)
    rt:= pool.er:Permuted(ool.erperm)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
  fi;
  h:=ActionHomomorphism(G,rt,OnRight,"surjective"    for i  1.(ops) 
  op:Image(,)java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
  SetSize(op,IndexNC(G,N));

  # and note our knowledge
  SetKernelOfMultiplicativeGeneralMapping
   AddNaturalHomomorphismsPool(G,N,h);
  return h;
end);

InstallMethod(FactorCosetAction,"by right transversal operation"pool.blocksdone:Permuted(pool.blocksdone,perm);
  IsIdenticalObj,[    .intersects:=etpoolintersects,i->List(i,j->j^perm));
  fi;
  return return perm; # if anyone wants keep the permutation
end);

java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 0
  "by right transversal##
  [IsGroup,IsGroup,IsGroup],0,
function(G,U,N)##                                                               the map to N
  return DoFactorCosetAction(G,U,N);
end)##

InstallMethod(FactorCosetAction,"by right transversal operation, Niceo",
  pool=NaturalHomomorphismsPool(G);
function(G,U)
local hom;
  hom:=RestrictedNiceMonomorphism(  N:=ositionSet(pool.ker,N);
  return hom*java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 17
end);

java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 0
  "#F  KnownNaturalHomomorphismsPool(G,N) . . . . .  check whether Hom is stored
  [IsGroup and IsHandledByNiceMonomorphism,IsGroup,IsGroup],0,
function(G,U,N)
local hom;
  hom:=##                                                               (or obvious)
 return homDoFactorCosetActionNiceObject(),mage(om,)Ihom,));
end);

# action on lists of subgroups
InstallOtherMethod(java.lang.StringIndexOutOfBoundsException: Range [0, 36) out of bounds for length 5
  "On cosets of list of groups",IsElmsColls,
  [,IsList,,
function(G,L)
local qpool,,ise,mb,,;
  L=0ornot ForAll(,-IsGroup()andIsSubsetGx)then
    returnjava.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
  fi;
  q:=List(L,x-  if p<fail then
  :MappingGeneratorsImagesq[])1;
  imgs:=List(q,x->List(gens,y->     IsList() then
  d:=imgs[1];
        ise:ShallowCopy()
    d:=SubdirectDiagonalPerms(d,imgs[i        if IsList(pool.psi) and IsIntpool.ps[]1])then
odjava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
  imgs:=Group(          od;
 q:=roupHomomorphismByImagesNCimgs,ensd;
  return q;          :=GetNaturalHomomorphismsPoolG,oolker])
end)


#############################################################################
##
#M  DoCheapActionImages(G) . . . . . . . . . . All cheap operations for G
##
InstallMethod        fi

lMethod(oCheapActionImages,permutation"true,IsPermGroup],,
function(G)
local pool, dom, o, op, Go, j, b, i,allb,newb,mov,allbold,onlykernel,k,
  found,type;

  onlykernel:=java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 9
  found:=      emb:=List1.Length(ise)]i>mbedding(i));
  pool:=NaturalHomomorphismsPool(G);
  if pool.GopDone=false then

:=MovedPointsG)
    # orbits      :=roupHomomorphismByImagesNC(,se,(G,emb;
    =(,);
     pool.ps[]=;

    # do orbits and test for blocks
    foriino do
      if Length(i)<>Length(dom) or
        # only works if domain are the first n points
          pjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
        op#F  DegreeNaturalHomomorphismsPool(G,N) java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 2
        Rangel pjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
          p:=First([1..Length(pool.ker)],i-#This is ofGAP system computational discrete#  This file's authors include Alexander Hulpke.
    :java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
        fijava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
  
        op:=IdentityMapping(   java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
        type:=2##
      fi;

      Go:=Image(op,G);
      # all minimal and maximal blocks##
      mov=ovedPoints(o;
      allb:=ShallowCopy(RepresentativesMinimalBlocks(Go,mov));
      :[]
        G:=arg[1]
      while Length(llb)>0do
        j:Remove(allb  p=1.ength(ool.]
       (llboldj;
    intersects=]]:[,n_code:,otriv=;
        # >1.
        if Length(#    : EraseNaturalHomomorphismsPool().... .. ......initialize
rbit(,{,nSets))java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50

          #Add(bl,Immutable(Set(b)));;
          (G if.=then returnfi;
ImagesSource(onlyimage;#`onlyimage' forces same generators
          k=ernelOfMultiplicativeGeneralMappingop      
           onlykernel<fail onlykernelr.java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 12
      =()
  r.intersects:=]
          lHomomorphismsPool(,,;

        # also one finer blocks (to make up for iterating only once))
           type= then
            ##       op for
          else
            newb:B   ;
          fi;

  op:arg3];
            newb=Union(newb[1];
            if not ( # determine inclusion, derived
               Addallbnewb);
                        SortBy(llb,);
            fi;
          fijava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13

        ;

  od;

      #if Length(i)<500 and Size(Go)>10*Length(i) then
      #else
#        # one block system
#        b:=Blocks(G,i);
#        if Length(b)>1 then
#          Add(bl,Immutable(Set(b)));
#        fi;
#      fi;
    od;

      (InfoFactor,4,"trivial sub: ignore");
      return ;

  fi;

BindGlobal("DoActionBlocksForKernel",
function(G,mustfaithful)
local dom, ,bl ,ballb,;

  dom:=MovedPoints(G);
  # orbits
  o:=OrbitsDomain(G,dom);
  java.lang.StringIndexOutOfBoundsException: Range [14, 3) out of bounds for length 16


  # all good blocks
  bl:=dom;
  allb:=ShallowCopy(    ;
  for j in allb 
engthdom)Length(j)<(bl)and
     Size(Core(mustfaithful,Stabilizer(mustfaithful,j,OnSets))=1
      then
        b=Orbit(G,,)
        bl:=b;
         onefiner (we   once)
        newb:=Blocks(G,b,OnSets);
        Lengthnewb)>then
          newb:=Union(newb[1# there  subgroup belowbelow  that isalready at least cheap
          if not newb in allb then
            Add(allb          -pool.[x<pool.ost[co[]pool.cost[[2]java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
          fi;
        fi;
    fi;
  od;
  if Lengthbl)L(dom)
    return bl;
  else
return fail;
  fi;

end);


#############################################################################
##
#F  GenericFindActionKernel  random search for subgroup with faithful core
##
   Info(InfoFactor,3""co" ,
BindGlobal( "GenericFindActionKernel", function              Sizepool.er[co[1]]," ",Size(.ker[2],
     isi=co);
totalcnt, interrupt, u, nu          (ool.ops[o2] and IsInt(poolopsco[]][] then

  G:=arg[]java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
  N:=arg[2];
  if Length(arg)>2 then
    knowi:=rg[];
  else
    knowi:          fi;
  fi;

  # special treatment for solvable groups. This will never be triggered for
  # perm groups or nice groups
  >1 and HasSolvableFactorGroup(G,N) then
    perm:=ActionHomomorphism(G,RightCosets(G,N),OnRight,"surjective")            pos:=Position(pool.ker,c);
    perm:=perm*IsomorphismPcGroup(Image(perm))            :List,i-i^erm;
    return perm;
  fi;

  # special treatment for abelian factor
  if HasAbelianFactorGroup(G,) then
    if IsPermGroup(G)            
           return IdentityMapping(G);
    else
      perm=ActionHomomorphism(G,RightCosets(G,N),OnRight,"surjective");
    fi;
    return             od
  fi;

  bigperm:IsPermGroup(G)and NrMovedPoints(G)>10000;

  # what is a good degree:#psub=Permuted(List(,x>OnTuples(x,perm)));
  goodi:=Minimum(Int(knowi*9/10)fork [1.Length(psub)]do

pleGroup() IsNonabelianSimpleGroup()  Size
  uc:=TrivialSubgroup(G);
  # look if it is worth to look at action on N
  # if not abelian: later replace by abelian Normal subgroup
  if IsAbelian(N) and (Size(N)>50 or IndexNC(G,N)<Factorial(Size(N)))
      and Size(N)<50000 then
    zen:=Centralizer(G,N);
    ifSize(zen)=Size(N) 
      cnt:=0;
      repeat
        cnt:=cnt+            (comb,-OnSets(j,perm));
        zen:=Centralizer(G,Random(N));
        if (simple or java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 0
            IndexNC(G,zen)<IndexNC(G,uc) then
          :=;
        fi;
      # until enough searched or just one orbit
      until cnt=9 or IndexNC(G,zen)+1=Size(N));
      AddNaturalHomomorphismsPool(G,N,uc,IndexNC(G,uc));
    else
      Info(InfoFactor,3,                  AddSet(,j);
    fi;
  fi;

  pool:=NaturalHomomorphismsPool;
  pool.dotriv:=true;
  CloseNaturalHomomorphismsPoolN);
  pool.dotriv:=false;
  ise:=Filtered(pooljava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  if Length(isepsubp:Set
    ise:=G;
  else
    ise:=if ForAny[pos,-pool.ost[]=cpos] then
  ;

  # try a random extension step
 firstadd a  element and get something bigger)
  v:=N;

  #if Length(arg)=3 then
    ## in one example 512->90, ca. 40 triesreturn # we found something plausible
    #cnt:=Int(arg[3]/10);
   #else
    #cnt:=25;
  #fi;

  badcores                " yields ,c);
  badi:=BADINDEX;
  hard:=ValueOptionjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  hard=ail then
    hard:=100000;
  elifp=ifferenceU(,,iscard);
;
  fiSortParallel(List(poolkerp,Size);
  totalcnt:=0;
  interrupt:=false;
  cnt:=20;
  repeat
    u:=v;
    repeat
      repeat
        if Length(arg)<4 or Random(1,2)=1 then
          if IsCyclic(u) and Random(1,4)=1 then
            # avoid being stuck with a bad first elementlocal  G,,op,,Nrtjava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
u:(G,RG];
          fi;
          if Length(GeneratorsOfGroup(u))<2 then
            # closing might cost a big stabilizer chain calculation -- just
            # recreate
            nu:Group((GeneratorsOfGroup(u,java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 10
          else
            nu:=,if = then
         ;
        else
          if Length(GeneratorsOfGroup(u)  AddNaturalHomomorphismsPoolG
t costjava.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 75
            # recreate
            :=roupConcatenation(    # the right transversal has no special
          else
            nu:=ClosureGroup( h:A(G,rt,,"")java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
          fi;
        fi;
        SetParent(nu,G);
        totalcnt:=totalcnt+1;
        if (G,N) and
          Minimum(IndexNC(G,v),knowi)<hard
             >Minimum((Gv),nowi,1000)then
          # interrupt if we're already quite good
          interrupt:=true;
        fi;
        if ForAny(badcores,x->IsSubset(nu,x)) then
          nu:=u;
        fi;
        # Abbruchkriterium: Bis kein Normalteiler, es sei denn, es ist N selber
    fiunctio(Njava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
        
#Print("nu=",Length(GeneratorsOfGroup(nu))," : ",Size(nu),"\n");


        
        ((not bigperm or
        function(G,U)
        (IndexNC(G,nu)>50 or Factorial(IndexNC(G,nu))>=IndexNC(G,N)) and
         IsNormal(G,nu)) or IsSubset(u,nu) or interrupt;

      Info(InfoFactor,4,"Index java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      u:=nu;

    functionG,Njava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
      # und die Gruppe ist nicht zuviel schlechter als der
      # beste bekannte Index. Daf"ur brauchen wir aber wom"oglich mehrfache
      # Erweiterungen.
            c:=Image();

    if      elif IsPermGroup(c) then

      #Print("Index:",IndexNC(G,u),"\n");

      if simple and u<>G then
java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 32
      else
        cor=Core(,)
      fi;
      if =(ocalq,gens,mgs,java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
        Add(    TryNextMethod(java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20

      # store known information(we do't act, just store the subgroup).
      # Thus this is fairly cheap
      pool.dotriv:=true;
      zzz:=AddNaturalHomomorphismsPool(G,cor,u,IndexNC(G,u));

      if IsPerm(zzz) and zzz<>() then
        CloseNaturalHomomorphismsPool(G,N);
      fi;
      pool.dotriv:=false;

      zzz:= q:=roupHomomorphismByImagesNC(G,imgs,gens,d);

      Info(InfoFactor,3,"  ext ",cnt,": ",IndexNC(G,u)," best degree:",zzz);

      if cnt<10   return q;
        ValueOption("inmax")=
        #############################################################################
          # only affine ones are needed, rest will have wrong kernel
          max:=DoMaxesTF(u,["1"]:##
        else
          max:=TryMaximalSubgroupClassReps(u:inmax,cheap);
        fi;
        Filtered(max,->IndexNC(,x)knowi and (x,))java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
        for i in max do
          cor:=Core(G,i);
          AddNaturalHomomorphismsPool(G,cor,i,IndexNC(G,i));
        od;
        zzz:=java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
        Info(InfoFactor,3,"  Maxes: "  found:=NrMovedPointsG)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
      ool.GopDone=false then
    else
      zzz:DegreeNaturalHomomorphismsPool(G,N);
    fi;
    if IsInt(zzz) then
      knowi:=zzz;
    fi

    cnt:for  in do

    if cnt=0 and zzz>badi then
      badi:=Int(badi*12/10);
      Info(InfoWarning+InfoFactor,2,
        "index unreasonably large, iterating ",badi);
      cnt:=20;
      totalcnt:=0;
      interrupt:=false;
      :=N; 
    fi;
  until interrupt or cnt<=0 AddNaturalHomomorphismsPool(G,Stabilizer(G,i,OnTuples),
InfoInfoFactor,1zzz, vs ",);

  return GetNaturalHomomorphismsPool(G,N);

end );

#############################################################################
        type:=2;
#F  SmallerDegreePermutationRepresentation( <G> )
##
InstallGlobalFunction(SmallerDegreePermutationRepresentation=ovedPoints);
local o, s, k, gut, erg, H,       =hallowCopy(RepresentativesMinimalBlocks(Gomov));
  i,cheap,k2,change;

  change:=SortBy(allb,Length);
  java.lang.StringIndexOutOfBoundsException: Range [17, 6) out of bounds for length 84
  cheap:=ValueOption("cheap");
  if cheap="skip" then
    return IdentityMapping(G);
  fi;

  cheap:=cheap=true;

  if Length(GeneratorsOfGroup(G        if Lengthi)Length)foundthen
    s=SmallGeneratingSet(G);
    if Length(s)=0 then java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
    if Length(s)Length((G)-1 then
      Info(          ImagesSource(op:onlyimage);#onlyimage''forces  generators
      H:=s;
      change:=true;
      SetSize(,(G);
      return SmallerDegreePermutationRepresentation(H);
                found:=(;
  fi;


  # deal with large abelian components first (which could be direct)
  if cheap<>true then
    hom:=# also one finer blocks(omake  for iterating only once)
    i:=          iftype=2 then
    o:=List(i,Order);
    if ValueOption("norecurse")<>true and
      Product(o)>20 and Sum(o)*4<NrMovedPoints(G) java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 14
      Info(InfoFactor,2
      s:=AbelianGroup(IsPermGroup,o);
      ihom:          Lengthnewb>1 then
      erg            newb=Union(newb[]);
            List(            if not (newb in allb ornot (newb in allb or newb inallbold)then
            GeneratorsOfGroup(G));
      k:Group(erg);SetSize(k,Size(G));
      hom:=GroupHomomorphismByImagesNC(G,k,GeneratorsOfGroup(G),erg);
      return hom*SmallerDegreePermutationRepresentation(k:norecurse);
    fi;
  fi;

  # known simple?
  if java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      #        # one block system
        then return IdentityMapping(G);
  fi;

  if not IsTransitive(G,MovedPoints(G)) then
    o:=ShallowCopy(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    SortBy(o, Length

    for loop in
      s=[;
      # Try subdirect product
      k:=G;
      :=];
      for
        :=Stabilizer(k,o[]OnTuples)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
          p
          k:=s;
          Add(gutbl=dom;
        fi;
      od;
      # reduce each orbit separately
      o:{gut};
      # second run: now take the big orbits first
      Sort(o,      Size(CoreSizeCoreustfaithful,Stabilizer(mustfaithful,j,OnSets)))=1
    od;

    SortBy(o, Length);

    erg:=List(GeneratorsOfGroup(G),i-# also one finer blocks (as we iterate only once)
    k:=G;
fori  [1.Length(o)]do
      Info(InfoFactor,1,"Try to shorten           if notnewb in allb then
      s:=ActionHomomorphismAddallb,newb)java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
      k2:=java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 7
      k:Stabilizer(k,o[i],OnTuples);
      H:=Range(                p.Length(ool.ker)))^-;return ;

      # is there an action that is good enough for improving the overall
      # kernel, even if it is not faithful? If so use the best of them.
      b:=DoActionBlocksForKerneljava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      if  "java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 2
        Info(InfoFactor,2,"##
morphism(,b,s too big
        s:*b
      fi;

      s:=s*SmallerDegreePermutationRepresentation(Image(s));
      Info(InfoFactor,totalcnt, interrupt, , , cor zzz,,erm,badcores,axi,hard
      erg:=SubdirectDiagonalPerms(
    od;
  else
      s:=Group(if Length(arg)>2 then
      SetSize(s,ize));
      s:=java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 6
      SetIsBijective(s,true);
      return s;
    fi;
    return IdentityMapping(G);
  fi; # intransitive treatment



      perm:=ActionHomomorphism(G,RightCosets(G,N),OnRight,"surjective");ActionHomomorphism(G,RightCosets(G,N),OnRight,"surjective");
   it (or a homomorphisms pool) there -- make a copy for working
  # intermediately with it.
  if not java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 0
    H: GroupWithGenerators( GeneratorsOfGroup( G ),One(G) );
    change:=true;
    if HasSize(G) then
      SetSize(H,Size(G);
    fi;
    if HasBaseOfGroup(G)      return IdentityMapping(G);
      SetBaseOfGroup(H,BaseOfGroup(G));
    fi;
  else
    H:=G;
  fi;
  hom:=IdentityMapping(H);
  b:=java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 5
  b.dotriv=true;
  java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 0
  b.dotriv:=false;

  # cheap initial block reduction?
  if IsTransitive(H,MovedPoints(H)) then  simple:=HasIsNonabelianSimpleGroup(G) and IsNonabelianSimpleGroup(G) and Size(N)=2;
    improve:true;
    while improve and (cheap or NrMovedPoints(H)*5>Size(H)) do
      improve:laterreplaceby  Normalsubgroup
ntsH);
      map:=      and Size(N) 
      (map:onlyimage;#`onlyimage' forces same generators
      bl:=KernelOfMultiplicativeGeneralMapping Size(zen=()then
      AddNaturalHomomorphismsPool      
      if Size(bl)=1 then
        hom:=hom*ifsimple  SizeCore(,zen)Size() 
        :()java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
        change:=true;
        Info(InfoFactor,2,"+=ize();
      fi;
    od;
  fi;

  b:=NaturalHomomorphismsPool(H);
  b.InfoInfoFactor,,centralizerjava.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 47
  if change then
onlykernel:=rivialSubgroupH));
  else
    DoCheapActionImages
  fijava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
  CloseNaturalHomomorphismsPool(H,TrivialSubgroup(H));
  b.dotriv:=false;
  map:=GetNaturalHomomorphismsPool(H,TrivialSubgroup(H));
  if map<  else
    Info(java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 5
    hom:=hom*map;
    H:=Imagev=;
  fi;

  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  if cheap<>true and (IsBool(o) or o*2>=
    s:=java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 17
    if s<>fail then
      hom:=hom*s;
    fi;
  fi;

  returnhomjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
end)if (pool.ps[i]

#############################################################################
##
#F  ImproveActionDegreeByBlocks( <G>, <N> , hom )
##  extension of <U> in <G> such that   \bigcap U^g=N remains valid
##
InstallGlobalFunction(ImproveActionDegreeByBlocks,function(G,N,oh)
local gimg,img,dom,b,improve,p,i,,bestdegestdeg,ubo,opbc,estblock,bdom,
      bestop,sto,subomax;
  Info(InfoFactor,1nu=ClosureGroup(,Random(arg[4]);

  # remember that we computed the blocksfi;
  b        SetParent(nu);

  # special case to use it for improving a permutation representationif Length(involved)0 then
            Sumdiff{involved,-osition,))
         ((Gk)
    b(ndinvolved);
    b.ops:=[oh];
    b.cost:=[Length(          interrupt:true;
    b.lock:=[false];
    b.locksdone:[false]java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
    subomax:=20;
  else
    subomax:=500;
  fi;

  i:=PositionSet(b.ker,N);
  if b.blocksdone[i] then
    return DegreeNaturalHomomorphismsPool(G,java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 0
  fi;
  bbi:true

  if not IsPermGroup(Range(oh)) then
    return 1;
  fi;

  gimg:=Image(oh,G);
=gimg
  java.lang.StringIndexOutOfBoundsException: Range [6, 4) out of bounds for length 15
  fi

  java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
    # one orbit: Blocks.[p:=op;
    repeat
      b:=Blocks(imgpool.p:=alse;
      improveinterruptor(Length(rg  iin 1.Lengthpoolker
      if Length(b)>1java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        if Length(if simple and uG then
          subo:=ApproximateSuborbitsStabilizerPermGroup(java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 10
          subo:       Size(or)>Size() and IsSubset(cor,N) and notcor in badcores then
        else
          subo:=fail;
        fi;
        bc:=First(b,i->dom[1] in      
        if subo<>fail and (Length(subo)<=subomax) then
          Info,,try )
          # if the degree is not too big or if we are desperate then go for
          java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
          # greedy approach: take always locally best one (otherwise there(G,N)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
          # might be too much work to do)
          :dom;
          bp:=[]; #Blocks pool
          i:=1;
o
            if subo[i] in 

            else
              =(img,dom[dom[1],subo[]]);
            fi;
            if Lengthbb)1 and  (1 in bp or Length(bb)>bestdeg) then

              # new nontriv. system found
              #only
              .blocksdone[[(u":,heap;
              op     :java.lang.StringIndexOutOfBoundsException: Range [51, 42) out of bounds for length 58
              f <fail java.lang.StringIndexOutOfBoundsException: Range [32, 33) out of bounds for length 32
bb=b,i>Immutable(Union(bdom))
              ;

                        (Gcori,java.lang.StringIndexOutOfBoundsException: Range [0, 53) out of bounds for length 49
              zzz:=DegreeNaturalHomomorphismsPoolN);
                sto:=StabChainOptions(Range(op));
                sto.limit:=Size(;
                # try only with random (will exclude some chances, but is
                
                sto.fi
#                if gimgbas<>false then
#                  SetBaseOfGroup(Range(op),
#                    List(gimgbas,i->PositionProperty(bb,j->i in j)));
#                fi;
                if Size(Range(op))=Size(gimg) then
                  sto.random:=1000;
                  k:=TrivialSubgroup(gimg);
                  op:=oh*op;
                  SetKernelOfMultiplicativeGeneralMapping(op,PreImage(oh,k));
                  AddNaturalHomomorphismsPool(G,
"indexunreasonably large, iterating ",badi);
                                              ,Lengthb))
                else
                  interrupt:=false
                fi;
              fi;
                k:=KernelOfMultiplicativeGeneralMapping(op);
                SetSize(Range(op),IndexNC(gimg,k));
                op:=oh*  Info(InfoFactor,1,zzz," vs ",badi);
                java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 42
                AddNaturalHomomorphismsPool(G,
                    KernelOfMultiplicativeGeneralMapping(op#F  SmallerDegreePermutationRepresentation( <G> )
                                            op,Length(bb));

              fi
              
              #improve:=improve or (Size(k)=1);
              if Size(kjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                mprove:true;
                :=(bb;
                bestblock:=;
                    return IdentityMapping(G);
              fi;
            fi
            # break the test loop if we found a fairly small block system
            # (iterate greedily immediately)
            if improve and bestdeg<i then
              i:=Length(dom);
            
            i:=i+;
          od      :Group(java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
        else
          Info(InfoFactor
          op:=1;# remove old homomorphism to free memory
          ifbdom>fail then
            b:=Set(,i-Immutable(nion({i}));
          fi;
         :ActionHomomorphismgimg,,OnSets,"urjective);
          if     hom:=MaximalAbel:java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 35
    :=List(,Order)java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
           .:Sizegimg;
            # try only with random (will exclude some chances, but is
            # quicker. If the size is OK we have a proof anyhow).
            sto.random:=100;
#            if gimgbas<>false then
#              SetBaseOfGroup(Range(op),
#                 List(gimgbas,i->PositionProperty(b,j->i in j)));
#            fi;
            if Size(Range(op))=Size(gimg) then
              sto.random:=1000;
              k:=rivialSubgroup(gimg);
              op:=oh*op;
              SetKernelOfMultiplicativeGeneralMapping(opGG,kGeneratorsOfGroup)erg)
             AddNaturalHomomorphismsPool(,
                  KernelOfMultiplicativeGeneralMapping(op),
                                          op,Length(b));
            else
ovement
            fi;
          else
            neralMappingop;
            SetSize(Range(op),IndexNC(gimg,k));
            # keep action knowledge
            op:=oh*op;
            (opPreImage(oh))java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
AddNaturalHomomorphismsPoolG
                KernelOfMultiplicativeGeneralMapping(##
                                        op,Length();
          InstallGlobalFunction(,(,)

          if Size(k)=1 then
            improve:true;
            bestblock:=b;
            bestop:=opjava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
          fi;
        fi;
         java.lang.StringIndexOutOfBoundsException: Range [23, 24) out of bounds for length 23
           update java.lang.StringIndexOutOfBoundsException: Range [0, 26) out of bounds for length 9
          bdomend;
#F  UnlockNaturalHomomorphismsPool(G,N) . . .  clear flagSort(o,functionbrLength(a>b));
          dom:    o ;
        fi##(,
      fi;
    until improve=false;
  fi;
  N=PositionSet(poolker)java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
  return DegreeNaturalHomomorphismsPool(G,N);
)java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5

#############################################################################
##
#M  FindActionKernel(<G>)  . . . . . . . . . . . . . . . . . . . . generic
##
FindActionKernel"forfinite groups",IsIdenticalObj,
  [IsGroup and IsFinite,IsGroup],0,GenericFindActionKernel);

RedispatchOnCondition(java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 21
  [IsGroup and IsFinite  return N=G  bAOnSets"urjective)

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0


BindGlobalFactPermRepMaxDesc",unction(g,n,maxlev)
local lim,deg,all,c,recurse,use,start;
  ValueOption("infactorpermrep")=true then return false;fi;
  deg=DegreeNaturalHomomorphismsPool(g,n)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
  if deg=fail then deg:=infinity;      s:=Group(erg,());  # `erg' ar(rg,); 
  all:=[];
  start:=java.lang.StringIndexOutOfBoundsException: Range [37, 21) out of bounds for length 44
  lim:    returnIdentityMappingG;
  c:=start;
  Info(InfoFactor,1,"Try maximals for limit ",lim,  fi # intransitive treatment

  recurse:=unction,lev)
  local m,ma,nm,i,j,co,wait,use;
    Info(InfoFactor,3,"pop in ",lev);
    m=[]

=]java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
      ma:= HasBaseOfGroup(G) then
      for  m do
        if ForAll(java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 6
          Add(all,i);
          Info(InfoFactor  .=rue
nm=iinmaxcheap;
          nm  d=java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
          IsNormal(g,x));
          for j in nm do
    if(,cthen
=(,()java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
              AddNaturalHomomorphismsPool(bl,ap)java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
                j:=use;
                use:=        :Image);
              else
                (waitj;
                use:=false;
                    java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
           
              use:=true;
            
            if use then
              co:=Core(g,j);
              AddNaturalHomomorphismsPool(g,co,j,IndexNC(g,j));
              c:=Intersection(co,c);
              Add(ma,j map:GetNaturalHomomorphismsPool(H,TrivialSubgroup(H));

          od;(2" actionsimproved degree "NrMovedPoints();
        else
          Info(InfoFactor;
  fi;
      od;
ifma)0then
CloseNaturalHomomorphismsPool)
i=    =java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 70
        if i<deg# join intersections
          deg:=i;
          Info(InfoFactor,  fi;
          if lev>1 or deg<lim then return true;fi;
        fi;
        m:=ma;
        SortBym,x-Size(x)java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
      elif lev<maxlev then
        # no improvement. Go down
        Add,jjava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
        for i in wait do
          if recurse(i,lev+1) then return trueInfoInfoFactor,1,"try to find block systems");
        od;
        m:=[];
      iseListisejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        m:=[];
      fi
    od;
    if    .ps=oh];
      Info(,3" up failure ",Size      ise:Listjava.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 59
    else
      java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
    fi;
    return emb=List(1.Length(java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 5
  end;

  return recurse(start,1);

end)


#############################################################################
##
#M  FindActionKernel(<G>)  . . . . . . . . . . . . . . . . . . . . permgrp
##
java.lang.StringIndexOutOfBoundsException: Range [30, 13) out of bounds for length 53
  [elif  :MovedPoints)java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
function(G,N)
local pool, dom, java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
      , idx, i, comb,act,,jj

  if IndexNC(ifLength()> 
    # small index, anything is OK
    return          :ApproximateSuborbitsStabilizerPermGroupimg,[1)
  else
    # get the known ones, including blocks &c. which might be of use
    java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 12

      :actorCosetAction(Gh,N) # will implicitly store
    oo i;
dom=hiefSeriesThrough(,ooN)
    dom:=          fi

    i:=2;
    while i<=          
      j:=i;
      while j          :Length);
       #and HasElementaryAbelianFactorGroup(dom[i-1],dom[j+1])#F  DegreeNaturalHomomorphismsPool(G,N) degree for operation for G/N if known
omj1=2000do
1java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
      od;
                  else
        ([-,[jjava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
oo=G,(repgjava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
Info3"block system ",engthbb);
          end);
        for k in oo do
          if Length(java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
            u:=Stabilizer(G,[1,(x,g
              return v[PositionCanonicalbb=Set(bb,i-mmutableUnion(domi}))java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
            op=ActionHomomorphism(gimg,,"urjective");
            repeat
              if not IsNormal if HasSizeg)andnot HasStabChainMutablegimg) then
AddNaturalHomomorphismsPool(,Core(G,)u(G,)java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
              fi;
              m:=u;
              u:=ClosureGroup(    p:PositionSet                # quicker   size OKwe anyhow)java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
            java.lang.StringIndexOutOfBoundsException: Range [0, 17) out of bounds for length 0
          fi;
        InstallGlobalFunction(functionargj))
      ;
              (Rangeop)=gimgjava.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
k=gimg;

    pool:=NaturalHomomorphismsPool(G);
    dom:=    dom:=MovedPoints.ker);

#java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
    bestdeg:I(GN;
    AddNaturalHomomorphismsPool(G,N,N,bestdeg);

    # check if there are multiple orbits
    o:=Orbits(G,java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
    s:                ;
    if not ForAny
       to orbits)java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
i->(iN)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
      if Intersection(s)=N then
                    KernelOfMultiplicativeGeneralMapping(op),
        List(s,i->NaturalHomomorphismByNormalSubgroup(G,i));
      fijava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
    fi;

    improve:=true;

            =()java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
     (o)1 
      for i in o do

ctionHomomorphismG,i,"urjective);
        k:=KernelOfMultiplicativeGeneralMapping(act);
        k:=ClosureGroup(k,N); # pre-image of (image of normal subgroup under act)
                   p=x-x])
        :=(Imageact))

(age));
ifood
          AddNaturalHomomorphismsPoolInfo(,2"ryonly onesystem";
        fi;
      od;
      CloseNaturalHomomorphismsPool(G,N);
    fi;

    bestdeg:=DegreeNaturalHomomorphismsPoolb=,ImmutableUnion(i}))java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51

    Info(InfoFactor,1,"ifHasSize() andnot gimg) java.lang.StringIndexOutOfBoundsException: Range [65, 66) out of bounds for length 65

    blocksdone:=            
    # use subgroup that fixes a base of N
    # get orbits of a suitable stabilizer.
    o:BaseOfGroup(N);
    s:=Stabilizer(G,o,OnTuples);
    badnormals:=Filtered(pool.ker,i->IsSubset(i,N)#              SetBaseOfGroup(Range(op),
    if Size(s)>1 and IndexNC(G,s)/Size(N)<2000 and bestdeg>IndexNC(G,s)#            fi;
      cnt:Filtered(OrbitsDomain(sdom,i-Lengthi)>1;
      for i in cnt do
        v:=ClosureGroup(N,Stabilizer(s,i[1]));
        if Size(v)>Size(N) and IndexNC(G,v)<2000
          and not ForAny(badnormals,j->IsSubset(v,j)) then
          u=CoreGv)java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
          if Size(u)>Size KernelOfMultiplicativeGeneralMapping(op),
            Add(badnormals,u);
          fi;
         (,u,IndexNC(G,v));
        fi;
      od;

      # try also intersections
      CloseNaturalHomomorphismsPool(G,N);

      bestdeg:[] 

      Info(InfoFactor,1,"Base Stabilizer and known, best Index ",java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 56

      if            :oh*;
        # should be better...
        bestdeg:=ImproveActionDegreeByBlocks(G,N,
          GetNaturalHomomorphismsPool(G,N));
        blocksdone:=true;
        Info                                          fi
      ;
   java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7

    
    # whether anything stabilizing can be of use
    :=OrbitsDomain(N),i-Length((,        if improve improve then
    Apply(o,Set)t update mapping
    oo:=bdom:bestblock;
s:=G;
    for dom:i)
      s:=        ;
    od;
    (InfoFactor2"of  ,G;

   ifnotForAny(badnormalsj->IsSubset(s,j)) then
      m:=Core(G,s); # the normal subgroup we get this way.
  return DegreeNaturalHomomorphismsPoolG,N;
        Add(badnormals,m);
      fi;
      AddNaturalHomomorphismsPool(G,m,s,IndexNC(G,s));
    else
      m:=java.lang.StringIndexOutOfBoundsException: Range [0, 10) out of bounds for length 2
    fi;

    ifInstallMethod(FindActionKernel,"genericgroups",sIdenticalObj,
      bestdeg:IndexNCGs;
      blocksdone:=false;
      Info(InfoFactor,2,"Orbits Stabilizer java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 0
    thenc:=ClosureGroup(N,c)fijava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
      # no hard work for trivial cases
discard:[]java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
  a subgroup,whichdoes not contain java.lang.StringIndexOutOfBoundsException: Range [61, 60) out of bounds for length 70
        # For wreath products (the initial aim), the following method works
        # fairly well
local lim,,allcrecurseuse,java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

cnt=;
        :=]
        repeatall=
java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 42
         forcombinCombinations([1.Lengthv), java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
    #Print(">",comb,"\n");
if not java.lang.StringIndexOutOfBoundsException: Range [19, 9) out of bounds for length 9
u=java.lang.StringIndexOutOfBoundsException: Range [0, 27) out of bounds for length 26
              o=ClosureGroup(u;
:)/();
              if idx<10 and Factorial(idx)*Size(N)<Size(G) then
                # the permimage won't be sufficiently large
                AddSet(badcomb,Immutable(comb))     wait=[;
              fi;
              if idx<bestdeg and Size(G)>Size(         (>(gi,)=fail 
              and not ForAny(badnormals,i-> InfoInfoFactor,2"Maximals of index ",ndexNC,)
                          :TryMaximalSubgroupClassReps(:inmax,nfactorpermrep,cheap);
                if           nm:=FilteredxIndexNC(,x)<=lim andIsSubset(x,n) and not
                  Info          IsNormal(g,x));
                  AddSet(badcomb,Immutable(comb));
                  if not m in badnormals then
                    Add(badnormals,m);
fi;
                fi;
                            ifIsSubset(,c then
                  use:=ClosureGroupn,DerivedSubgroup(j));
                  bestdeg:=idx;
                  AddNaturalHomomorphismsPoolifnot IsSubset(se, then
                  blocksdone:=false;
                  cnt:=;
                fi;
              fi;
            fi;
          od;
          cnt:=cnt+1;
        until cnt>Length(v);
      fi;
    fi;

   Info(          .ost[]pool.cost[[+poolcost[c[2)
# first force blocks
 bestdeg<and bestdeg<Gjava.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
      Info(InfoFactor,3,"force blocks")java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
      bestdeg:=ImproveActionDegreeByBlocks:=ositionpool.java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
        GetNaturalHomomorphismsPool(G,N));
      blocksdone:=true;
2, improvetojava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
    fi;

ifbestdegIndexNC(,N or
      (bestdeg> g,njava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
ifGenericFindActionKernel(,Nbestdeg,s)<>ailthen
        blocksdone:=true;
      fi;
      bestdeg:=DegreeNaturalHomomorphismsPool(G,N);
      Info(,1search found"bestdeg)
    fi;

    if bestdeg>10000 and bestdeg^2>IndexNC(G,N) java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
      cnt:=bestdeg;
      FactPermRepMaxDesc(G,N,5);
      bestdeg:=DegreeNaturalHomomorphismsPool(G,N);
      if java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
      Info(InfoFactor,1,Iteratedmaximals found ",bestdeg);
    fi;

          for i wait 
      ImproveActionDegreeByBlocks(G,N,GetNaturalHomomorphismsPool(G,N));
    fi;

    Info(InfoFactor,3,"return hom");
    return GetNaturalHomomorphismsPool(G,N);
    return o;
  fi;

end);

#############################################################################
##
#M  FindActionKernel(<G>)  . . . . . . . . . . . . . . . . . . . . generic
##
InstallMethod(FindActionKernel,"Niceo",IsIdenticalObj,
  [Info(nfoFactor,3          isi:=ShallowCopy(co);
java.lang.StringIndexOutOfBoundsException: Range [4, 2) out of bounds for length 7
local hom,hom2;
  hom:=NiceMonomorphism(G);
  hom2:=  (start1)
  hom2<fail then
    return hom*hom2;
  else
    java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0
  fi;
end

BindGlobal          :AddNaturalHomomorphismsPoolG,c,Sum(ool.{})##

#############################################################################
##
#M  NaturalHomomorphismByNormalSubgroup( <G>, <N> )  . .  mapping G ->> G/N
##                             this function returns an epimorphism from G
##  with kernel N. The range of this mapping is a suitable (isomorphic)
##  permutation group (with which we can compute much easier).

,IsGroup,,
function(Gfor  in 1.pder) java.lang.StringIndexOutOfBoundsException: Range [41, 42) out of bounds for length 41
local proj,h,pool;

  # catch the trivial case N=G
  ifCanComputeIndex(G,N) and IndexNC(G,N)=1 then
    hjava.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
        (G
           List( GeneratorsOfGroup# find smallish layer actions
    SetKernelOfMultiplicativeGeneralMapping(h, G ;
    return h;
  fi;

  # catch trivial case N=1 (IsTrivial might not be set)
  if HasSizeN)andSize)1 or(HasGeneratorsOfGroup(N)and
    ForAll(GeneratorsOfGroup(N),IsOne)) then
    return IdentityMapping(G);
  fi;

  # check, whether we already know a factormap
  pool:=NaturalHomomorphismsPool(G);
  h:=PositionSet(pool.ker,N);
  if h<        andIndexNC([i-1,domjjava.lang.StringIndexOutOfBoundsException: Range [36, 15) out of bounds for length 15
    for k      java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
  fi;

  DoCheapActionImages()
)and =SolvableRadical()then
    h(G,);
  fi;

Length()1then
                u:Stabilizer(,[]function(,g
      :=Projection(,proj);
      h:=NaturalHomomorphismByNormalSubgroup(Image(proj,G),Image(proj,N));
      AddNaturalHomomorphismsPool(G,
        ClosureGroup(KernelOfMultiplicativeGeneralMapping not IsNormal(Gu) then
    od;
  fi;
  CloseNaturalHomomorphismsPool(G,N);

  h:=DegreeNaturalHomomorphismsPool(G,              u:=ClosureGroup(N,DerivedSuClosureGroup(N,DerivedSubgroup(u));
  u;
          fi;
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 6
    h:=fail;
  fi;

  if h=fail then
    # now we try to find a suitable operation

    # redispatch upon finiteness test, as following will fail in infinite case
    ifHasIsFinite()and IsFinite(G)then
      return NaturalHomomorphismByNormalSubgroupOp(G,N);
    fi;

    h:FindActionKernel(G,;
    if <fail java.lang.StringIndexOutOfBoundsException: Range [19, 20) out of bounds for length 19
      Info(InfoFactor,1,      Info(InfoFactor,2,"Try reductionto orbits";
       MovedPoints(Range(h)))," found";
    else
      Error("I don't know how to find a natural homomorphism for <N> in        Info(nfoFactor,1,"Reduction to orbits will do");
      # nothing had been found, Desperately one could try again, but that
      # would create a possible infinite loop.
      h:= NaturalHomomorphismByNormalSubgroup( 
    fi;
  ;
  # return the map
  return hjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
end);

RedispatchOnConditionk=ClosureGroup,N;# pre-image(image of normalsubgroup act
  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

RedispatchOnCondition(
  [IsGroup        ) #java.lang.StringIndexOutOfBoundsException: Range [40, 36) out of bounds for length 74

         java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 13
  [sGroupIsGroup],java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

#############################################################################
##
#M  NaturalHomomorphismByNormalSubgroup( <G>, <N> ) . .  for solvable factors
##
        ;
InstallMethod( java.lang.StringIndexOutOfBoundsException: Range [6, 1) out of bounds for length 9
  "blocksdone:ne:=false;
 IsIdenticalObj, [IsPermGroup,IsPermGroup ], 0,
function# get orbits of a suitable stabilizer.
filter;

 (, 
     A=G);
 A<IndexNCG)(ndexNC(,,2^ 
      map:=java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 5
      if map<       iin cnt do
        InfoI2" storedmap";
        return map#############################################################################
      fi;
    fi;
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 5

  IsList()andod
nimumIndexNC(,N,G)java.lang.StringIndexOutOfBoundsException: Range [1, 0) out of bounds for length 0
    TryNextMethod
  notmsPool(G,)

  # Make  a pcgs   based on  an  elementary   abelian series (good  for  ag    ;
  # routines).
  pcgs if
  if not G,N,h);
      java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 5
  ;

  # Construct or look up the pcp group <A>.
  A(falsefalse)

( ,N  ;

  # Construct the epimorphism from <G> onto <A>.
  map := rec(homDoFactorCosetAction(oFOrbitsDomain(iLrbit(,i)engthi)java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
nd
            java.lang.StringIndexOutOfBoundsException: Range [49, 45) out of bounds for length 49
             and
            IsMapping and IsSurjective java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 18
            HasSource and HasRange and
            HasPreImagesRange and HasImagesSource;
            HasKernelOfMultiplicativeGeneralMapping;

      (InfoFactor,2,java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 21
  map.java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 0

  ObjectifyWithAttributes map,   .
  NewType( GeneralMappingsFamily
mentsFamily FamilyObj(   ),
            Add(,,ImagesRepresentative(x,y);
            Source   fi
  imgs:=Groupd;
endjava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
            ##
            InstallMethod(DoCheapActionImages,"generic"    ;
            );

  returnmap;
end ) :=(java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 28

#############################################################################
##
#F  PullBackNaturalHomomorphismsPool( <hom> )
##
InstallGlobalFunctionif 
rnat;
  s:=Source(hom);
  =#For java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 75
for r.do
    nat:=homubgroup(G((),-   ;
    AddNaturalHomomorphismsPool(s,java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 33
  od
end);

#############################################################################
##
#F  TryQuotientsFromFactorSubgroups(<hom>,<ker>,<bound>)
##
InstallGlobalFunction#rint>,");
local s,p,k,it,      SortBy(,engthif (badcomb>comb,)then

  p:=Image(hom);
kKernelOfMultiplicativeGeneralMappingjava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47

  repeat
    :#the won't java.lang.StringIndexOutOfBoundsException: Range [54, 53) out of bounds for length 59
InfoExtReps,,Factor subgroup index java.lang.StringIndexOutOfBoundsException: Range [54, 53) out of bounds for length 60
    :hom,)
    d:=DerivedSubgroup(v);
    if  IsSubset(,)then
                :Core(,o;
      java.lang.StringIndexOutOfBoundsException: Range [10, 7) out of bounds for length 46
        ma:=NaturalHomomorphismByNormalSubgroup 2then

        lev:=0;
        =ail
                  ifLength(newb)1 then
          lev:=lev+1;
          low:()1 
                  =lse
          sub:=First(java.lang.StringIndexOutOfBoundsException: Range [0, 24) out of bounds for length 0
        od;
        
        :=OrbitsDomainGdom;
        djava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        AddNaturalHomomorphismsPool(,,)
=tersection(,djava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
        if Size(k)=Size(ker) java.lang.StringIndexOutOfBoundsException: Range [0, 33) out of bounds for length 29
      i;
    fi;
      InfInfoFactor,,Orbits ,ifnot  ininallb 
end          # first 

#############################################################################
##
#M  UseFactorRelation( <num>, <den>, <fac> )  . . . .  for perm group factors
##
InstallMethod( UseFactorRelation,
   [IsGroup HasSize,IsObject,IsPermGroup ],
   function( num, den, fac )    ;
   local    GN)java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
   if not HasSize( fac ) then
     if (den) 
       SetSize(fac,Size( num ) / Size( den ) );
     else
       limit := Size :  g:GN;
       if IsBoundifLength() Info,1  searchfound java.lang.StringIndexOutOfBoundsException: Range [57, 56) out of bounds for length 58
         limit    
       fi;
              java.lang.StringIndexOutOfBoundsException: Range [70, 71) out of bounds for length 70
 
   fi;
   TryNextMethod);
   return G;

Messung V0.5 in Prozent
C=79 H=84 G=81

¤ Dauer der Verarbeitung: 0.35 Sekunden  ¤

*© Formatika GbR, Deutschland






Versionsinformation zu Columbo

Bemerkung:

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Anfrage:

Dauer der Verarbeitung:

Sekunden

sprechenden Kalenders






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1128594
#Domains=1976912