Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/guarana/exams/   (GAP Algebra Version 4.15.1©)  Datei vom 11.1.2022 mit Größe 8 kB image not shown  

Quelle  sta.gi   Sprache: Shell

 

#############################################################################
##
#W sta.gi                 GUARANA package                     Bjoern Assmann
##
## Examples that were used in the Groups St Andrews 2005 paper 
## "Algorithmic use of the Mal'cev correspondence". 
##
#H  @(#)$Id$
##
#Y 2006
##
##

#############################################################################
##
#F GUARANA.GetSomeAutomorphsimOfF_nc( F_nc, n )
##
## IN
## F_nc ..... free nilpotent group on n gens and class c
## n ........ number of generators.
##
## OUT
## A list of  autmorphsims of F_nc.  
## Some of them are induced by automorphisms of F_n.
## 
GUARANA.GetSomeAutomorphsimOfF_nc := function( F_nc, n ) 
    local F,A,gensA,gensN,k,auts,ll,gensF,imgs,g,beta,i,aut;

    # get automorphsim induced from free group
    F := FreeGroup( n );
    gensF := GeneratorsOfGroup( F );
    A := AutomorphismGroup( F );
    gensA := GeneratorsOfGroup( A );
    gensN := Pcp( F_nc );
    k := Length( gensA );
    auts := [];
    for i in [1..k] do
        aut := gensA[i];
        ll := List( gensF, x->x^aut );
        imgs := List( ll, x -> MappedWord( x, gensF, gensN{[1..n]} ) );
        Add( auts, GroupHomomorphismByImagesNC(F_nc,F_nc,gensN{[1..n]},imgs ));
    od;

    # get  automorphism of Bryant's paper 
    # "Automorphism groups of free nilpotent groups" 
    # Arch. Math. Basel. 52, 1989.
    g := gensN[1]*Comm( Comm( gensN[1], gensN[2] ), gensN[1] );
    beta := GroupHomomorphismByImagesNC( F_nc,F_nc,gensN{[1,2]}, [g,gensN[2]]);
    Add( auts, beta );

    return auts;
end;


#############################################################################
##
#F GUARANA.PcpTGroupByAbelianGroup( N, auts )
##
## IN
## N ..... T-group given by a finite presentation
## auts... List Automorphisms of N, where <auts> is abelian
## 
## OUT
## polycyclic presentation of the semidirect product H \rhd N
## where H is a free abelian group with Length(auts) generators, which
## acts like auts on N
##
GUARANA.PcpGroupTGroupByAbelianGroup := function( N, auts )
    local n,m,l,coll,pcpN,exp1,i,j,con,exp,exp2,genList,g;
    
    #get collector
    n := HirschLength( N );
    m := Length( auts );
    l := m+n;
    coll := FromTheLeftCollector( l );
    
    # define conjugation relations within N,   g_i^g_j
    pcpN := Pcp( N );
    exp1 := List( [1..m], x-> 0 );
    for i in [2..n] do 
        for j in [1..(i-1)] do
            # compute g_i^g_j
            con := pcpN[i]^pcpN[j];
            exp2 := Exponents( con ); 
            exp := Concatenation( exp1, exp2 );
            genList:=GUARANA.Exp2GenList(exp);
            SetConjugate( coll, i+m, j+m, genList);

            # compute g_i^(g_j^-1)
            con := pcpN[i]^(pcpN[j]^-1);
            exp2 := Exponents( con ); 
            exp := Concatenation( exp1, exp2 );
            genList:=GUARANA.Exp2GenList(exp);
            SetConjugate( coll, i+m, -(j+m), genList);
        od;
    od;

    #define relations coming from the action of H on N
    for j in [1..m] do
        for i in [1..n] do
            #action of g_j on g_{i+m}
            g := pcpN[i]^(auts[j]);
            exp2 := Exponents( g );
            exp := Concatenation( exp1, exp2 );
            genList:=GUARANA.Exp2GenList(exp);
            SetConjugate( coll, i+m, j, genList);

            #action of g_j^-1 onf g_{i+m}
            g := pcpN[i]^(auts[j]^-1);
            exp2 := Exponents( g );
            exp := Concatenation( exp1, exp2 );
            genList:=GUARANA.Exp2GenList(exp);
            SetConjugate( coll, i+m, -j, genList);
        od;
    od;

    UpdatePolycyclicCollector( coll);
    return PcpGroupByCollector( coll );
end;


#############################################################################
##
#F GUARANA.NilpotentByFreeAbelianExams( n )
##
## IN
## n ........... natural number between 1 and 8 for the 
##               Sta paper examples.
##               Further choices [-11..-1]
##               [10..29]. 
##
## OUT 
## Pcp of a nilpotent by free abelian group.
##
GUARANA.NilpotentByFreeAbelianExams := function( n )
    local x,pol,R,G,m,ll,N,n1,n2,N2,F,F_nc,hl,auts,T,a;

    x := Indeterminate( Rationals );

    # first 8 groups as in Groups St Andrews 2005 paper
    if n=1 then 
        pol := x^2-3;
        R := GUARANA.Triang_PresentTriang( 3, pol );
        return GUARANA.Triang_UpperTriangAndUnitriang( R );
    fi;
    if n=2 then 
        pol := x^2-3;
        R := GUARANA.Triang_PresentTriang( 4, pol );
        return GUARANA.Triang_UpperTriangAndUnitriang( R );
    fi;
    if n=3 then
        pol := x^2-3;
        R := GUARANA.Triang_PresentTriang( 5, pol );
        return GUARANA.Triang_UpperTriangAndUnitriang( R );
    fi;
    if n=4 then
        pol :=  x^3 - x^2 + 4; 
        R := GUARANA.Triang_PresentTriang( 3, pol );
        return GUARANA.Triang_UpperTriangAndUnitriang( R );
    fi;
    if n=5 then
        pol :=  x^3 - x^2 + 4; 
        R := GUARANA.Triang_PresentTriang( 4, pol );
        return GUARANA.Triang_UpperTriangAndUnitriang( R );
    fi;
    if n=6 then
        m := 2;
        F := FreeGroup( m );
        F_nc := GUARANA.NilpotentQuotient( F, 4 );
        hl := HirschLength( F_nc );
        auts := GUARANA.GetSomeAutomorphsimOfF_nc( F_nc, m );
        a := auts[1]*auts[2]*auts[3]^3;
        G := GUARANA.PcpGroupTGroupByAbelianGroup( F_nc, [a] );
        N := Subgroup( G, Pcp(G){[2..hl+1]} );
        T := rec( G := G, N := N );
        return T;
    fi;
    if n=7 then
        m := 2;
        F := FreeGroup( m );
        F_nc := GUARANA.NilpotentQuotient( F, 5 );
        hl := HirschLength( F_nc );
        auts := GUARANA.GetSomeAutomorphsimOfF_nc( F_nc, m );
        a := auts[1]*auts[2]*auts[3]^3;
        G := GUARANA.PcpGroupTGroupByAbelianGroup( F_nc, [a] );
        N := Subgroup( G, Pcp(G){[2..hl+1]} );
        T := rec( G := G, N := N );
        return T;
    fi;
    if n=8 then
        m := 3;
        F := FreeGroup( m );
        F_nc := GUARANA.NilpotentQuotient( F, 4 );
        hl := HirschLength( F_nc );
        auts := GUARANA.GetSomeAutomorphsimOfF_nc( F_nc, m );
        a := auts[1]*auts[3]^3;
        G := GUARANA.PcpGroupTGroupByAbelianGroup( F_nc, [a] );
        N := Subgroup( G, Pcp(G){[2..hl+1]} );
        T := rec( G := G, N := N );
        return T;
    fi;
    # other examples 
    if n=11 then
        pol :=  x^3 - x^2 + 4; 
        R := GUARANA.Triang_PresentTriang( 4, pol );
        return GUARANA.Triang_UpperTriangAndUnitriang( R );
    fi;
    if n=12 then 
        pol :=  x^3 - x^2 + 4; 
        R := GUARANA.Triang_PresentTriang( 3, pol );
        G := R.Tr;
        m := Length( Pcp(G) );
        ll := [R.noD+1..m];
        N := Subgroup( G, Pcp(G){ll} );     
        n1 := Pcp(N)[2]*Pcp(N)[4];
        n2 := Pcp(N)[5]*Pcp(N)[1]^-1;
        N2 := NormalClosure( G, Subgroup( G, [n1,n2]) );
        return rec( G := G, N := N2 );
    fi;
    if n=13 then
        pol := x^7-x^6+x^5-x^4-3*x^3+3*x^2-2*x+1;
        R := GUARANA.Triang_PresentTriang( 3, pol );
        return GUARANA.Triang_UpperTriangAndUnitriang( R );
    fi;
    if n=14 then
        pol :=  x^3 - x^2 + 4;
        R := GUARANA.Triang_PresentTriang( 4, pol );
        return GUARANA.Triang_UpperTriangAndUnitriang( R );
    fi;
    if n=15 then 
        pol :=  x^3 - x^2 + 4; 
        R := GUARANA.Triang_PresentTriang( 4, pol );
        G := R.Tr;
        m := Length( Pcp(G) );
        ll := [R.noD+1..m];
        N := Subgroup( G, Pcp(G){ll} );     
        n1 := Pcp(N)[2]*Pcp(N)[5]*Pcp(N)[13]^-1;
        n2 := Pcp(N)[3]*Pcp(N)[7]*Pcp(N)[11]^-1;
        N2 := NormalClosure( G, Subgroup( G, [n1,n2]) );
        return rec( G := G, N := N2 );
    fi;
    if n = 11 then
        pol := x^2 -3;
        R := GUARANA.Triang_PresentTriang( 5, pol );
        return GUARANA.Triang_UpperTriangAndUnitriang( R );
    fi;
    if n = 21 then 
        m := 2;
        F := FreeGroup( m );
        F_nc := GUARANA.NilpotentQuotient( F, 5 );
        hl := HirschLength( F_nc );
        auts := GUARANA.GetSomeAutomorphsimOfF_nc( F_nc, 2 );
        a := auts[1]*auts[2]*auts[3]^3;
        G := GUARANA.PcpGroupTGroupByAbelianGroup( F_nc, [a] );
        N := Subgroup( G, Pcp(G){[2..hl+1]} );
        T := rec( G := G, N := N );
        return T;
    fi;
    if n = 29 then 
        # the calculation of the presentation needs 3000 sec.
        # Dimension = 34
        F := FreeGroup( 2 );
        return GUARANA.NilpotentQuotient( F, 6 );
    fi;
    if n in [-10..-1] then 
        G := ExamplesOfSomePcpGroups(-n);
        N := FittingSubgroup( G );
        return rec( G := G, N := N );
    fi;
    if n = -11 then
       G := ExamplesOfSomePcpGroups(13);
       N := FittingSubgroup( G );
       return rec( G := G, N := N );
    fi; 
end;

#############################################################################
##
#E 

Messung
CHZG
99939294

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover


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.