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

Quelle  polycy.gi   Sprache: unbekannt

 
#############################################################################
##
#W polycy.gi              GUARANA package                     Bjoern Assmann
##
## Examples of infinite polycyclic groups that can be used
## to test the Mal'cev collection.
##
#H  @(#)$Id$
##
#Y 2006
##
##

GUARANA.Tr_n_O := function( n, pol )
    local R, H, pcpH, noD, noU, ind_f, counter, ind_diag, ind_c, ind_n, 
          ind, new_pcs, G, indeces, N, NN, C, CC, i;

    R := GUARANA.Triang_PresentTriang( n, pol );
    H := R.Tr;
    pcpH := Pcp( H );
    # number of generators on diagoal
    noD := R.noD;
    # number of generators of unit group
    noU := noD/n;

    # get indeces of elms of finite order 
    ind_f := [];
    counter := 1;
    for i in [1..n] do 
 Add( ind_f, counter );
 counter := counter + noU;
    od;

    # get indeces of elms on diagonal of infinite order 
    ind_diag := [1..noD];
    ind_c := Difference( ind_diag, ind_f );

    # get indeces of elms of upper triangular part
    ind_n := [noD+1..Length(pcpH)];

    ind := Concatenation( ind_f, ind_c, ind_n );
    new_pcs := pcpH{ind};

    # change collector
    G := GUARANA.PcpGroupByPcs( H, new_pcs ); 

    indeces := [ [1..n], [n+1..noD], [noD+1..Length(pcpH)]];
    N := Subgroup( G, Pcp(G){indeces[3]} );
    NN := GUARANA.PcpGroupByPcs( G, Pcp(G){indeces[3]} );
    C := Subgroup( G, Pcp(G){indeces[2]} );
    CC := GUARANA.PcpGroupByPcs( G, Pcp(G){indeces[2]} );
    return [G,indeces,N,NN,C,CC];
end;

GUARANA.Tr_n_O1 := function( n )
    local x, pol;
    x := Indeterminate( Rationals );
    pol := x^2 - 3;
    return GUARANA.Tr_n_O( n, pol );
end;

GUARANA.MalcevColl_Tr_n_O1 := function( n )
    local l;
    l := GUARANA.Tr_n_O1( n );
    return MalcevCollectorConstruction( l );
end;

GUARANA.Tr_n_O2 := function( n )
    local x, pol;
    x := Indeterminate( Rationals );
    pol := x^3 - x^2 + 4;
    return GUARANA.Tr_n_O( n, pol );
end;

GUARANA.MalcevColl_Tr_n_O2 := function( n )
    local l;
    l := GUARANA.Tr_n_O2( n );
    return MalcevCollectorConstruction( l );
end;

GUARANA.Tr_n_O3 := function( n )
    local x, pol;
    x := Indeterminate( Rationals );
    pol := x^4+5*x^3-x^2+x+3;
    return GUARANA.Tr_n_O( n, pol );
end;

## functions for free-nilpotent-by automorphism examples.
##
GUARANA.F_nc_Aut1 := function( n, c )
    local F, F_nc, hl, auts, a, G, indeces, N, NN, C, CC;

    F := FreeGroup( n );
    F_nc := GUARANA.NilpotentQuotient( F, c );
    hl := HirschLength( F_nc );
    auts := GUARANA.GetSomeAutomorphsimOfF_nc( F_nc, n );
    a := auts[1]*auts[2]*auts[3]^3;
    G := GUARANA.PcpGroupTGroupByAbelianGroup( F_nc, [a] );
    indeces := [ [], [1], [2..hl+1] ];
    N := Subgroup( G, Pcp(G){indeces[3]} );
    NN := GUARANA.PcpGroupByPcs( G, Pcp(G){indeces[3]} );
    C := Subgroup( G, Pcp(G){indeces[2]} );
    CC := GUARANA.PcpGroupByPcs( G, Pcp(G){indeces[2]} );
    return [G,indeces,N,NN,C,CC];
end;

GUARANA.F_2c_Aut1 := function( c )
    return GUARANA.F_nc_Aut1( 2, c );
end;

GUARANA.MalcevColl_F_nc_Aut1 := function( n, c )
    local l;
    l := GUARANA.F_nc_Aut1( n, c );
    return MalcevCollectorConstruction( l );
end;

GUARANA.F_nc_Aut2 := function( n, c )
    local F, F_nc, hl, auts, a, G, indeces, N, NN, C, CC;

    F := FreeGroup( n );
    F_nc := GUARANA.NilpotentQuotient( F, c );
    hl := HirschLength( F_nc );
    auts := GUARANA.GetSomeAutomorphsimOfF_nc( F_nc, n );
    a := auts[1]*auts[3]^3;
    G := GUARANA.PcpGroupTGroupByAbelianGroup( F_nc, [a] );
    indeces := [ [], [1], [2..hl+1] ];
    N := Subgroup( G, Pcp(G){indeces[3]} );
    NN := GUARANA.PcpGroupByPcs( G, Pcp(G){indeces[3]} );
    C := Subgroup( G, Pcp(G){indeces[2]} );
    CC := GUARANA.PcpGroupByPcs( G, Pcp(G){indeces[2]} );
    return [G,indeces,N,NN,C,CC];
end;

GUARANA.F_3c_Aut2 := function( c )
    return GUARANA.F_nc_Aut2( 3, c );
end;

GUARANA.MalcevColl_F_nc_Aut2 := function( n, c )
    local l;
    l := GUARANA.F_nc_Aut2( n, c );
    return MalcevCollectorConstruction( l );
end;

## 
## OUT
## Examples that can be used to test Malcev collection. 
##
GUARANA.SomePolyMalcevExams := function( n )
    local T, H, ll, pcs, G, indeces, N, NN, C, CC, h1, h2, h3, h4, 
          f1, f2, f3, g1, g2, g3, g4, i, pcpH;

    # first 8 examples as in St Andrews paper 
    if n = 1 then 
 return GUARANA.Tr_n_O1( 3 );
    elif n = 2 then 
 return GUARANA.Tr_n_O1( 4 );
    elif n = 3 then 
 return GUARANA.Tr_n_O1( 5 );
    elif n = 4 then 
 return GUARANA.Tr_n_O2( 3 );
    elif n = 5 then 
 return GUARANA.Tr_n_O2( 4 );
    elif n = 6 then 
        return GUARANA.F_nc_Aut1( 2, 4 ); 
    elif n = 7 then 
        return GUARANA.F_nc_Aut1( 2, 5 );
    elif n = 8 then 
        return GUARANA.F_nc_Aut2( 3, 4 );
    fi;
    if n = 9 then 
 # in this example C and N have non trivial intersection
 T := GUARANA.NilpotentByFreeAbelianExams(2);
 H := T.G;
 pcpH := Pcp( H );
 h1 := pcpH[4]*pcpH[19];
 h2 := pcpH[6]*pcpH[19];
 h3 := pcpH[19];
 h4 := pcpH[20];
 f1 := pcpH[1]*pcpH[9];
 f2 := pcpH[3]*pcpH[12];
 f3 := pcpH[5]*pcpH[14];
        pcs := [f1,f2,f3,h1,h2];
 for i in [1..Length( Pcp(T.N)) ] do 
     Add( pcs, Pcp(T.N)[i] );
 od;
 G := GUARANA.PcpGroupByPcs( H, pcs );
 indeces := [[1..3],[4,5],[6..17]];
 N := Subgroup( G, Pcp(G){indeces[3]} );
 NN := GUARANA.PcpGroupByPcs( G, Pcp(G){indeces[3]} );
 g1 := Pcp(G)[4];
 g2 := Pcp(G)[5];
 g3 := Pcp(G)[16];
 g4 := Pcp(G)[17];
 C := Subgroup( G, [g1,g2,g3,g4] );
 CC := GUARANA.PcpGroupByPcs( G, [g1,g2,g3,g4] );
 return [G,indeces,N,NN,C,CC];
    fi;
end;

ExamplesOfSomeMalcevCollectors := function( n )
    local l;
    l := GUARANA.SomePolyMalcevExams( n );
    return MalcevCollectorConstruction( l );
end;

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

[ Dauer der Verarbeitung: 0.26 Sekunden  (vorverarbeitet)  ]