Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/lpres/gap/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 12.6.2024 mit Größe 4 kB image not shown  

Quelle  misc.gi   Sprache: unbekannt

 
############################################################################
##
#W misc.gi   LPRES    René Hartung
##

############################################################################
##
#F  LPRES_WordsOfLengthAtMostN( <list>, <n> )
##   
## returns a list of all words of <list> of length at most <n>
##
InstallGlobalFunction( LPRES_WordsOfLengthAtMostN,
  function ( list, n )
  local Words, # list of all words
 i,g; # loop variables

# Words:=[ [ list[1]^0 ], list ];
  Words:=[ [ One( list[1] ) ], list ];
  for i in [ 3 .. n+1 ] do 
    Add( Words, [] );
    for g in list do 
      Append( Words[i], List( Words[i-1], x -> x*g ) );
    od;
  od;
  return( Concatenation( Words ) );
  end);

############################################################################
##
##  FrattiniSubgroup( <Pcp> )
## 
##  returns the Frattini subgroup of a nilpotent PcpGroup
## 
############################################################################
InstallMethod( FrattiniSubgroup,
  "for a nilpotent PcpGroup",
  [ IsPcpGroup ], 0,
  function(H)
  local DH, # derived subgroup of <H> 
 delta, # epimorphism into the abelian quotient of <H>
 T, # Torsion subgroup of the abelian quotient 
 phi, # isomorphism into the PcGroup
 Pc, # PcGroup of the torsion group <T>
 Ff,F;   # Frattini subgroups of the abelian quotient
  
  if not IsNilpotent(H) then 
    TryNextMethod();
  fi;

  DH:=DerivedSubgroup(H);
  delta:=NaturalHomomorphismByNormalSubgroup(H,DH);
  T:=TorsionSubgroup(Range(delta));
  phi:=IsomorphismPcGroup(T);
  F:=FrattiniSubgroup(Range(phi));
  Ff:=PreImage(phi,F);

  return(PreImage(delta,Ff));
  end);

############################################################################
##
#F  LPRES_LowerCentralSeriesSections( <PcpGroup> )
## 
## returns either the p-ranks of the lower central series sections of 
## <PcpGroup> or its abelian invariants.
##
InstallGlobalFunction( LPRES_LowerCentralSeriesSections,
  function(H)
  local lcs, # lower central series of <H>
 sec, # a lower central series section
 A, # ranks/abelian invariants
 i; # loop variable

  if not HasLowerCentralSeriesOfGroup(H) then 
    Info(InfoLPRES, 1, "computing the lower central series first");
  fi;
  lcs:=LowerCentralSeries(H);

  A:=[];
  for i in [Length(lcs),Length(lcs)-1..2] do
    sec:=lcs[i-1]/lcs[i];
    if IsElementaryAbelian(sec) then 
      Info(InfoLPRES,1,"The ",i-1,"-th section has rank ",RankPGroup(sec));
      Add(A,RankPGroup(sec));
    else
      Info(InfoLPRES,1,"The ",i-1,"-th section has abelian invariants ",
                         AbelianInvariants(sec));
      Add(A,AbelianInvariants(sec));
    fi;
  od;
  return(Reversed(A));
  end);

############################################################################
##
#F  LPRES_LCSofGuptaSidki( <PcpGroup>, <prime> )
##
## computes the lower central series sections of the Gupta-Sidki group
## from an index-3 subgroup which is invariantly L-presented.
##
InstallGlobalFunction( LPRES_LCSofGuptaSidki,
  function( H )
  local lcs,  # lower central series
 aut,  # automorphism induced by the action of the cyclic group
 p, # a prime 
 gens, # first <p> generators of <H>
 C, # cyclic group of order <p>
  T; # split extension via T

  if HasLowerCentralSeriesOfGroup(H) then 
    lcs:=LowerCentralSeries(H);
  else
    Error("must compute the lower central series first!");
  fi;
 
  p:=Exponent(lcs[Length(lcs)-1]/lcs[Length(lcs)]);

  gens:=GeneratorsOfGroup(H){[1..p]};

  Info(InfoLPRES,3,"determine automorphism induced by the action");
  aut:=GroupHomomorphismByImagesNC(H,H,gens,
                                   Concatenation(gens{[2..p]},[gens[1]]));

  C:=Range(IsomorphismPcpGroup(CyclicGroup(p)));
  T:=SplitExtensionByAutomorphisms(H,C,[aut]);

  Info(InfoLPRES,3,"split extension is \n",T);
  Info(InfoLPRES,3,"compute the lower central series");

  if IsFinite(T) then 
    lcs:=LowerCentralSeries(Range(IsomorphismPcGroup(T)));
  else
    lcs:=LowerCentralSeries(T);
  fi;

  if not HasLowerCentralSeriesOfGroup(T) then 
    SetLowerCentralSeriesOfGroup(T,lcs);
  fi;
  Info(InfoLPRES,3," done");

  return(LPRES_LowerCentralSeriesSections(T));
  end);

[ Dauer der Verarbeitung: 0.26 Sekunden  (vorverarbeitet)  ]