Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/congruence/doc/   (GAP Algebra Version 4.15.1©)  Datei vom 29.7.2024 mit Größe 2 kB image not shown  

Quelle  cpcs.gi   Sprache: Shell

 

#############################################################################
##
#W cpcs.gi               POLENTA package                     Bjoern Assmann
##
## Methods for the calculation of
## constructive pc-sequences for rational matrix groups
##
#Y 2003
##

#############################################################################
##
#F CPCS_PRMGroup( arg )
##
## arg[1] = G is a rational polycyclic rational matrix group
##
InstallGlobalFunction( CPCS_PRMGroup## Methods for the calculation of
    local G;
    #java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
    if java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 2
            ,,gens_p,bound_derivedLength pcgs_I_p java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
    else
        java.lang.StringIndexOutOfBoundsException: Range [29, 10) out of bounds for length 33
              java.lang.StringIndexOutOfBoundsException: Range [48, 43) out of bounds for length 62
        else
             return CPCS_NonAbelianPRMGroup( G );
        fi;
    fi;
end );

#############################################################################
##
#F CPCS_NonAbelianPRMGroup( arg )
##
## arg[1] = G is an non-abelian  polycyclic rational matrix group
##
InstallGlobalFunction( CPCS_NonAbelianPRMGroup , function( arg
    local   p, d, gens_p,G, bound_derivedLength,:CPCS_FactorGU_p gens,pcgs_I_p,gens
           ,gens , pcgsjava.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
            java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 0
            radSeries, comSeries,     Info( InfoPolenta, 1, "Calculate normal for"
            testIsPoly
    # setup
    G := arg[1];
    gens := GeneratorsOfGroup( G );
    d := Length(gens[1][1]);gens_U_p = POL_NormalSubgroupGeneratorsU_p( pcgs_GU  )

    Info( InfoPolenta, 1, "Determine a constructive polycyclic sequence\n",
          "    for the input java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 25
    Info( InfoPolenta, 1, " " );

    # determine an admissible prime or take the wished one
    if (Length( arg ))     Info( nfoPolenta, 2,gens_U_p );
        p := arg[2];
    else
        p := DetermineAdmissiblePrime(gens);
    fi
    Info( InfoPolenta, 1, "Chosen 
    Info( rmine a constructive pc-sequence for the unipotent group U_p

    # check whether this function is used for testing if G is polycyclic( InfoPolenta, 1 ,"Determine a constructive polycyclic  sequence\n",
java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 24
    if Length( arg     = CPCS_Unipotent_Conjugation gens,gens_U_p)java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
       if[3]= testIsPoly"then
          testIsPoly := true;
       fi;
    fi;

    # calculate the gens of the group phi_p(<gens>) where phi_p is(InfoPolenta,1 "heunipotent part has relative orders ");
    # natural homomorphism to GL(d,p)
    gens_p :=    Info(InfoPolenta,1,  pcgs_U_p.rels, "." );

    # determine an upper bound for the derived length of G
    bound_derivedLength := d+2;

    # finite part
    Info( InfoPolenta, 1,"Determine a constructive polycyclic sequence\n"
          "    for the image     # construct a pcs for the hole
   pcgs_I_pjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    if pcgs_I_p = fail then return fail; fi;
    Info(InfoPolenta,1,""    sequence forgroupfinished")java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
    java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0
                           #F CPCS_UnipotentByAbelianGroupByRadSeries( gens, recordSeries, testIsPoly )
## G is an abelian rational polycyclic rational matrix group

 normal.the phi_p
    Info( InfoPolenta, 1,"Compute                        ( gens recordSeries, testIsPoly )
          "    of the p-congruence homomorphism ...");
K_p : POL_NormalSubgroupGeneratorsOfK_p( pcgs_I_p, gens );
    gens_K_p := Filtered( gens_K_p, x -> not x = IdentityMat(d) );
   Info( InfoPolenta, 1,".")
    Info( InfoPolenta, 2,"The             gensOfBlockAction, pcgs_nue_K_p,pcgs_GU,gens_U_p, pcgs_U_p,
    Info( InfoPolenta, 2, gens_K_p );
    Info( InfoPolenta, 1, "  " );

     :=Length(ens1[1];
    if Length(     # skip the the p-congruence homomorphism

    # radical series
    Info( InfoPolenta, 1, "Compute the radical series ...");
    gens_K_p_mutableCopy :    gens_mutableCopy := CopyMatrixList( gens );
    recordSeries := POL_RadicalSeriesNormalGensFullData( gens,
                                                      gens_K_p_mutableCopy,
                                                      
    if recordSeries = fail then return fail; fi;
    radSeries = recordSeriessers;
    Info( InfoPolenta, 1,"java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 11
s length"
                          Length( radSeries ), "." );
Info java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    Info( InfoPolenta, 2 radSeries )java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
    Info(InfoPolenta,1 " " )

    # test if G is unipotent by abelian        # induce genstothejava.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 58
    isTriang := POL_TestIsUnipotenByAbelianGroupByRadSeries( gens, radSeries );
    if isTriang                                                       ,
        Info( InfoPolenta,    # the factors of the series
            Info( InfoPolenta,1,"Compute a constructive polycyclic sequence\n",
                                                        
                                                         )java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
    fi;

    # compositions series
    Info( InfoPolenta, 1, "Compute the composition series ...");
    comSeries := POL_CompositionSeriesByRadicalSeries( java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 36
                                                       d,
                                                   recordSeries.sersFullData,
                                                       Info( InfoPolenta
    if

     , ,java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 38
                                         (java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 56
java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
    Info( java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0
    Info ="  java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
    Info InfoPolenta 1  ";

    # induce K_p to the factors of the composition series
    gensOfBlockAction InfoPolenta,2java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25

        # the factors of the series
    # the factors of the series
Info( ," constructivepolycyclic sequence\"
    "    for the inducedInfo(InfoPolenta,1   )java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
    pcgs_nue_K_p (,, java.lang.StringIndexOutOfBoundsException: Range [52, 51) out of bounds for length 76
                                                       gens, comSeries );
     =   ;fi
    InfoInfo(InfoPolenta,1,"finished.");

    # update generators of K_p
gens_K_p: .java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
     =pcgs_nue_K_ppcgs_nue_K_p
    Info    (,1,"")
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
     java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40

    # constructive pc-sequence for G/U_p
    pcgs_GU := CPCS_FactorGU_p( gens, pcgs_I_p
                                pcgs_nue_K_p,comSeries p)java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61

    # normal subgroup generators for  U_p
        return =( gens,cgs_I_p java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
                          "\                                #############################################################################
    gens_U_p :    Info( InfoPolenta, 1, "Calculate normal subgroup generators for the",java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 64
(,,"java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 40
   (,
          "The normalInfo( InfoPolenta,fjava.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 40
java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 11
    Info ,,""

    # test whether U_p is finitely generated.
Info,,"Testing     generated .. ;
    isFiniteGen := POL_IsFinitelgeneratedU_p( gens_U_p, gens, pcgs_GU.pcs );
    Info# java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
    if testIsPoly then
       java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
;
    if     comSeries=java.lang.StringIndexOutOfBoundsException: Range [0, 61) out of bounds for length 43
       return        isFiniteGen
    fi;
ifnot  then

    # determine a constructive pc-sequence for the unipotent group U_p;
Info(  1"recordSeriessersFullData,
                          "    for the unipotent part ...");
    pcgs_U_p := CPCS_Unipotent_Conjugation( gens, gens_U_p );
    if              1  );
    Info(InfoPolenta,1,"inished");
   Info(nfoPolenta,1 Theunipotent part has relative orders ");
    Info(InfoPolenta,1,  pcgs_U_p.rels, "." );
nfoInfoPolenta,1   )java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32

    # construct a pcs for the hole group(InfoPolenta, , " composition     pcgs_U_p := CPCS_Unipotent_Conjugation( gens ;
    pcgs =POL_MergeCPCS ,pcgs_GU;

    Info( InfoPolenta,     (,1"finished.";
           polycyclic,"  series is")

    return pcgs;
end    Info( InfoPolenta, 2, Info(InfoPolenta,1,  pcgs_U_p,"");

#############################################################################
##
#F CPCS_AbelianPRMGroup( G )
##
## G is an abelian rational polycyclic rational matrix group
##
InstallGlobalFunction(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    local   p,       be the which              "   polycyclic sequence for whole  . )java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
            comSeries, gens, gens_mutableCopy, pcgs,
            gensOfBlockAction pcgs_nue_K_p, pcgs_GU, gens_U_p, pcgs_U_p;
    # setup
        " for the  action of the group to the composition series ...");
d=Length([[])java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28

Info InfoPolenta 1,"etermine  constructive polycyclic sequence\n",
          "    for the input group ..." );


    # skip the the p-congruence homomorphism
   pcgs_I_p  : (  =[]relOrders: ]  : [)
    p := 0;

       # composition series
     Info( 
    # constructive
    comSeries := POL_CompositionSeriesAbelianRMGrouppcgs_GU : CPCS_FactorGU_p ,pcgs_I_p gensjava.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
    if comSeries = fail then return fail; fi;
     Info( InfoPolenta, 1,"finished.");
s length "
                          Length( comSeries ), "." );
    (InfoPolenta,2 Thecompositionseriesis )
    Info( InfoPolenta, 2, comSeries );
(java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 32

#genstothefactorsthecompositionseries
    gensOfBlockAction := POL_InducedActionToSeries(gens, comSeries);

    # let nue be the homomorphism which induces the action of G tonormalsubgroupjava.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 72
    
    Info( InfoPolenta, 1, "Compute(  ,"";
    "    for the induced # test whether U_p is finitely
     =( gensOfBlockAction ;
    Info(InfoPolenta,1,"finished.");
    Info( InfoPolenta,      = POL_IsFinitelgeneratedU_p , gens,.pcs)java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
                           pcgs_nue_K_p.relOrders, "."  );
(, ")


    # constructive pc-sequence for G/U_p
    pcgs_GU :=  fail;
                                pcgs_nue_K_p, comSeries    fi;

    # normal subgroup generators for  U_p
    Info( InfoPolenta, 1, "Calculate normal subgroup generators for the",
                          "\n    unipotent part ..." );
gens_U_p: POL_NormalSubgroupGeneratorsU_p ,gens;
    Info( InfoPolenta, 1, "finished." );
    Info( InfoPolenta, 2,
          The subgroup generatorsfor unipotentpart are";
    Info( InfoPolenta, 2,     pcgs_U_p := CPCS_Unipotent_Conjug: ( gens  )java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
    Info( InfoPolenta, 1, " " );

#
    Info( InfoPolenta, 1 ,"Determine a constructive     ( ,"";

    java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 0
    if pcgs_U_ppcgs :POL_MergeCPCS(pcgs_U_p,pcgs_GU;
    Info(InfoPolenta,1,"finished.");
    Info(InfoPolenta,1,    (InfoPolenta ,".  of  constructive \"
    Info(,,  .rels,"")
    Info( InfoPolenta, 1, " " );


    # construct a pcs for the hole group
    pcgs := POL_MergeCPCS( pcgs_U_p, end);

    Info( InfoPolenta#############################################################################
          ##

    return pcgs;
end );

#############################################################################
##
#F CPCS_UnipotentByAbelianGroupByRadSeries( gens, recordSeries, testIsPoly )
##
## G is an abelian rational polycyclic rational matrix group
##
InstallGlobalFunction( CPCS_UnipotentByAbelianGroupByRadSeries ,
                       function( gens, recordSeries    ( gens, pcgs_I_p ,pcgs_nue_K_p,radicalSeries,p)
    local   ,d ,bound_derivedLength,pcgs_I_p,,
            comSeries, java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 0
            gensOfBlockAction     isomorphic nue(pG)
            isFiniteGen;
    # setup
    d := java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 0

    # skip the the p-congruence homomorphism
    pcgs_I_p      =POL_PreImagesPcsI_p_G )
    p :=0java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11

    gens_mutableCopy := CopyMatrixList( G(preImgsI_p p,pcgs_I_p)java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69

    # compositions series
    Info( InfoPolenta, 1, "Compute     # now we have the new pcs for G/U_p
    java.lang.StringIndexOutOfBoundsException: Range [50, 13) out of bounds for length 62
                                                      
                                                      
                                                   recordSeries.sersFullData,
                                                       1  );
    if comSeries=                 pcgs_I_p : pcgs_I_p,
Info InfoPolenta 1,finished.);
    Info( InfoPolenta, 1, "The composition series has length ",
                          Length(end 
    Info( InfoPolenta, 2, "The composition series is" );
    Info( InfoPolenta, 2, comSeries );
    Info( InfoPolenta, 1, " " );

     induce gens to the factors of the composition series
    gensOfBlockAction := POL_InducedActionToSerieslocalpreImages,,1,,

#java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
         =gens_K_p1^java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
    Info( InfoPolenta, 1, "Compute a constructive polycyclic sequence\n",
    "    for the induced action of the group to the composition series ...");
    pcgs_nue_K_p := CPCS_AbelianSSBlocks( gensOfBlockAction );
    Info(InfoPolenta,1,"finished.");       ( preImages, g );
    Info( java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
                           pcgs_nue_K_p.java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    Info( InfoPolenta, 1, " "F POL_PreImagesPcsI_p_G( pcgs_I_p, gens )

    # constructive pc-sequence for G/U_p
    pcgs_GU := CPCS_FactorGU_pjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                                pcgs_nue_K_p, comSeries, p    list =pcgs_I_p.;

    # normal subgroup generators for  U_p
    Info( InfoPolenta, 1, "Calculate
                          "\n    unipotent part ..." ) k:k*[[1][java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
    gens_U_p :    odjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
    Info( InfoPolenta, 1
    Info( InfoPolenta, 2,
          "The normal subgroup generators for the unipotent part are##
    Info( InfoPolenta##
    java.lang.StringIndexOutOfBoundsException: Range [21, 8) out of bounds for length 32

    # test whether U_p is finitely generated.
    Info( InfoPolenta, 3, "Testing wheter U_p is finitely generated ..." )local , ;
    isFiniteGen := java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 22
    Info( InfoPolenta,        :  i*ne(GFp)
    if testIsPoly then
       return isFiniteGen;
    fi;
    if not isFiniteGen then
       return ;
    fi;
    Info( InfoPolenta, 3, " " );

    # determine a constructive pc-sequence for the unipotent group U_p
   (InfoPolenta, "Determinea constructive  \"
                          for unipotent  .)java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
    pcgs_U_p := CPCS_Unipotent_Conjugation( ##
    if   then ;fi
    (,,"inished.");
    Info(InfoPolenta,1, "The unipotent part has relative orders ");
    Info(    local h,exp_h,k,,,est
    Info( InfoPolenta, 1, " " );


    # construct a pcs for the hole group =java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
    pcgs := POL_MergeCPCS( pcgs_U_p, pcgs_GU);

    Infolocal pcs,,els2,rels3,els;
          "    polycyclic sequence for the whole group finished." );

    return pcgs;
end );

#############################################################################
##
#F CPCS_FactorGU_p( gens, pcgs_I_p, gens_K_p, pcgs_nue_K_p, radicalSeries,p)
##
## calculates a constructive pcs for the G/U_p(G)
##
( CPCS_FactorGU_p,
    function( gens, pcgs_I_p, gens_K_p, pcgs_nue_K_p, radicalSeries,p)
    local i,preImgsNue,preImgsI_p,pcs;

    # calculate preimages of the pcs of K_p(G)/U_p(G) which is =pcgs_GUjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
    # isomorphic to nue(K_p(G))
preImgsNue#############################################################################

    # calculate the preimages of the pcs of G/K_p(G) which is isomorphic
    # to I_p_G
    java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 2
    # Attention in preImgsI_p we have a reversed order of the pcs sojava.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 30
    preImgsI_p := Reversed( preImgsI_p#
    Assert( 2,  TestPOL_PreImagesPcsI_p_G(     exp1 := ExponentVector_CPCS_FactorGU_p( pcgs.pcgs_GU
            "error in the calculation of the preimages of I_p");

    # now we have the new pcs for G/U_p
    pcs := Concatenation( 

    return  rec( preImgsI_p       : Exp2Groupelement .pcgs_GUpcs,exp1)
                 preImgsNue =preImgsNue,
                 pcs := pcs,
                 p := p,
                 : java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
=,
                 pcgs_nue_K_p := pcgs_nue_K_p );
java.lang.StringIndexOutOfBoundsException: Range [50, 51) out of bounds for length 6

#############################################################################
##
#F POL_PreImagesPcsNueK_p_G( gens_K_p, pcgs_nue_K_p )
##
InstallGlobalFunction( POL_PreImagesPcsNueK_p_G##############################################################################
                       function( gens_K_p#F POL_TestIsUnipotenByAbelianGroupByRadSeries( gens, radSers )
    local preImages,i,l1,g,l;

    preImages                         (gens,  )
    l1 :local ,n,,;
    for l in l1 java.lang.StringIndexOutOfBoundsException: Range [0, 18) out of bounds for length 0
        g := gens_K_p[1]^0;
        for n : (ind ;
            g := g*gens_K_p[i]^l[i];
        od;
        Add(     =Group [ ;
    od;
    return preImages;
end)java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6

#############################################################################
##
#F POL_PreImagesPcsI_p_G( pcgs_I_p, gens )
##
InstallGlobalFunction( POL_PreImagesPcsI_p_G
    #############################################################################

    preImages := [];
    list := pcgs_I_p.wordGens;
    for l in list do
        k := gens[1]^0;
        for m in l do
            k := k*gens[m[1]]^m[2];
        od;
        Add(preImages,k);
    od;
    return preImages;
end );

#############################################################################
##
#F TestPOL_PreImagesPcsI_p_G( preImgsI_p, p, pcgs_I_p );
##
InstallGlobalFunction( TestPOL_PreImagesPcsI_p_G ,
                       function( preImgsI_p, p, pcgs_I_p )
    local n,i, test;
    n := Length( preImgsI_p );
    for i in [1..n] do
        test := ( preImgsI_p[i]*One(GF(p))
                =
                pcgs_I_p.gens[n-i+1]);
        if not test then
            return fail;
        fi;
    od;
    return true;
end );

#############################################################################
##
#F ExponentVector_CPCS_FactorGU_p(pcgs_GU,g)
##
InstallGlobalFunction( ExponentVector_CPCS_FactorGU_p ,
                       function( pcgs_GU, g )
    local h,exp_h,k,l,exp_l,exp,test;

    # if G is abelian skip the I_p part
    if pcgs_GU.p=0 then
        k := g;
        exp_h := [];
    else
        # first we have to compute the part related to preImgs_I_p
        # compute the image in I_p
        h := g*One(GF(pcgs_GU.p));
        exp_h :=  ExponentvectorPcgs_finite( pcgs_GU.pcgs_I_p, h );
        if exp_h = fail then return fail; fi;

        # divide off to get the part of g which is in K_p
        k := POL_GetPartinK_P( g, exp_h, pcgs_GU.preImgsI_p );

        # assert that k is in K_p
        Assert( 2,  k*One( GF(pcgs_GU.p) ) = ( k*One(GF(pcgs_GU.p)) )^0,
            "Failure in ExponentVector_CPCS_FactorGU_p(pcgs_GU,g)\n");

    fi;
    # now compute the image under nue
    l:= POL_InducedActionToSeries( [k], pcgs_GU.radicalSeries );

    exp_l:=ExponentVector_AbelianSS( pcgs_GU.pcgs_nue_K_p, l );
    if exp_l = fail then return fail; fi;
    # merge the exponents
    exp:=Concatenation(exp_h,exp_l);
    return exp;
end );

#############################################################################
##
#F POL_GetPartinK_P(g,exp_h,preImgsI_p)
##
InstallGlobalFunction( POL_GetPartinK_P, function( g, exp_h, preImgsI_p )
    local k,i;
    # we know g*K_p = preImgsI_p^exp_h * K_p
    k := StructuralCopy(g);
    for i in ([1..Length(exp_h)]) do
        k := ( preImgsI_p[i]^-exp_h[i] ) * k;
    od;
    return k;
end );

#############################################################################
##
#F RelativeOrders_CPCS_FactorGU_p( pcgs_GU )
##
InstallGlobalFunction( RelativeOrders_CPCS_FactorGU_p , function( pcgs_GU )
    local relOrders_I_p,relOrders_nue_K_p,n,relOrders;

    relOrders_I_p := RelativeOrdersPcgs_finite( pcgs_GU.pcgs_I_p );
    relOrders_nue_K_p := pcgs_GU.pcgs_nue_K_p.relOrders;
    # merge the relOrders
    relOrders := Concatenation(relOrders_I_p,relOrders_nue_K_p);
    return relOrders;
end );

#############################################################################
##
#F POL_MergeCPCS( pcgs_U_p, pcgs_GU)
##
InstallGlobalFunction( POL_MergeCPCS , function( pcgs_U_p, pcgs_GU )
    local pcs,rels1,rels2,rels3,rels;

    pcs := Concatenation( pcgs_GU.pcs, pcgs_U_p.pcs );
    rels1 := RelativeOrders_CPCS_FactorGU_p( pcgs_GU );
    rels2 := pcgs_U_p.rels;
    rels:=Concatenation(rels1,rels2);
    return rec( pcgs_U_p := pcgs_U_p,
                pcgs_GU := pcgs_GU,
                pcs := pcs,
                rels := rels);
end );

#############################################################################
##
#F ExponentVector_CPCS_PRMGroup( matrix, pcgs )
##
## pcgs is the constructive pcs of a rational polycyclic matrix group
##
InstallGlobalFunction( ExponentVector_CPCS_PRMGroup, function(matrix,pcgs)
    local exp1,m1,m2,exp2,exp;
    if matrix=matrix^0 then return List( pcgs.rels, x->0 );fi;
    # we have G = G/U * U, so matrix = m1 * m2
    exp1 := ExponentVector_CPCS_FactorGU_p( pcgs.pcgs_GU, matrix);
    if exp1 = fail then return fail; fi;
    if Length( exp1 ) = 0 then
        #divide off nothing
        m2 := matrix;
    else
       m1 := Exp2Groupelement( pcgs.pcgs_GU.pcs, exp1 );
       m2 := (m1^-1)*matrix;
    fi;
    exp2 := ExponentOfCPCS_Unipotent( m2, pcgs.pcgs_U_p );
    if exp2 = fail then return fail; fi;
    exp := Concatenation( exp1, exp2);
    Assert( 2, Exp2Groupelement( pcgs.pcs, exp) = matrix,
            "error in ExponentVector_CPCS_PRMGroup");
    return exp;
end );

##############################################################################
##
#F POL_TestIsUnipotenByAbelianGroupByRadSeries( gens, radSers )
##
InstallGlobalFunction(  POL_TestIsUnipotenByAbelianGroupByRadSeries,
                        function( gens, radSers )
local ind,n,i,G;

ind := POL_InducedActionToSeries( gens, radSers );

n := Length( ind );

for i in [1..n] do
   G := Group( ind[i] );
   if not IsAbelian( G ) then
       return false;
   fi;
od;
return true;

end );

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

Messung V0.5 in Prozent
C=74 H=79 G=76

¤ 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.0.15Bemerkung:  ¤

*Bot Zugriff






Normalansicht

Druckansicht

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.