Eine aufbereitete Darstellung der Quelle

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

Benutzer

Quelle  grpperm.gi   Sprache: Shell

 

#############################################################################
##
##  This file is part of GAP, a system for computational discrete algebra.
##  This file's authors include Heiko Theißen.
##
##  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
##


#############################################################################
##
#M  CanEasilyTestMembership( <permgroup> )
##
InstallTrueMethod


#############################################################################
##
#M  CanEasilyComputePcgs( <permgroup> )
##
##  solvable permgroups can compute a pcgs. (The group may have been told it
##  is solvable without actually doing a solvability test, so we need the
##  implication.)
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 0

#M  CanComputeSizeAnySubgroup
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 0

#############################################################################
##
#M  AsSubgroup( <G>, <U> )  . . . . . . . . . . . .  with stab chain transfer
##
InstallMethodjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
IsIdenticalObj IsPermGroup         : []java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
    function( G, U )
    ##
    # test if the parent is already alright#M  IndependentGeneratorsOfAbelianGroup( <G> )  . . . . . . . nice generatorsj];
    if  IsPermGroupandIsAbelian ,

    fi;

    if not IsSubsetinds       
return java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
    fi;
    S:= SubgroupNC            ,# generators of <p>-Sylowsubgroup
    UseIsomorphismRelation( U, S g            od;
tRelation ,S ;
    if java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 0
        one=G;
    fi;
    S
                       p>1

#############################################################################
##
#M  CanEasilyComputeWithIndependentGensAbelianGroup( <permgroup> )
##
        for g  GeneratorsOfGroup java.lang.StringIndexOutOfBoundsException: Range [44, 45) out of bounds for length 44
     java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 43

#############################################################################
##
#F  IndependentGeneratorsAbelianPPermGroup( <P>, <p> )  . . . nice generators
##
InstallGlobalFunctionif(  then g;;
    function ( P                    ;
    localtrnsb =[java.lang.StringIndexOutOfBoundsException: Range [0, 36) out of bounds for length 21
            pows,       # their powers
            base,       # the base of the vectorspace
            # the size of the group generated by <inds>
            orbs,       # orbits
            ;
            gens
            one        
     ,java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 26
            exp    return inds;       Add []  ^(hk))java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
##
#F  OrbitPerms( <gens>, <d> ) . . . . . . . . . 
            b,          # basepoint
   c,          # other point in orbit
            i, jjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    # initialize the list of independent generators
    inds := [            else
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
base: ]
    size := 1;
    orbs            return [ gens2, )java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
    trns := [];

# arethe forremaining
    gens= GeneratorsOfGroup(
    one

    # loop over the exponents# apply all generators <gen>
exp=(( g-    ,p   ;
    for i  in [exp,exp-1..1]  do

        # loop over the remaining generators
        : ]
          [mg]  then
            g := gens[j];
             =g  p^i);

            # reduce <g> and <h>
             nothjava.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
#############################################################################
            do
                g := g / pows[ trns##
                h :h   S(h ;
            od;

                p,          factor of group group 
            if           the   max  by<>
                Add( inds, dom:([.max] )java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
                Add
                Add(, h );
                fst := Position             #  
                b := SmallestMovedPoint(h);
    # loop over all primes
                    inds =[java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
                     = ;
                java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
                 ino                in    java.lang.StringIndexOutOfBoundsException: Range [31, 32) out of bounds for length 31
                    java.lang.StringIndexOutOfBoundsException: Range [16, 1) out of bounds for length 36
                        Add(                    :pnt^ gen;
                        java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 0
                    od;
                od;

            # otherwise reduce and add to gens2
            else
                java.lang.StringIndexOutOfBoundsException: Range [26, 19) out of bounds for length 37

            fi;g: g^ojava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21

        od;

        # prepare for the next round
        gens := gens2;
        pows domimg

    od;

    # return the independent generators
    return inds;
end;

#############################################################################
##
#M  IndependentGeneratorsOfAbelianGroup( <G> )  . . . . . . . nice generators
##
InstallMethod             =Position ,  java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
        [         # add   >  are fixed
    function()
    local   java.lang.StringIndexOutOfBoundsException: Range [0, 16) out of bounds for length 0
            
            p,        return ;
            gens,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                      # one generator
            ;# its order

    # loop over all primes
    inds := [];
    java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 2
    for p  java.lang.StringIndexOutOfBoundsException: Range [0, 13) out of bounds for length 0
 Orderg  ))  
      if p <> 1local   max,orb  n)then

        # compute the generators for the Sylow <p> subgroupmaxif  then
        gens: ]java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
forginG )do
            o 
            while  modp    java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
                       g: g;
if  ;java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
        od;

        # append the independent generators for the Sylow <p> subgroup
        Append( inds(SmallestMovedPoint
                IndependentGeneratorsAbelianPPermGroup(
                    GroupByGenerators( gens, one ), p ) );

      fi
    od;

 independentgenerators by increasing order
    ( , ;

     return the independent generators
    java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 2

#############################################################################
##
#F  OrbitPerms( <gens>, <d> ) . . . . . . . . . . . . . orbit of permutations
##
InstallGlobalFunction( OrbitPerms, 
    java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 0

        # get the largest point <max> moved by the group <G>
         =LargestMovedPoint( );

        # handle fixpoints
        if  1.max]  then
            return [ d ];
        fijava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11

        # start with the singleton orbit
        orb := [ d ];
java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 47
        new[d] := false;

        # loop over all points found
        for pnt  in orb  do;

            # apply all generators <gen>
              in do
^java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33

                # add the image <img> to the orbit if it is new
                if new[[and ] 0,
                    Add( java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                    new[img] := false;
                ,java.lang.StringIndexOutOfBoundsException: Range [47, 47) out of bounds for length 15

            od;

        od;
        java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 19
 ;

#############################################################################
##
#F  OrbitsPerms( <gens>, <D> )  . . . . . . . . . . .  orbits of permutations
##
InstallGlobalFunction( OrbitsPerms, function( gens,                  ^ gen <> java.lang.StringIndexOutOfBoundsException: Range [0, 35) out of bounds for length 6
    local   max dom,new, ,fst,  orb,

        
        max := LargestMovedPoint( gens );
        dom := BlistList( [1..java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        new := BlistList( [        ;
            ;

        # repeat until the domain is exhausted
        fst := Position(      Set )java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
        while fst >fail  do

            # start with the singleton orbit        new:B .][.];
            (java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
InstallMethod( MovedPoints
            # start with the singleton orbit

            
            for;

                #############################################################################
                forgeningensdo
                    :   


                    
Add )
                        new[img: pnt java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
          :java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 24
                    fi;

                 ,

            od;

orbittothe listof java.lang.StringIndexOutOfBoundsException: Range [53, 49) out of bounds for length 69
            Addforanempty list new[]=false;
            fst      and ]

        od;

        # add the remaining points of <D>, they are fixed
        for##
          if 
            Add( orbsjava.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 33
          fi;
        od;

        return orbs;
java.lang.StringIndexOutOfBoundsException: Range [12, 1) out of bounds for length 46


#############################################################################
##
#M  SmallestMovedPoint( <C> ) . . . . . . .  for a collection of permutations
##
BindGlobaljava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 24
  ,

    min :,0
    for gen  in C                fi;
e
            #############################################################################
            if m MovedPoints(( <G>)  .... . .##
                min := m;
            fi;
fi
     IsPermGroup ,0#java.lang.StringIndexOutOfBoundsException: Range [77, 2) out of bounds for length 77
    return min;
endG>MovedPoints (G   ;

InstallMethod( SmallestMovedPoint,
    "for a java.lang.StringIndexOutOfBoundsException: Range [0, 21) out of bounds for length 0
    true,
    [ #M  NrMovedPoints( <G> )
intPerms##

InstallMethod( SmallestMovedPoint,
     list,
    true,
    [truejava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
         -     );


#############################################################################
##
#M  LargestMovedPoint( <C> )  . . . . . . .  for a collection of permutations
##
BindGlobal( "LargestMovedPointPerms", function(G)
    local   max,  m,  gen;

  max =0java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
    forList(,IsRange;# save memory if long orbits
ifnot IsOne(gen )  then
            m := LargestMovedPointPerm(    i  java.lang.StringIndexOutOfBoundsException: Range [15, 16) out of bounds for length 15
           ,)
                max := m;
                      java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
        fi;
    od;
    return max;
nd)

InstallMethod<H> )  . .  . . . . . . . . .  test if two perm groups are equal
    "for a java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 2
    truejava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
    [ IsPermCollection
    LargestMovedPointPerms );

InstallMethod(LargestMovedPoint
    "java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
    [ IsList andfi
    LargestMovedPointPerms );


#############################################################################
##
#F  MovedPoints( <C> )  . . . . . . . . . .  for a collection of permutations
##
InstallGlobalFunction(MovedPointsPerms,java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 0
    local   mov,  gen,  pnt;

     : [  ;
   for   C  do
        java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            for   max :=java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
                           LargestMovedPoint gen  ] do
                if  ;
                    mov        notIsOne  ) then
                
            od;
        fi;
    od;
    return Set( mov );
end);

InstallMethod( ##
    [IsPermCollection0,
     fora              max  m  then

     ] 0java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
    [ IsList and IsEmpty ], 0,
    MovedPointsPerms );

InstallMethod( MovedPoints#############################################################################fi;
function(p)
  return MovedPointsPerms([p]);return#java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 "for  java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 30


#############################################################################
##
#M  NrMovedPoints( <C> )  . . . . . . . . .  for a collection of permutations
##
BindGlobal( "NrMovedPointsPerms", function( C )
    java.lang.StringIndexOutOfBoundsException: Range [0, 9) out of bounds for length 2

    mov := 0;
    sma: java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 2
    if sma  )
            local   elmelm  ,java.lang.StringIndexOutOfBoundsException: Range [0, 26) out of bounds for length 9
;
    for pnt  in [ sma  )
      #############################################################################  - 1java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
>pnt
          :       java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
          ;
        fipos: ( pos,len)
      ;
        odjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
        mov;
end  Error ">,n ]must ovedPoint( .

InstallMethod                           ;
    "    returnelm
    [ IsPermCollection ],
    NrMovedPointsPermsjava.lang.StringIndexOutOfBoundsException: Range [25, 10) out of bounds for length 38

(NrMovedPoints
    "for an empty list                fi;
    [ IsList and IsEmpty ],
    NrMovedPointsPerms );


#############################################################################
##
#M  LargestMovedPoint( <G> )  . . . . . . . . . . . . for a permutation group
##
S:enum.tabChainjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
    " a permutationgroup"
    true,
    [IsPermGroup ] ,
    G -MovedPointsPerms ;


#############################################################################
##
#M  SmallestMovedPoint( <G> ) . . . . . . . . . . . . for a permutation group
##
(SmallestMovedPoint
    "or a permutation group",
    true,
    [ IsPermGroup ], 0,
G- (GeneratorsOfGroup 


#############################################################################
##
#M  MovedPoints( <G> )  . . . . . . . . . . . . . . . for a permutation group
##
InstallMethod( MovedPoints,
    "           fail
    true,
    [ java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 7
    G -> MovedPointsjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7


#############################################################################
##
#M  NrMovedPoints( <G> )  . . . . . . . . . . . . . . for a permutation group
##
InstallMethod(functionjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
    "a permutation "
    true,
    [ IsPermGroup ], 0,
    -       =java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 35


#############################################################################
##
#M  OrbitsMovedPoints( <G> )
##
(java.lang.StringIndexOutOfBoundsException: Range [34, 32) out of bounds for length 75
function(G)
,java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
  ojava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 oSjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
o)# save memory if long orbits
   java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 0
  MakeImmutable(o)=java.lang.StringIndexOutOfBoundsException: Range [54, 53) out of bounds for length 54
    
    SetIsSSortedList(i,true);
  od;
  SetIsSSortedList(o,true);
   o
end);


#############################################################################
##
#M  \=( <G>, <H> )  . .  . . . . . . . . .  test if two perm groups are equal
##
[S:[java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
function (     p:(S.,;
  # avoid new stabilizer chains if they are not computed yet
  java.lang.StringIndexOutOfBoundsException: Range [6, 4) out of bounds for length 9

  if not (HasGeneratorsOfGroup(#S=e,
    TryNextMethod     ;
  ;


    or 
    return##
  fi#M  Iterator( <G> ) . . . . . . . . . ##

  if  GeneratorsOfGroup(G)    then
    return true;
  fi;

  # try to use one existing stab chainfor a group,
   H java.lang.StringIndexOutOfBoundsException: Range [53, 52) out of bounds for length 60
oupG,java.lang.StringIndexOutOfBoundsException: Range [64, 62) out of bounds for length 74
  fi;
  return #M  MovedPoints( <G> )  . . . . . . . . . . . . . . . java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 2
   truejava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9



#############################################################################
##
#M  BaseOfGroup( <G> )
##
( BaseOfGroup,
    " "for apermutation "java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
    java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
    [ IsPermGroup fjava.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 11
ainMutable(G )))java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50


#############################################################################
##
#M  Size( <G> ) . . . . . . . . . . . . . . . . . . size of permutation group
##

    "#############################################################################
    true,#M  Random( <G> ) . . . . . . . . . . . . . . . . . . . . . .  random element
    
    G -> SizeStabChain( "for a random source andgroup,


#############################################################################
##
#M  Enumerator( <G> ) . . . . . . . . . . . . enumerator of permutation group
##
BindGlobal( "java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 20
    function( enum, pos )
    function ( G function ( G, H ( java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31

    S := enum!.stabChain;
    elm .java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 22
    njava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    pos := pos - 1;
    while java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 7
                       len ;
        : java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 50
                       
        pos := QuoInt( pos, len );
        stabilizer
    od;

    ifif   ajava.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 49
     <  ]have an " ;
    fi;
 ;
end );

"
    function
    local     ;

en
      java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 18
    fijava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    #M  ClosureGrjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
##  The following function implements the method and may be called even with
    S := enum!.stabChain;
while java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 27
         : SorbitP    java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 47
        #pos := pos + val * ( Position( S.orbit, img ) - 1 );
        if##
          pos := pos + val * S.orbitpos[img];
          #val := val * Length( S.orbit );
          val := val * S.ol;
             = , >notin java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
          S := java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 7

          # is the closure
        fi;
    od;G >( ForAll(gens,i->ForAll(GeneratorsOfGroup)->^i G) 
      :g[#############################################################################
        ;
    fi;
    return pos;
end )

InstallMethod( Enumerator,
     :(Og)[)>sOneg^)
    [ IsPermGroup ]        l:o;
function(G)
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
    options.:=.java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
    S: :posjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
    :[;
#
      e:Orbits :  java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 33
      :e;
      i:=Position(i         =  ;
      Add(p,e[i]         =java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 37
      =i[;
    od;
    if inpar

S(rec(:;
    ejava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
             ElementNumber :=: java.lang.StringIndexOutOfBoundsException: Range [50, 49) out of bounds for length 57
              :    
             
             PrintObj      := function( G #    if DefaultStabChainOptions.tryPcgs
                                  ( "<enumerator of perm group>#                   g -> g ^ gen in G ) )  then
                               #                         Concatenation( GeneratorsOfGroup( G ), gens ) );Concatenation( GeneratorsOfGroup( G ), gens ) );

             #        fi;
  while LengthS.        if IsPcgs( pcgs )  then
    S.ol:=Length(S#          if inpar  then  C := GroupStabChain( Pfi;
    S.orbitpos:val :=;
    for i in [1..Maximum(S.orbit)] do
           ion( C,G);
      if p<>fail then
        #   fi;
         #
    od;
    S:=S.chain := Structu( StabChainMutable(G));
  od;
  return e;
);

#############################################################################
##
#M  Iterator( <G> ) . . . . . . . . . . . . . . iterator of permutation group
##
InstallMethod( Iterator,
    "for a trivial permutation group",
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

    return IteratorList([()]);
end);

InstallMethod( Iterator#val := val * Length( S.orbit ); java.lang.StringIndexOutOfBoundsException: Range [32, 30) out of bounds for length 42
ifjava.lang.StringIndexOutOfBoundsException: Range [34, 32) out of bounds for length 68
    [ S := S.stabilizer;
function(        java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
    return IteratorStabChain(StabChain(G));


#############################################################################
##
#M  Random( <G> ) . . . . . . . . . . . . . . . . . . . . . .  random element
##
InstallMethodWithRandomSource( Random,
  random
    [                 else=chain;          ;
   function ,G)
    local         C: Pnewgens;

     go down the stabchain and multiply random representatives
S=StabChainMutable G );
    rnd := S.identity;
bels ) <> 0  do
        rnd= LeftQuotient;
                       Random(random: .random));
        S := S    # get a good base
    odod

       # return the random element
return;
end );


#############################################################################
##
#M  <g> in <G>  . . . . . . . . . . . . . . . . . . . . . . . membership test
##
InstallMethod( \in,
    "for a permutation, and a InstallOtherMethod(,"java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 52
    true,
    [ IsPerm, IsPermGroup 
    function  permgroup ,,
( G     gin(G ) 
        return true;
    else
        G : StabChainMutable( G );
        return java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 16
    fi;
end


#############################################################################
##
#M  ClosureGroup( <G>, <gens>, <options> )  . . . . . .  closure with options
##
##  The following function implements the method and may be called even with
##  incomplete (temp) stabilizer chains.
",( , ,  java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
    local   C,          # closure of < <G>, <obj> >, result
java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 47
            g,          # an element of gens
                      
            newgens,    # new generator list
            chain;      # the stabilizer chain created

);# options will be overwritten
    # if all generators are in <G>, <G> is the closure ,IsRecord] 0,
    gens   return        );
    if IsEmpty( genslabels)<> do
        
    fi;

    # is the closure normalizing?
    if Length(gensInstallOtherMethod ,"mpty   "truejava.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
java.lang.StringIndexOutOfBoundsException: Range [13, 11) out of bounds for length 13
      g#M  p:=PositionS.rbiti;
      if Size##
       o=      if<fail
        options.limit:=Size(G)*o;
      else
       :FirstDifferenceOrderg[])-IsOnegj))java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
        options.limit:=o;
fi
     options    # options record for stabilizer chain construction
      #Print(options.limit,"<<\n");
          gensN       generators of the group <N>

    # otherwise decide between random and deterministic methods
    P := Parent( G );
    inpar := IsSubset( P, gens              ,# values measuring randomness of <chain>
    notinparand  not IsIdenticalObj( P, Parent( P ) )  do
        P := Parent( P );
        inpar := IsSubset    Group( G );
        : One  ;
    ifinparthen
        CopyOptionsDefaults
    elif not IsBound( options.randomN: SubgroupNC(unction(G)
        options.         ([)java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
    fi;

 G   in <> with  factorgroup

#AH 5-feb-96: Disabled (see gap-dev discussion).
#    if DefaultStabChainOptions.tryPcgs
#       and ForAll( gens, gen -> ForAll( GeneratorsOfGroup( G ),
#                   g -> g ^ gen in G ) )  then
#        if inpar  then
#            C := SubgroupNC( P,
#                         Concatenation( GeneratorsOfGroup( G ), gens ) );
#        else
#            C := GroupByGenerators
#                 ( Concatenation( GeneratorsOfGroup( G ), gens ) );
#        fi;
#        pcgs:=TryPcgsPermGroup( [ C, G ], false, false, false );
#        if IsPcgs( pcgs )  then
#          chain:=pcgs!.stabChain;
#          if inpar  then  C := GroupStabChain( P, chain, true );
#                    else  C := GroupStabChain( chain );           fi;
#          SetStabChainOptions( C, rec( random := options.random ) );
#
#          UseSubsetRelation( C, G );
#          return C;
#        fi;
#    fi;

     of G compatible with options.base;
    chain = if not IsEmpty) 
    if IsBound( options.            =ClosureGroup ,gensN options ;
        ChangeStabChain( chain, options.java.lang.StringIndexOutOfBoundsException: Range [0, 44) out of bounds for length 27
                java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
    fi;

         java.lang.StringIndexOutOfBoundsException: Range [11, 9) out of bounds for length 51
               gens ) ) <= 100  then
        options : :=S.identity;
        options.base := BaseStabChain( chain );
        for closure
if SiftedPermutation( chain, g ) <> chain.identity  then
                StabChainStrong( chain, [if in  
            fi
        od;
    else
        o:=ValueOption(            fi;
        if IsInt(o) then options.limit        odjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
        chain : #
    fi;

    newgensif  (chain.orbits )then
         IsBound(chain.aux )  then
      if inpar  then  C 
                else  C := GroupStabChain
    else
      #############################################################################
                else  C := Group
      SetStabChainMutable,)
    fi;
    SetStabChainOptions( C, rec( random := optionscorrect: .orrect;

    rchain= chain)java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
    return C;
end );

InstallOtherMethod( ClosureGroup,"permgroup,                 : (chain,00,,10/chain.diam,0
    true,
tilresult< ;
    DoClosurePrmGp);

InstallOtherMethod true
    
ReturnFirst    else

java.lang.StringIndexOutOfBoundsException: Range [18, 13) out of bounds for length 55
[,IsPerm], 0java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
function( G, g )
 ,[ , )java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
end );

InstallMethodjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        [##
function( G, gensjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
  ##
end ) chain,java.lang.StringIndexOutOfBoundsException: Range [48, 47) out of bounds for length 53

InstallOtherMethod( ClosureGroup, "permgroupBindGlobal("",unction( gens options )
  [ IsPermGroup,IsPerm,IsRecord , 0,
function( G, g, options )
  return DoClosurePrmGp( G, [ g ], options );
endP inpar #java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47

InstallOtherMethod( ClosureGroup, "permgroup, permgroup, options",             newgens,    
  [ IsPermGroup, IsPermGroup, 
function( G, H, options )
  return DoClosurePrmGp( G, GeneratorsOfGroup( H    
end );

java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 7
[and, IsRecord,0java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 13

#############################################################################
##
#M  NormalClosureOp( <G>, <U> ) . . . . . . . . . . . . . . . . in perm group
##
BindGlobal(    
    local   N,          # normal closure of <U> in <G>, resultjava.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 30
            chain,      # stabilizer chain for the result
            
            options,    # options record for stabilizer chain construction( ,"of group",
            gensG,      # generators of the group <G>
            genG,       # one generator of the group <G>
            gensN,      # generators of the group <N>
            genN,       # one generator of the group <N>
                     a  ofU
            random  ;
            ,  missing, correct  result  i    java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 33

    # get a set of monoid generators of <G>
    java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
    one:= One( G );

    # make a copy of the group to be closed
    N := SubgroupNC( InstallMethod(java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 76
    function, java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
    UseSubsetRelation        CopyOptionsDefaults    (OnTuples(GeneratorsOfGroup(G) g ,One(G )java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
    SetStabChainMutable( N, StabChainMutable( U ) );
nOptionselifIsBound java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 44
    if# perhaps <G> is C solvablejava.lang.StringIndexOutOfBoundsException: Range [56, 55) out of bounds for length 61
                                  else  random :AH 5-java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 0
    options.tempbgroup( <U#                   g -> g ^ gen

    # make list of conjugates to be added to N#            C := SubgroupNC( P, ,
    repeat
        gensN := [  ];
oriin[ 1.10] java.lang.StringIndexOutOfBoundsException: Range [33, 34) out of bounds for length 33
            genG := #                 ( Concatenation( GeneratorsOfGroup( G ), gens ) );
            cnj  := SCRRandomSubproduct( Concatenation#        pcgs:=TryPcgsPermGroup( [ C, G ], false, false, false );
                        v,       # random subproduct of V.generators
            if not cnjcomm,    # commutator of u,v
                Add( gensN cnj );
            fi;
        od;
        if not IsEmptyjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
           N := ClosureGroup( N, gensN, options );
        ;
    until IsEmpty( gensN );

    # Guarantee that all conjugates are in the normal  closure: Loop over all
    # generators of N
     ifLength( GeneratorsOfGroup( U ) ) *
    for genN  in gensN  do

         loopover        repeat
        for genG  in gensG  java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30

            # make sure that the conjugated element is in the closure

            java.lang.StringIndexOutOfBoundsException: Range [30, 14) out of bounds for length 33
                N := ClosureGroup                (optionsreduced ) and options.                IsBound( options.reduced ) and options.reduced
                
            fi;

        od;

    od;

               list, random = 0java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
    chain  (N )
    if not IsBound( chain.orbits )  then
        if IsBound( chain.aux )              doneCUV (,g)< .dentitythen
            chain:=CUV=ClosureGroup U,V;
        fi;
        result := chain.identity;
            fi;
        missing := chain.missing;
                      (C.:andomjava.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
        rchain  :=  IsInt()then  optionsl:o;fijava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
        result  := VerifySGS( rchain, missing, correct );
         not IsPerm(result))then
            repeat
            result= SCRStrongGenTest2chain00,1,1010/hain.diam,0,];
            

        chain:  [java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
    
         =Comm, ));
        ifjava.lang.StringIndexOutOfBoundsException: Range [17, 1) out of bounds for length 65
:[,00,;
        else
,4QuoInt(+,2)4java.lang.StringIndexOutOfBoundsException: Range [51, 14) out of bounds for length 14
        fi;
         <200 then
            param ;
            param[]: 2java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
        fi
             java.lang.StringIndexOutOfBoundsException: Range [34, 30) out of bounds for length 39
                          chainDoClosurePrmGp);
                          chaincorrect .missing);
           dentitycorrect  java.lang.StringIndexOutOfBoundsException: Range [64, 65) out of bounds for length 64
result= , java.lang.StringIndexOutOfBoundsException: Range [54, 53) out of bounds for length 56
        fi;
        chain := java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 13
    java.lang.StringIndexOutOfBoundsException: Range [0, 6) out of bounds for length 0
    SetStabChainMutable( N, ##
    if result <> hainidentity  then
        N := InstallMethod( DerivedSubgroup,"permgrps",true, [ IsPermGroupfunction(,g )
    fi;

   g        # random subproducts of generators
StabChainOptionsN.andomnstallMethod ClosureGroup permgroup,elements",true,

                ,        list of commutators
    UseSubsetRelation N,U)java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
    return N;
end );

InstallMethodInstallOtherMethod( ClosureGroup, "permgroup, element, options",true,
  IsIdenticalObj,  [IsPermGroupD TrivialSubgroup(G);
function
  # test applicability# if there are >4 generators, use random subproducts
if  G, 
    TryNextMethod();
  fi;
  return DoNormalClosurePermGroup  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
end);

#############################################################################
##
#M  ConjugateGroup( <G>, <g> )  . . . . . . . . . . . .  of permutation group
##
                :   ;
function( G, g )
local   H,  S;

    nTuples( GeneratorsOfGroup G ), g), One( G) );
    if HasStabChainMutable(G) then
      S :            Length(list  0
ConjugateStabChain (G ,S,g,g )java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
      InstallOtherMethod( ClosureGroup, "empty list and options",true,
    elif HasSize(G) then
      (H,(G))java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
    fi;
   UseIsomorphismRelation(G, ##
    return H;              java.lang.StringIndexOutOfBoundsException: Range [18, 19) out of bounds for length 18
end )java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 2

#############################################################################
##
#M  CommutatorSubgroup( <U>, <V> )  . . . . . . . . . . . . . for perm groups
##
InstallMethod( CommutatorSubgroup, "permgroups",            rchain    ;
        [ java.lang.StringIndexOutOfBoundsException: Range [67, 26) out of bounds for length 67
    function( U, V ()   java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
              
            java.lang.StringIndexOutOfBoundsException: Range [12, 1) out of bounds for length 56
            doneCUV, # boolean; true if CUV is computed
            u,       # random subproduct of U.generators
            v        param,  missing,  correct,   ,one
            comm,    # commutator of u,v
            list,        # get a set of monoid generators of <G>java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
            i;       loopvariable

    # [ <U>, <V> ] = normal closure of < [ <u>, <v> ] >.
     = ())java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
    doneCUV :(,          (=java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69

    # if there are lot of generators, use random subproductsoptions : ShallowCopy
    Length (  )*
       Length( GeneratorsOfGroup
       
end
java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 30
               u := SCRRandomSubproduct( GeneratorsOfGroup##
               v := SCRRandomSubproduct
               comm :
               if not comm in C then
                   Add( list, comm ) ;
               fi;
           od
           if Length(list) >            genG: SCRRandomSubproduct( gensG, One( G ) );
              C := ClosureGroup( C##  William M. Kantor,:=SCRRandomSubproductutation Groups of Degree $nl 106$,
                                                  temp :=                        GeneratorsOfGroup  )(" ,true,  ] 0,
java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 33
                  CUV := ClosureGroup( U, V );
                  doneCUV := true;
              fijava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
              # force closure test
              StabChainOptions        if notIsEmpty(gensN )  then
              C := DoNormalClosurePermGroup( java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
           fi;
        until IsEmpty(         return    # Guarantee thatall     :Loopover 
    fi;

        # first find a transitive representation for <G>
     =[]java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
    for   (U do
        for vin ionHomomorphism(G ,surjective")
           comm=Comm u v ;
           if not comm in then
               
           fi;
        od;
java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 7
    ifjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 7
        C := ClosureGroup
                                           temp := true ) );
        if not doneCUV then
           CUV := ClosureGroup( U, V java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
           doneCUV := true;
        fi;
        # force closure test falsefi;
        StabChainOptions(C).random    java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
C :=( CUV,C );
    fi;

    return C;
end );

#############################################################################
##
#M  DerivedSubgroup( <G> )  . . . . . . . . . . . . . .  of permutation group
##
InstallMethod( java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 11
    function( G )
    local   D,          # derived subgroup of <G>, result
            g, h,       # random subproducts of generators
            comm,       # their commutator
            list       # list of commutators
            i,j;  # loop variables

    # find the subgroup generated by the commutators of the generators
    D :=

e
    if Length( param := [k,4,0true;
        repeat
            list            param:              G  25920 java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
            for i         fi;
                 : SCRRandomSubproduct(GeneratorsOfGroup( G ),One)
                h = java.lang.StringIndexOutOfBoundsException: Range [60, 59) out of bounds for length 77
                          or     21andSize()237783237120  java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
                if not         result := or (d =   8192 and Size(G8191^3-8191/      # PSL(2,8191)
                   ( comm)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
                fi;
            ;
    java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 36
              D :        result:SCRStrongGenTest2  java.lang.StringIndexOutOfBoundsException: Range [54, 53) out of bounds for length 56
                                               temp := true ) );
              # force closure test
              
                java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 71
              else
                StabChainOptions(D).randomfi
              fi;
                             ()java.lang.StringIndexOutOfBoundsException: Range [32, 30) out of bounds for length 39
            fi;
        until list =
    fi

     
    listjava.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
java.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 58
                 java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 25
             comm := Comm( GeneratorsOfGroup( G )[i],
                           java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
             if not#M  ConjugateGroup( <G>, <g[1092,43589145600,InstallMethod( ConjugateGroup, "<P>, <g>", true, [ IsPermGroup, IsPerm ], 0,
                 Add( ] ;
             fi;
         od;
    od;
    not (G 
              [] 55java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 49
                                        temp :=  168,java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 34
        # give D a proper randomness
        if H;
          StabChainOptions(Djava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        
          java.lang.StringIndexOutOfBoundsException: Range [16, 12) out of bounds for length 49
        ;

        D =java.lang.StringIndexOutOfBoundsException: Range [34, 18) out of bounds for length 70
    fi;

    if HasIsNaturalSymmetricGroup(G) and 

    #java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 37
end  otherwise<             ,      

#############################################################################
##
#M  IsSimpleGroup( <G> )  . . . . . . . test if a permutation group is simple
##
##  This  is  a most interesting function.   It  tests whether  a permutation
##  group is  simple  by testing whether the group is  perfect and then  only
##  looking at the size of the group and the degree of a primitive operation.
##  Basically  it uses  the O'Nan--Scott theorem, which gives  a pretty clear
##  description of perfect primitive groups.  This algorithm is described  in
##  William M. Kantor,
##  Finding Composition Factors of Permutation Groups of Degree $n\leq 10^6$,
##  J. Symbolic Computation, 12:517--526, 1991.
##
java.lang.StringIndexOutOfBoundsException: Range [7, 2) out of bounds for length 50
    function ( G )
    local   #java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 49
            homlocalsom,,new,li,,,b;
            d,          # degree of <G>
            ,m       # $d = n^m$:MovedPoints()java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
            simple,     # list of orders of simple groups
                           ifin java.lang.StringIndexOutOfBoundsException: Range [36, 37) out of bounds for length 36
            sjava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18

    # if <G> is the trivial group, it is not simple
java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 27
        return false;
    fi;

    # first find a transitive representation for <G>
    D  ,V )
    elvth=Product(1               =java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 34
        hom := ActionHomomorphism( G, 
        if Size( G ) <> Size              C:  
            return false;
        fi;
        G := Image( hom );
    fi;

    # next find a primitive representation for <G>
    D=;
    while Length( for   ( )java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
        hom := ctionHomomorphism         hom := ActionHomomorphism( G
        if Size( G ) <> Size( Image( hom ) )    od
            return false;
        fi;
        G = ,java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 33
        D := Blocks( java.lang.StringIndexOutOfBoundsException: Range [0, 22) out of bounds for length 7
    od; = java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 53

    # compute the degree $d$ and express it as $d = n^m$
    D :  G)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
    d := Length( D );
    n := SmallestRootInt( d );
java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 24
    if 10^6 < d  then
        Error"cannot decide       else
    fi;

    # if $G = C_p$, it is simple
    if    IsPrimeInt( Size( G )     failthenC = DoNormalClosurePermGroup(java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 18
         true;

    # if $G = A_d$, it is simple (unless $d < 5$)
    elif  end;
        return

    # if $G = S_d$, it is not simple (except $S_2$)
    elif  IsNaturalSymmetricGroup(G) then
        return 2 = d;

# if $G$ is not perfect, it is not simple (unless $G = C_p$, see above)
     D  IsPcgs(cgs java.lang.StringIndexOutOfBoundsException: Range [22, 23) out of bounds for length 22
        return false;

#java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
    elif  Size( G ) = d ^ 2  then
        return false;

    # if $d$ is a prime, <G> is simple
    elif  java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 0
        return true;

    # if $G = U(4,2)$, it is simple (operation on 27 points)
    elif  d = 27 and Size( G ) = 25920  then
        return    D :=  G)  

     if $G = PSL(n,q)$, it is simple (operations on prime power points)
    elif  (  (d =      8;
          or (d =      9 and Size(G) = (8^3-8)            )  # PSL(2,8)
          or (d =##
          or (d =    121 and Size(G) =        237783237120)  # PSL(5,3)
          or (d =    128 and Size(G) InstallMethodjava.lang.StringIndexOutOfBoundsException: Range [61, 59) out of bounds for length 77
                          :  g,hjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
          or (d##
          or (d = 524288 and Sizem##
      and IsTransitive(             
    then
        return true;

    # if $d$ is a prime power, <G> is not simple (except the cases above)
    elif  d   then
        return false;

    # if we don't have at least an $A_5$ acting on the top, <G> is simple
    java.lang.StringIndexOutOfBoundsException: Range [13, 8) out of bounds for length 21
        return true;

    # otherwise we must check for some special cases
    else

        # orders of simple subgroups of $S_n$ with primitive normalizer
        simple := [ ,#############################################################################
          [60,360],,,,                  #  5: A(5), A(6)#M  PcgsPCentralSeriesPGroup( <G> )
          [ fi
          )
          java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 11
          [360,2520,20160,653837184000    i    .Length((  ))   java.lang.StringIndexOutOfBoundsException: Range [0, 58) out of bounds for length 22
        ];

        # orders of transitive perfect subgroups of $S_m$

              java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 20
          [60,360],                     # 6: A(5), A(6)
          [168,2520],                   # 7: PSL(3,2), A(7)
#T disabled.
        ];

        # test the special cases (Kantor's Lemma 3)
        for s  in simple[n]      if not IsEmpty( list )  the
            for t  # InstallMethod( DerivedSeriesOfGroup,"for permgrp", true, [ IsPermGroup ], 0,
                if    Size( G ) mod (t * s^m) 
                  and (( StabChainOptions#java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
                    sIsSolvableGroupG) and IsSolvableGroup() #         TryNextMethod();
                then
                    (D.inot(pcgs)then
                fi;
            od;
        od;

        # otherwise <G> is simple
        return true;

    fi

end );

#############################################################################
##
#M  IsSolvableGroup( <G> )  . . . . . . . . . . . . . . . .  solvability test
##

# fast test for finding iteratively nontrivial commutators in a permutation group.
# if this goes on too long the group may not be solvable. This can be much faster
# for large degree groups than to use the full pcgs machinery (which uses the same
# idea but builds a pcgs on the way).
# The function returns `true` if the group has been proved to be *non*solvable.
BindGlobal##  William M. Kantor,
local
  # a few moved points
  som:=MovedPoints(G);
  if Length(som) = 0 then SetIsTrivial(G,true); return fail; fi;
      ;
  if Length(som)>100 then
    som:=som{List([1..100],java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  fi;

  elvth:=One(G);
  fct:=function(G)
    elvth:=(,java.lang.StringIndexOutOfBoundsException: Range [12, 1) out of bounds for length 69
    java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 17
  end;

  java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 0
  # find one nontrivial commutator
  new:=ail;
  i:=1;
  while i<)java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
    
    while j<=  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
     :Orbit(  G ;
        new:=Commg, andjava.lang.StringIndexOutOfBoundsException: Range [63, 62) out of bounds for length 63
      fi;
=j+
    od;
    i:=i+1;
  od;
  if new=fail :=PcgsElementaryAbelianSerieG)

  # now take commutators with conjugates to get down
  i:=1;
  repeat
  returnpcgsjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
    j:=1;
    new:=fail;
    l:=[#        ( fam        if Size(G) <> Size(Image(hom#        [ IsList ], 0,
    while #    local  pcgs;fi;
      =(l))fct(G);
      b:=Firstlb->ForAny(       or (      HasIsSolvableGroup1 ] )
      if b<>fail then
       :=java.lang.StringIndexOutOfBoundsException: Range [0, 17) out of bounds for length 9
      else
        Add(l,a);
      fi;
      j:=j+1;
    od;
    if =PCentjava.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 82
      java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
    fi
  ifactors(G)) 
  until i>bound;
  return true;
end);

    # if $G = C_p$, it simple
function()
local pcgs;
  if return(;

  pcgs:=java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 0
  if IsPcgs##
    SetIndicesEANormalSteps(pcgs,pcgs!.java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 0
    SetIsPcgsElementaryAbelianSeries(pcgs,true);
     HasPcgs(G) then
      SetPcgs    elif  IsNaturalSymmetricGroup(G) then
    fi;
    if not HasPcgsElementaryAbelianSeries
      (Gp)java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
    java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
    return true;
  else

  :StabChainMutableS )java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
end);

#############################################################################
##
#M  IsNilpotentGroup( <G> ) . . . . . . . . . . . . . . . . . nilpotency test
##
java.lang.StringIndexOutOfBoundsException: Range [46, 13) out of bounds for length 72
    G

#############################################################################
##
#M  PcgsCentralSeries( <G> )
##
InstallOtherMethod( java.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 63
functionjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
local          or =andG=8191-/    
  pcgs:=TryPcgsPermGroup            ,# domain of operation of <G>
  =5242873524287           ,#
    SetIndicesCentralNormalSteps(pcgs,pcgs!f          # action homomorphism of <G> on <O> or <B>
    ;
    if java.lang.StringIndexOutOfBoundsException: Range [0, 10) out of bounds for length 8
      java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
    fi;
  java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
  return pcgs 
end);

#############################################################################
##
#M  PcgsPCentralSeriesPGroup( <G> )
##
 
function(G)
local java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 11
  pcgs:=TryPcgsPermGroup( G, true, true, Factors(    
  if IsPcgs(pcgs) then
    SetIndicesPCentralNormalStepsPGroup(pcgs,pcgsS =S.
    java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 7
  fi;
  if IsPcgs(pcgs# handle full group
    SetPcgs(G,pcgs);
      ;
  return pcgs;
end;

#T AH, 3/26/07: This method triggers a bug with indices. It is not clear
#T form the description why TryPcgs... should also give a drived series. Thus
#T disabled.
# #############################################################################
# ##
# #M  DerivedSeriesOfGroup( <G> ) . . . . . . . . . . . . . . .  derived series
# ##
# InstallMethod( DerivedSeriesOfGroup,"for permgrp", true, [ IsPermGroup ], 0,
#     function( G )
#     local  pcgs,  series;
#
#     if   (not DefaultStabChainOptions.tryPcgs
#        or ( HasIsSolvableGroup( G )  and  not IsSolvableGroup( G ) ))
#        and not (HasIsSolvableGroup(G) and IsSolvableGroup(G)) then
#         TryNextMethod();
#     fi;
#
#     pcgs := TryPcgsPermGroup( G, false, true, false );
#     if not IsPcgs( pcgs )  then
#         TryNextMethod();
#     fi;
#     SetIndicesEANormalSteps(pcgs,pcgs!.permpcgsNormalSteps);
#     series := EANormalSeriesByPcgs( pcgs );
#     if not HasDerivedSubgroup( G )  then
#         if Length( series ) > 1  then  SetDerivedSubgroup( G, series[ 2 ] );
#                                  else  SetDerivedSubgroup( G, G );  fi;
#     fi;
#     return series;
# end );

#############################################################################
##
#M  LowerCentralSeriesOfGroup( <G> )  . . . . . . . . .  lower central series
##
InstallMethod( LowerCentralSeriesOfGroup,"
    function( G )
    local  pcgs,  java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 0

    java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0
        return [G];
    fi;

    if    not DefaultStabChainOptions.# fasttest forjava.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 82
      or  G )  not ia  the# java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 79
       and not (HasIsNilpotentGroup(G) and IsNilpotentGroup(G)) then
        TryNextMethod();
    fi;

    pcgs =TryPcgsPermGroup(         f := ActionHomomorphism :( ,,java.lang.StringIndexOutOfBoundsException: Range [47, 45) out of bounds for length 61
    if not IsPcgs( pcgs )  then
        TryNextMethod();
    
    SetIndicesCentralNormalSteps(pcgs,java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 38
    series := CentralNormalSeriesByPcgs( pcgs );
if (G 
        if Length( series )java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
                                 else  SetDerivedSubgroup( G, G );  fi;
    fi;
    return series    =new
end );

InstallOtherMethod( while j<=10 and new=fail
 [ IsPermGroup:l^)
  # we want this to come *before* the method for Pcgs computable groups
  ##
  -java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 40
function(G)
local pcgs;
  pcgs:=PcgsElementaryAbelianSeries(G);
  if         (a)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    TryNextMethod();
  fi;
  java.lang.StringIndexOutOfBoundsException: Range [24, 21) out of bounds for length 24
end);

#InstallOtherMethod( ElementaryAbelianSeries, fam -> IsIdenticalObj
#        ( fam, CollectionsFamily( CollectionsFamily( PermutationsFamily ) ) ),
#        [ IsList ], 0,
#    function( list )
#    local  pcgs;
#
#    if    IsEmpty( list )
#       or not DefaultStabChainOptions.tryPcgs
#       or (      HasIsSolvableGroup( list[ 1 ] )
#            and not IsSolvableGroup( list[ 1 ] ) )  then
#        TryNextMethod();
##    fi;
#
##    pcgs := TryPcgsPermGroup( list, false, false, true );
#    if not IsPcgs( pcgs )  then  return fail;
#                           else  return ElementaryAbelianSeries( pcgs );  fi;
#end );

#############################################################################
##
#M  PCentralSeries( <G>, <p> )  . . . . . . . . . . . . . .  p-central series
##
InstallMethod(java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
function( G, p )
    local  pcgsend)java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5

  if##
    TryNextMethod();
  java.lang.StringIndexOutOfBoundsException: Range [0, 4) out of bounds for length 2
  pcgs:=PcgsPCentralSeriesPGroup(G);
  if not IsPcgs(java.lang.StringIndexOutOfBoundsException: Range [0, 20) out of bounds for length 7
java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 20
  fi;
  returndeg 78125
end) p: (colljava.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

#############################################################################
##
#M  SylowSubgroup( <G>, <p> ) . . . . . . . . . . . . . .  Sylow $p$-subgroup
##
InstallMethod( SetIndicesCentralNormalSteps.java.lang.StringIndexOutOfBoundsException: Range [65, 63) out of bounds for length 65
   java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 31
function( G, p )
local   S;
    java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 5
   # enforce solvable methods if we detected anew that the group is
# .
    return SylowSubgroupOpjava.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 0
  fi;
  S
  S :=#M  PcgsPCentralSeriesPGroup( <G> )
  SetIsNilpotentGroup( S, InstallOtherMethod( PcgsPCentralSeriesPGroup    ifdeg>78125
  if Size(S) > 1 then
    SetIsPGroup( S, true );
    SetPrimePGroup( S, p );
    SetHallSubgroup(G, [p]        L : ClosureSubgroup( L,Centralizer(G L ) )
  fi;
  return S;
end );

InstallGlobalFunction( SylowSubgroupPermGroup, function( G, p java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    local   S,            fi;;##
            ,           power<p java.lang.StringIndexOutOfBoundsException: Range [56, 55) out of bounds for length 71
            D,          # domain of operation of <G>
            O,          # one orbit of <G> in this domain
            ,          # blocks of the operation of <G> on <D>
            f,#T AH, 3/26/07: This method triggers a bug with indices. It is not clear
            T,           p-
            g, g2,      # one <p> element of <G>
            C, C2;(   

    # get the size of the <p>-Sylow subgroup
: 1;    q := 1;  while)

    l : Options.
ifq= 1then
        od
    fi;
    # go down in stabilizers as long as possible
    S := StabChainMutable#         if Length( series ) > 1  then  SetDerivedSubgroup( G, series[ 2 ] );
    while Length( S.orbit ) 
        S##  the orbits of Stab_G(pnt) on all points of the orbit pnt^G. (As not
    od;
    G := GroupStabChain( ##  subgroup.)

    # handle full group
    if q = Size(fjava.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 21
        return G;
    fi;

    # handle <p>-Sylow subgroups of size <p>
    if q = p  then
         MovedPoints)
        g: g ^Order(  #    orbit:=Difference(StabChainMu(.[java.lang.StringIndexOutOfBoundsException: Range [56, 55) out of bounds for length 58
        return SubgroupNC( G, [ g ] );
    fi;

java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 33
    D := MovedPoints( G );
    if not IsTransitive( G, D )  then
            pcgs!;
        S:=G;
        D := ShallowCopy( java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
        while q < Size( S )  do
            O := Orbit( S, D[1] );
            f := ActionHomomorphism( S, O,"surjective" );
         T:  Range(f,          java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 29
            :,  java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
            SubtractSet( D, O );
        od;
        return S;
    fi;

    # if the group is not primitive work in the image firstjava.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 30
    B = Blocks ,D )java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
    if Length( B ) <>  fijava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
        Info(InfoGroup,1,"PermSylow: blocks");
        f := ActionHomomorphism( G, B, OnSets,"surjective" );
         :=java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 53
        if java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 11
            T := PreImagesSet(b=java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 19
             =java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 49
            return S
        fi;
    fi;

    # find a <p> element whose centralizer contains a full <p>-Sylow subgroup
    Info(InfoGroup,1,"PermSylow: element":oa;
    repeat g := Random( G );  until java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 32
    g = ^Orderg   p);
    C := java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 11
    while GcdInt( q, Size( C ) ) < q  =;
        repeat g2 := Random( C );  until Order( g2 ) mod:genjava.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 32
        g2 := g2 ^ (Order(         if orbit[1]^gen<>orbi1^>java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 57
        C2 := Centralizer( G, g2  
        if#
             :    =g2
        fi;
        wh (gen=java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 49

    # the centralizer acts on the cycles of the <p> element
    B := List( Cycles( g, D ), Set );
    Info(InfoGroup,1,"PermSylow: cycleaction");
    f := ActionHomomorphism( C, B, OnSets,"surjective" );
    T := SylowSubgroupPermGroup(    =java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 23
S : java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 30
    return S;

end ;

#############################################################################
##
#M  Socle( <G> )  . . . . . . . . . . .  socle of primitive permutation group
##
InstallMethod#M  AllBlocks . . . Representatives of all block systems
    function( G )
    local   Omega,  deg,  coll ds  L,  z,  ord,
            p,  i;

    java.lang.StringIndexOutOfBoundsException: Range [24, 9) out of bounds for length 30

    if not IsPrimitive( G, Omega )#    function( list )
        TryNextMethod();
    fi;

    # Affine groups first.
    L :  , ;
    if L <> []  then
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 1
    fi;

    deg := Length (pcgs  thenreturnjava.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
    if java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        TryNextMethod();
    # the normal closure actually seems to be faster than derived series, so
    # this is not really a shortcut
java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
    #    shortcut := true;
        if >java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 17
    #        coll := Collected( Factors( deg ) );
    #        d := Gcd( List( coll, c -> c[ 2 ] ) );
    #        if d mod 5 = 0  then
    #            m := 1;
    #            for c  in coll  do
    #                m := m * c[ 1 ] ^ ( c[ 2 ] / d );
    #            od;
    #            if m >= 5  then
    #                shortcut := false;s[1)java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
    #            fi;
    #        fi;
    #    fi;
    #    if shortcut  then
    #        ds := DerivedSeriesOfGroup( G );
    #        return Last(ds);
    #    fi;
    fi;

    coll := ( "CreateAllCycleStructures, function(java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
    if deg < 78125l#
        p := Last(coll)[ 1 ];
    else
        i := Length( coll     in do
        while coll[i [2 ]      1 
  GG,(  java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
        od;
        p := coll[ i m-]+
    fi;
    repeat
           -]
            z := java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 11
            ord := Order( z );
        Add(,m;
        od;
    until Index( G, Centralizerjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 11

            O,           one orbit of <G> in this domain
    # speed up the closure process
    L := NormalClosure,# action of<##
    deg =78125  then
l,,,g
        L := Last(ds);
    fi;
    if IsSemiRegular( L, Omega )  then
        L := ClosureSubgroup( L, Centralizer( G, L ) );
    java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 29
    return L;
end );

#############################################################################
##
#M  FrattiniSubgroup( <G> ) . . . . . . . . . . . .  for permutation p-groups
##
    # go
    function( G )
    local   p,  l,  k,  iwhile Length .java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 42

    if IsPGroup(G)then
        TryNextMethod(    
    elif IsTrivial( G ) then
      return G    fi;
    fi;
    p := PrimePGroup(    q = p  
    l =  java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
    k := [ l[1]^p ];
    for i  in [ 2 .. Length(l) ]  do
        for j  in [ 1 .. i-1 ]  do
            if not IsTransitive( G, D )  then
        od;
        Addk [ii;
    od;
    return SolvableNormalClosurePermGroup =(D);
end );

#############################################################################
##
#M  ApproximateSuborbitsStabilizerPermGroup(<G>,<pnt>) . . . approximation of
##  the orbits of Stab_G(pnt) on all points of the orbit pnt^G. (As not
##  all schreier generators are used, the results may be the orbits of a
##  subgroup.)
##
InstallGlobalFunction( java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 17
    java.lang.StringIndexOutOfBoundsException: Range [59, 8) out of bounds for length 59
    local one,  if java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 29
          processStabGen, currPt,currGen, gens,f :  G ,"java.lang.StringIndexOutOfBoundsException: Range [58, 57) out of bounds for length 61

    one:= One( G );
  if HasStabChainMutable( G )              = java.lang.StringIndexOutOfBoundsException: Range [41, 39) out of bounds for length 49
# if we already have a stab chain and bother computing the proper
# stabilizer, a trivial orbit algorithm seems best.
    return Concatenation([[punkt]],
          OrbitsDomain(G,),
                           ()[));
#    orbit:=Difference(StabChainMutable(G).orbit,[punkt]);
#    stab:=Stabilizer(G,punkt));
#    # catch trivial case
#    if Length(stab)=0 then
#      stab:=[ one ];
#    fi;
#    stgp:=1;
#
#    processStabGen:=function()
#      stgp:=stgp+1;
#      if stgp>Length(stab) then
#        StabGenAvailable:=false;
#      fi;
#      return stab[stgp-1];
#    end;

  else
    # compute orbit and transversal
    Ggens:=GeneratorsOfGroup(G);
    orbit := [ punkt ]java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 7
        # the centralizer acts on the cycles of the <p> element
    trans[ punkt ] := one;
    for  in orbit  do
      for gen  in Ggens do
        img:=^;
        if not IsBound( trans[ img ] )  then
          Add( orbit, img );
          trans[img ] := gen;
        fi;
      od;
    odjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7

  fi;

  currPt:=1;
  currGen:=0;

    processStabGen:=functionGcdListcoll c>2]))
local ,enjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
      if     #       := ;
        # next one
        currGen:=currGen+1;
        if currGen>Length
      currGen:1java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
          currPt);
          ifjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            return ()###############################################################################
          fi;
        fi;
        :currPtjava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
        b:()
      else      ;
        a:=Random(1, Length(orbit));
        b:=Random(1, Length(Ggens));
      fi;
      # map a with b  permutations
      img:=orbit[a]^java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 14
      if img=orbit[a] then
        return ();
      
        punkt:=orbit[a];
        :=Ggens[;
        while punkt<>orbit[1] do
          gen:=trans[punkt]*gen;
          java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 36
        od;
        if ord = z ;
        punkt:=        until mod =;
        while punkt<>orbit[1]z:    ord    od;
          gen:=gen/trans[punkt];
          punkt:=punkt/trans[punkt];
        od;
        if orbit[1]^>orbit1]ErrorUHEH";fi;
      fi;
      return gen;
    end;

  # as the first approximation take a subgroup generated by four nontrivial
  # Schreier generators
  changedL : Lastds);
  gens:=[];
ilechanged<=3 (orbit)dojava.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 5
    gen:=();
    while IsOne(gen) and currPt<=Length(orbit) do
    return java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
    od;
    Add(gens,gen);
    function 
  ;
  if Length(gens)=0 
orbit=
  else
    orbit:=OrbitsPerms(gens,orbit);
  fi;

  # todo: further fuse
  java.lang.StringIndexOutOfBoundsException: Range [6, 3) out of bounds for length 15
end );

#############################################################################
##
#M  AllBlocks . . . Representatives of all block systems
##
icjava.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 47
function(g)
localgens,,ool,

  j
  local bl,bld,i,t,n;
    # find representatives of all potential suborbits
    bld:=List(Filtered(subo,i->not ForAny(b,j->if java.lang.StringIndexOutOfBoundsException: Range [44, 41) out of bounds for length 50
    bl:#M  ApproximateSuborbitsStabilizerPermGroup(<G>,<pnt>) . . . approximation of
    if not IsPrimefi
      for i in bld do
        t:=Union(b,[i]);
java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 27
        if Lengthl:orAlljava.lang.StringIndexOutOfBoundsException: Range [60, 59) out of bounds for length 79
           not n[1]java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
          t:=n[1];
          (
          bl:=Concatenation(bl,[od
        fi;
      od;
    ;
    return bl;
  end;

  one:= One(#M  GeneratorsSmallest                           Difference(G,[])))
  := (java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 58
  if Length(gens( ( S#    # catch trivial case
  subo:=     #      stab:=[ o ;
          Minimum(List(gens,java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 8
  dom:=Union#
  if not IsTransitive(g,bGen:=function()
    Error("AllBlocks, must be transitive");
  fi;
  pool:=[           ,engths)then
  return DoBlocks(subo[1]);
end

#############################################################################
##
#F  SignPermGroup
##
InstallGlobalFunctionelse
  if ForAll(GeneratorsOfGroup(g),i->SignPerm(i)=1) then
    
  else
    java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 14
  fi;
end );# get the sorted orbit (the basepoint will be the first point)  : one;

BindGlobal( "CreateAllCycleStructures", function(n)
local i,j,l,m;
  l:[];
  for i           Add(java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 0
    m:=]java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
    for jod;
      
        if IsBound(m[j-1]) then
          mjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
                od;
          m[j-    processStabGen:=#
            local plocal i,ab        =Sjava.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 26
      fi;
    od;
ll)java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
  od;
  return l
end );

#############################################################################
##
#F  CycleStructuresGroup(G)  list of all cyclestructures occ. in a perm group
##
InstallGlobalFunction( CycleStructuresGroup,        Add  gen ;
local l,m,i, one;
  l:=CreateAllCycleStructures(Length#java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
  m:=List([1..Length(l)-1],i->0);
    one:= One( g );        # here we want to be really fast, so use a private orbit algorithm
  for i in        o2:[S.       :1 Ggens);
    if Representative(i) <> one then
      m[Position(l,ycleStructurePerm(Representative(i))-1:1;
    ;
  if  then
  return m;
end );


# return e is a^e=b or false otherwise
InstallGlobalFunction(od
function(a,b);
,tst,,,g;
  oa:=Order(a)gen:    java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
  ob:=Order(b);
  if oa mod ob<>0 thenif[^java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  q:=oa/ob;
  aa:=a^q;

  m:        ;
  e:=1;
  java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 15
    tst:=aa^e/b;
    s:=SmallestMovedPoint(tst); # a point on which there might be a difference
    if s=infinity then # found it
      :0
    fi;
    c:=Cycle(aa,s)while java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 47
    g:=Gcd(,##
    p:=Position(c,s^b);
failor mod <
    e:=ChineseRem([m,Length(c)]     IsPermGroup       ;
    m:=    (java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 18
  od;
  if aa#M  ViewObj( <G> )
  return q*e mod oa;
end);


#############################################################################
##
#M  SmallGeneratingSet(<G>)
##
InstallMethod(SmallGeneratingSet,"random and generators subset orbit=List(java.lang.StringIndexOutOfBoundsException: Range [6, 1) out of bounds for length 32
  [IsPermGroup],0,
function (G)
local  i, j, U, gens,a,mintry,orb,orp,isok;

  Append()

  # remove obvious redundancies...
  # sort elements by descending order; trivial permutations
  # at the end
  SortBy(gens, g -> -( ,java.lang.StringIndexOutOfBoundsException: Range [14, 10) out of bounds for length 55

  i := 1;
  while i < Length(gens) do
    j := i + 1;
    while j <= Length(gens) do
      :LogPermg[i,gensjjava.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 7
      if a  ;
          j+1;
      else

      fi;
    od;
    i := i + 1;
  od;

  if Length(gens)<=Length(          bl:=Concatenation(bl:java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 68
    return gens;#############################################################################
  fi;

  # try pc methods. The solvability test should not exceed cost, nor
  # the number of points.(,via stabchain"  java.lang.StringIndexOutOfBoundsException: Range [55, 54) out of bounds for length 57
  if #Length(MovedPoints(G))<50000 and   (gens= return] java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      (G
djava.lang.StringIndexOutOfBoundsException: Range [33, 21) out of bounds for length 33
    return MinimalGeneratingSet(G);
  fi;

  # store orbit data
  orb:=Set(Orbits(G,MovedPoints(G)),java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 2
  # longer primitive orbits
  orp:=Filtered([1("primitive#

  isok:##
    if(MovedPoints()>java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 22
      Length(orb)>Length(Orbits(U,MovedPoints(U)))    java.lang.StringIndexOutOfBoundsException: Range [11, 9) out of bounds for length 35
        ForAny(orp
      java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 15
    fi;

    U ,jl,;
d)Sizes
  end;

  mintry:=2;for   ofjava.lang.StringIndexOutOfBoundsException: Range [36, 33) out of bounds for length 74
  if Length(gens)>2m[j1]    # simple socle factor.
    # lower bound on what to accept -- use index of G' instead of full
    # structure of G/G', as the latter is more expensive.
    ;
    mintry:=Maximum(mintry    :so
    =cs[Length-java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
    i:=Maximum(2,mintry);
    while i<=mintry+1 and i<Length(gens) do
      # try to find a small generating system by random search
      j:=1;
      whilej<=5and Lengthgens)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
        U:=Subgroup(G,List([1..i]ifnot IsTransitive(d 
        if isok(U) then
          
        fi;
        j:=j+1;
      ;
      i:=i+1;
        one=One  
  iinjava.lang.StringIndexOutOfBoundsException: Range [30, 25) out of bounds for length 30

  # try to delete generators
  i := 1;
  while i <= Length(gens) and Length(gens)>mintry do
    # random did not improve much, try removing generators one by one
    U:=Subgroup(G,gens{Difference([1..java.lang.StringIndexOutOfBoundsException: Range [0, 44) out of bounds for length 38
    if isok(U) local oa,ob,q,aa,m,e,tst,s,c,p,g;
gens=Set(GeneratorsOfGroup);
      ob:=Or
=i+;
    fi;
  od;
  returngens;
end);

#############################################################################
##
#M  GeneratorsSmallest(<G>) . . . . . . . . . . . . . for permutation groups
##
( "")

 java.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 61
    local       c:=Cycle(aa,=(aa,s;
            gen,        # one generator in <gens>
            orb,# basic orbit of <S>
            pnt,        e:ChineseRem,Lengthc)],ep-])
            T,          # stabilizer in <S>
            java.lang.StringIndexOutOfBoundsException: Range [34, 17) out of bounds for length 34

    # handle the anchor case
    if Length(S.generators) = 0  
        return ##
    fi;

    # now get the smallest generating system of the stabilizer
    gens := GeneratorsSmallestStab(

    # get the sorted orbit (the basepoint will be the first point)
    orb :#java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
    SubtractSet( orb, [S.orbit[1]] );gens, g - -g))

dle the other
    while Length(orb) <> while  )

        # take the smallest point (coset) and one representative
        pnt := orb[1];
        gen := S.identity;
        while S.orbit[1] ^ gen <> pnt        ;
           gen := LeftQuotient( S.transversal[ pnt / gen ], gen );
        od;

        # the next generator is the smallest element in this coset
        T := S.stabilizer;
        while Length(T.generators) <> 0  do
 := Minimum( ( T., gen ));
            while T.orbit[1] ^ gen <> java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 5
                gen := LeftQuotient( T.transversal[   # the number of points.
            od;
            T: T.stabilizer;
        od;

        # add this generator to the generators list and reduce orbit
        Add( gens, gen       ()3 then

        #SubtractSet( orb,
        #    Orbit( GroupByGenerators( gens, S.identity ), S.orbit[1] ) );

        # here we want to be really fast, so use a private orbit algorithm
        o2=Sorbit[1];
        RemoveSet(orb,S.orbit[1]);
        for oo in o2 do
          for og in gens do
            img:=oo^og;
            if img in orb then
              Add(o2,img);
              RemoveSet(orb,img);
            fi;
          od;
        od;

    od;

    # return the smallest generating system
    return gens;
end );

InstallMethod(GeneratorsSmallest,"perm group via minimal stab chain",
  [IsPermGroup],
functionForAnyorp,x->not IsPrimitive(,orb[x])) then
  # call the recursive function to do the work
  return     StabChainOptions).random:=100; # randomized size
end);

    SizeU=izeG;
  [IsPermGroup],
  # call the recursive function to do the work
  G -> LargestElementStabChainmintry=2


#############################################################################
##
#M  KnowsHowToDecompose( <G>, <gens> )
##
InstallMethod(KnowsHowToDecompose,
    "perm group and generators: always true",
    IsIdenticalObj,
    [ IsPermGroup, IsList ],
    ReturnTrue);


#############################################################################
##
#M  ViewObj( <G> )
##
InstallMethod( ViewString, "for a java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 30
    [ IsPermGroup and HasGeneratorsOfGroup ],    i=aximum(,intry);
function(G)
  local gens,str;
  gens:= GeneratorsOfGroup( G );
  if 30 < Length( gens ) * LargestMovedPoint( G ) / GAPInfo.ViewLength then
    str:="<permutation group";
    if HasSize(G) then
      Append(str," of size ");
      AppendstrString(Size(G)));
    fi;
    Append(str," with ");
    Append(str,Pluralize(Length( gens ), "generator"));
    Append(str,"");
  else
    str:="Group(";
    if IsEmpty( gens ) or ForAll(gens,i->Order(i)=1) then
      d(str,());
    else

    fi;
    Append(str,")");
  fi;
  return ;
);


#############################################################################
##
#M  AsList( <G> ) elements of perm group
##
InstallMethod( AsList, "permgpi=Lengthg ()java.lang.StringIndexOutOfBoundsException: Range [50, 49) out of bounds for length 52
  G -> ElementsStabChain( StabChainMutable     )java.lang.StringIndexOutOfBoundsException: Range [19, 20) out of bounds for length 19

#############################################################################
##
#M  AsSSortedList( <G> ) elements of perm group
##
InstallMethod( AsSSortedList, "via
  AsSSortedListNonstored );

InstallMethod( AsSSortedListNonstored, "via stabchain#M  GeneratorsSmallest(<G>) . . . . . . . . . . . . . for permutation groups
function( G )
  local list;
  list := ElementsStabChain( StabChainMutable(G));
  Sort(list);
  return list;
end;

#############################################################################
##
#M  ONanScottType( <G> )
##
InstallMethod(ONanScottType,"primitive permgroups",true,[IsPermGroup],0,
function(G)
local dom,s,cs,t,m,stb;
  dom:=MovedPoints(G);
  if not IsPrimitive(G,dom) then
    Error("<G> must be primitive");
  fi;
  s:=Socle     =java.lang.StringIndexOutOfBoundsException: Range [36, 34) out of bounds for length 51
  if     :  .);
    return "1";
  elif IsNonabelianSimpleGroup(s) then
    return "2      
  elif Length(dom)=Size(return"4b"java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
    return    fi;
se
    # so the group now is of type 3 or 4. Next we determine a simple socle
    # factor and a direct product of all but one socle factor.
    # simple socle factor.

    # as default stab chain chooes pts lexicographically, this is likely a
    # stored stabilizer
stb:(SmallestMovedPoint);
    cs:=CompositionSeries(s);
cs)1;
         while Length.)>0  java.lang.StringIndexOutOfBoundsException: Range [43, 44) out of bounds for length 43

#
    # onto one direct factor) is proper subgroup of T1.

    #if Size(ClosureSubgroup(m,stb))<Size(s) then
    # Since m is normal, this projection is a proper subgroup iff m does not
    # act transitively
    if not IsTransitive# add this generator to the generators list and reduce orbit
      return "4c"; # Product action of type 2 with transitive
    fi;

    #  Now we are in case 2, R1=T1. Group must be diagonal (3) or product
    #  action of diagonal with transitive (4). For diagonal case the point         here we want to be really fast, so use a private orbit algorithm
    #  stabilizer must have the order of t, for product case it must be a
    #  power of the order of t
    if Size(stb)=Size(t) then # type 3
      # in the a case the socle is not minimal
      #if Size(NormalClosure(G,t))<Size(s) then
      if Length(Orbit           gensjava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
        return "3a";
      else
        return "3b";
      fi;
    else
      # Same argument as for 3:
      #if Size(NormalClosure(G,t))<Size(s) then
      if Length(Orbit(G,t))<Length(cs)-1 then
        return "4a";
      else
        eturn"4"java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
      fi;
    fi;
  fi;
end);

#############################################################################
##
#M  SocleTypePrimitiveGroup( <G> )
##
InstallMethod(SocleTypePrimitiveGroup# call the recursive function to do the work
  [IsPermGroup],0,function(G)
local s,cs,t,id,r;
  if not IsPrimitive(G) then
    ErrorNoReturn("<G> must be primitive on its moved points");
  fi;
  s:=Socle(G);
  :=CompositionSeriess);
  t:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  id:=IsomorphismTypeInfoFiniteSimpleGroup(t);
  r:=rec(series:=id.series,
             width:=Length(cs)-1,
             name:=id.name);
  if IsBound(id.parameter) then
    r.parameter:=id.parameter;
  else
    r.parameter:=id.name;
  fi;
  return r;
end);

# this function is needed for the transitive and primitive groups libraries
BindGlobal("STGSelFunc",function(a,b)
  if IsFunction(b) then
    java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 16
  elif
   if IsList(a) and a=b then
     return true;
   fi;
   return a in b;
 else
   return a=b;
 fi;
end);

InstallGlobalFunction(DiagonalSocleAction,function(g,nr)
local ran,d,emb,u,act;
  ran:=[1..nr];
  d:=DirectProduct(List(ran,i->g));
  emb:=List(ran,i->Embedding    str:="permutation group";
  u:=List(GeneratorsOfGroup(g),i->Product(ran,j->Image(emb[j],i)));
  u:=SubgroupNC(d,u);
  act:=      Append(String(ize(G));
  return Image(act,d);
end);

InstallGlobalFunction(ReducedPermdegree,function(g)
  local dom, orb, gdeg>";
  dom=MovedPointsg);
  orb:=ShallowCopy(java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 18
  if Length(orb)=1 then returnfail;
  gdeg:=20*LogInt(Size(g),2); # good degree   not (G)then
  SortBy(rb Length)java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
fi
  if p=fail  s:=ocleG;
  ndom:=orb[p];
  if Length(ndom)*2>Length(dom) then return fail;fi;
  s:=Stabilizer(g,orb[p]  id=IsomorphismTypeInfoFiniteSimpleGroup(t);
        Append(str,iewString);
if p>engtho  p:1f;
  while(s> do
name=dn;
      p:=p+1;
      if pnd(id.arameter) then
    od;
:(orbp];
    s    s:Stabilizer(s,orb[p],OnTuples);
  od;
  if Length(ndom)*2>Length(dom) then return fail;fi;
  hom:=ActionHomomorphism(g,ndom,"surjective");
  SetIsInjective(hom,true);
  SetSize(Image(hom),Size(g));
  return hom;
end)java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5

Messung V0.5 in Prozent
C=74 H=78 G=75

¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.52Angebot  ¤

*Eine klare Vorstellung vom Zielzustand






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1128594
#Domains=1976912