Eine aufbereitete Darstellung der Quelle

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

Benutzer

Quelle  exam.gi   Sprache: unbekannt

 
Spracherkennung für: .gi vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

#############################################################################
##
#W exam.gi                 POLENTA package                     Bjoern Assmann
##
## examples for polycyclic rational matrix groups
##
#Y 2003
##


#############################################################################
##
#F POL_KroneckerProduct
## 
## Examples built with the Kroneckerproduct.
## 
POL_KroneckerProduct := function( G, e ) 
    local newGens, gens;
    gens := GeneratorsOfGroup( G );
    if e = 0 then 
        e := RandomList( [1,-1] );
    fi;
    newGens := List( gens, x->KroneckerProduct(x,x^e) );
    return Group( newGens );
end;


#############################################################################
##
#F POL_AlmostCrystallographicGroup
## 
## Examples coming from aclib
## 
if not IsPackageMarkedForLoading( "aclib" , "1.0" ) then
    POL_AlmostCrystallographicGroup := false;
else
    POL_AlmostCrystallographicGroup := function( a,b,c )
       local G, mats;
       G := AlmostCrystallographicGroup(a,b,c);
       mats := GeneratorsOfGroup( G );
       G := Group( mats );
       return G;
    end;
fi;

#############################################################################
##
#F PolExamples( n ) .............. .. Examples for polycyc rat. matrix groups
##
# FIXME: This function is documented and should be turned into a GlobalFunction
PolExamples := function( n )
    local i,M,P, nat, G, gens, d, l,r,s;

    # check if aclib is needed
    l := Concatenation( [9..19],[21..24]);
    if POL_AlmostCrystallographicGroup = false then 
        if n in l then
            Print( "package 'aclib' is needed for this example.\n" );
            return fail;
        fi;
    fi;

    # some unipotent groups
    if n=1 then
        return Group(
               [ [ [ 1, -412 ], 
                   [ 0151 ], 
                   [ 0013 ], 
                   [ 0001 ] ]
                 ,
                 [ [ 1, -1, -24 ], 
                   [ 01, -11 ], 
                   [ 0011 ], 
                   [ 0001 ] ]
                 ,
                 [ [ 1, -4, -21 ], 
                   [ 01, -2, -3 ], 
                   [ 0012 ], 
                   [ 0001 ] ] 
                ]);
    fi;
    if n=2 then
        return Group(
               [ [ [ 15, -31, -3 ], 
                   [ 01201 ], 
                   [ 0012, -2 ],
                   [ 0001, -2 ], 
                   [ 00001 ] ]
                 ,
                 [ [ 13, -3, -11 ], 
                   [ 010, -22 ], 
                   [ 00141 ],
                   [ 0001, -1 ], 
                   [ 00001 ] ] 
               ]);
    fi;
    if n=3 then
        return Group( 
               [ [ [ 73/10, -35/242/563/2 ], 
                   [ 27/20, -11/49/527/4 ],
                   [ -3/51, -4/5, -9 ], 
                   [ -11/207/4, -2/51/4 ] ]
                 ,
                 [ [ -42/5423/1027/5479/10 ], 
                   [ -23/10227/2013/10231/20 ],
                   [ 14/5, -63/5, -4/5, -79/5 ],
                   [ -1/109/201/1037/20 ] ] 
               ]);
    fi;
    if n=4 then
        return Group(
               [ [ [ 52, -817, -1 ], 
                   [ -69/4, -15/4449/20, -163/553/20 ],
                   [ -249/563/53/5 ], 
                   [ 13/43/4, -121/2057/5, -17/20 ],
                   [ 241/47/4, -1477/20319/5, -189/20 ] ]
                  ,
                  [ [ 19/20, -3, -19/2, -1/2 ], 
                    [ -74/5129/207/4159/49/10 ],
                    [ 53/104/5, -49/2, -9/10 ], 
                    [ 37/10, -41/20, -7/4, -29/4, -3/5 ],
                    [ 137/5, -457/2037/4, -559/43/10 ] ] 
                ]);
    fi;
    if n in [5..8] then
        return MatExamples( n-4 );
    fi;
    if n=9 then
        return POL_AlmostCrystallographicGroup( 317, [1,0,-3,7] );
    fi;
    if n=10 then
        return POL_AlmostCrystallographicGroup( 316, [3,4,-1,0] );
    fi;
    if n=11 then
        return POL_AlmostCrystallographicGroup( 315, [-1,1,0,0] );
    fi;
    if n=12 then
        return POL_AlmostCrystallographicGroup( 314, [-2,-1,2,-1] );
    fi;
    if n=13 then
        return POL_AlmostCrystallographicGroup( 42, [0,-3,-2,1,-1,-2,4] );
    fi;
    if n=14 then
        return POL_AlmostCrystallographicGroup( 413, [-2,0,-2,-2,-1,-1] );
    fi;
    if n=15 then
        return POL_AlmostCrystallographicGroup( 437, [ 1,2,0,-3,-4] );
    fi;
    if n=16 then
        return POL_AlmostCrystallographicGroup( 486,[0,-2,-1,-2,-1] );
    fi;
    if n=17 then
        return POL_AlmostCrystallographicGroup( 410,[-2,-2,-1]  );
    fi;
    if n=18 then
         return POL_AlmostCrystallographicGroup( 411,[-4,-2,-1] );
    fi;   
    if n=19 then
         return POL_AlmostCrystallographicGroup( 412,[0,1,3,-1] );  
    fi;   
    if n=20 then
        return POL_KroneckerProduct( MatExamples(4), -1  );
    fi;
    if n in [21..24] then
        return POL_KroneckerProduct( PolExamples( n-12 ), 1 );
    fi;
    if n = 25 then 
        #Marco Costantini example
        r := [ [ 10000000 ], [ 00100000 ],
               [ 00010000 ], [ 00001000 ],
               [ 00000100 ], [ 00000010 ],
               [ 00000001 ], [ 01000000 ] ];
        s :=
             [ [ 10000001 ], [ 0, E(7)^6000000 ],
               [ 00, E(7), 00000 ], [ 00010000 ],
               [ 00001000 ], [ 00000100 ],
               [ 00000010 ], [ 00000001 ] ];
        return Group( [r,s^7] );
     fi;
     if n = 26 then 
        # subgroup of a group which is conjugate to a direct product
        # of PolExamples(1) and PolExamples(6);
         gens := 
        [ [ [ -403250032, -633, -16388002073406 ],
      [ 33720, -95, -11297 ], [ -65, -1653, -73129, -4359 ]
        , [ -37, -293680735136654, -267628 ],
      [ 2, -7880197364, -4, -707, -12 ],
      [ -2072016, -9, -263411, -71191 ],
      [ -13, -1276031956726, -1152, -6 ],
      [ 89720, -243, -434, -168777 ] ],
  [ [ -61540, -64, -12, -8501248, -241515 ],
      [ -937, -4, -9, -3119297 ],
      [ -39347, -7, -87, -2058029341 ],
      [ 4373676, -16, -918, -1054, -8703495, -290 ],
      [ 1067480, -187, -189, -212719, -72 ],
      [ -1491184, -32, -297, -727307995151 ],
      [ 18713760, -344, -359, -3741319, -126 ],
      [ -106, -8160204217212, -77970 ] ],
  [ [ -352, -632, -64150, -246722, -699251 ],
      [ 17, -107, -82763, -32, -87, -21 ],
      [ -59, -16, -73, -73120, -3751 ],
      [ -5884, -32, -20, -931246487 ],
      [ -22200, -55, -90419918 ],
      [ -188, -16, -320, -256385, -82160 ],
      [ -362600, -65, -1447222157 ],
      [ 3, -22805794, -6, -206, -20 ] ],
  [ [ 89378360, -1959, -2319, -17847446, -585 ],
      [ 01000000 ], [ 764561, -114, -102, -152444, -54 ],
      [ -210, -4128010331567420, -380587 ],
      [ -158, -17760444587316, -166896 ],
      [ 22813680, -342, -306, -4551332, -162 ],
      [ -142, -20880522746284, -194075 ],
      [ 19021000, -525, -690, -3801974, -116 ] ],
  [ [ -1656, -60015, -19253314, -9201473 ],
      [ 01000000 ], [ -46010, -5092, -2642 ],
      [ 16262360, -581847, -32521043, -1434 ],
      [ 468200, -5551, -936259, -414 ],
      [ -138000, -150277, -78126 ],
      [ 700760, -19805, -1400428, -618 ],
      [ -519000, -6211038, -267460 ] ],
  [ [ -427, -4608011521464856, -4359207 ],
      [ 01000000 ], [ -104, -36019036208, -37290 ],
      [ -52523000, -574, -156010501845660 ],
      [ -488760, -219, -4219677196 ],
      [ -312, -10800270108625, -1116270 ],
      [ -17111040, -276, -657342923234 ],
      [ 58, -9360234457, -116, -821, -110 ] ],
  [ [ -4792668, -64, -669, -18829762189434 ],
      [ -937, -4, -9, -3119297 ],
      [ -71, -13, -73, -91144, -4359 ],
      [ -85, -2936, -167351222174, -267628 ],
      [ 2, -7880197364, -4, -707, -12 ],
      [ -245104, -32, -27, -385499, -13205 ],
      [ -13, -1276031956726, -1152, -6 ],
      [ 89720, -243, -434, -168777 ] ],
  [ [ -539, -1283224, -6061072, -357487 ],
      [ 33720, -95, -11297 ],
      [ -333445, -87, -1876529341 ],
      [ 485367680, -918, -910, -9903495, -290 ],
      [ 1067480, -187, -189, -212719, -72 ],
      [ -111110016, -279, -605219937137 ],
      [ 18713760, -344, -359, -3741319, -126 ],
      [ -106, -8160204217212, -77970 ] ],
  [ [ -352, -632, -64150, -246722, -699251 ],
      [ 17, -107, -82763, -32, -87, -21 ],
      [ -59, -16, -73, -73120, -3751 ],
      [ -5884, -32, -20, -931246487 ],
      [ -22200, -55, -90419918 ],
      [ -188, -16, -320, -256385, -82160 ],
      [ -362600, -65, -1447222157 ],
      [ 3, -22805794, -6, -206, -20 ] ] ];
      return Group( gens );
     fi;


     if n = 27 then
        # subgroup of a group which is conjugate to a direct product
        # of PolExamples(3) and PolExamples(5);
         gens := 
         [ [ [ -396/549, -4/50147, -292, -2611/51799/106, -2/52, -373/2,
          8820016/5, -2, -2389/2, -59 ],
      [ 539/10, -97/278/52, -283/22833619/10, -2541/201544/52,
          623/4, -8492, -5, -132/5020, -623/491/2 ],
      [ -91, -1018, -17, -5117, -2, -42, -16511112, -1,
          -515, -5 ],
      [ -117/105/2, -49/5119/2, -18, -737/10503/201, -22/52,
          -81/4551066/5, -1, -185/4, -13/2 ],
      [ 32, -218, -2, -1016192, -64, -118, -449, -52, -23, -26,
          2, -10, -5117 ],
      [ -3026210, -25, -162541144, -55732, -2, -10, -2,
          648, -16 ],
      [ 169/10, -19/218/50, -57/2551159/10, -791/20, -49/5, -1,
          141/4, -16900, -32/521, -161/425/2 ],
      [ 547/10, -57/294/50, -171/21663657/10, -2493/20, -947/5,
          -2463/4, -50700, -151/552, -507/479/2 ],
      [ 653/5, -41117/5, -1, -1252483958/5, -1326/5, -256/5, -3,
          257, -746, -20, -173/522, -25985 ],
      [ -87/511, -28/5123, -35, -652/5219/51, -24/5, -1, -32111,
          -2, -272/521043, -14 ],
      [ 100000157, -1900016, -2, -10000, -155 ]
        , [ -20, -8001, -124, -3, -4, -1, -4, -4001111,
          3, -1 ],
      [ -151, -115, -11, -8428502, -26331, -11, -13,
          24, -8 ],
      [ -665, -5624, -48, -3961321507, -1071445, -500,
          20107, -36 ],
      [ 2139/5, -124236/5, -3, -38175113014/5, -4358/5, -20108/5,
          -13814, -2267, -111, -359/5106, -832273 ],
      [ -31, -813, -3, -248, -1, -41, -3110012006,
          -2 ],
      [ 1241/5, -81234/5, -1, -2484917556/5, -2532/5, -3112/5, -3,
          492, -1477, -31, -341/52, -2, -497163 ],
      [ 60, -800, -139, -13, -3, -4, -161, -101111, -9,
          3 ],
      [ -639/1097/2, -158/5, -2283/2, -281, -4249/102961/20, -8,
          -84/5, -3, -683/4843, -22247/50, -7683/4, -101/2 ],
      [ -243/1097/2, -191/5, -5271/2, -268, -2003/101487/20, -12,
          -108/5, -5, -433/4807, -55324/5, -3, -20445/4, -59/2 ] ],
  [ [ -1561/10, -2/5, -134/50, -26/572/5, -8522699/102, -67/52,
          -2431/10, -196/500211/5, -2, -22451/10, -489/5 ],
      [ 3529/20, -21/553/50, -63/5151/5981, -6261/20053/102,
          5589/20, -428/5, -30, -109/100, -2, -5589/201071/10 ],
      [ -220000, -2, -12943001, -32520, -10, -233,
          -11 ],
      [ 113/20, -7/51/50, -21/547/533, -217/2001/101233/20,
          -136/5007/100, -1, -213/2037/10 ],
      [ -100000, -1, -662200, -2, -15210, -30215,
          -5 ],
      [ 0000, -366, -20020, -180020, -200 ],
      [ 519/2019/548/5177/5, -164/5130, -791/20253/10, -1,
          719/20482/51, -1, -179/1016, -739/20171/10 ],
      [ 1517/2042/5104/53176/5, -372/5378, -2293/207119/10,
          -22177/201096/53, -3, -407/10217, -2217/20503/10 ],
      [ 1004/5, -64/572/50, -192/5374/51101, -1751/5236/5, -2,
          1639/5, -1132/50, -1, -118/516, -1644/5632/5 ],
      [ -31/51/5, -128/503/529/5, -189/5, -3, -64/51, -76/5,
          -77/5, -40202/50466/5, -48/5 ],
      [ 00000, -1000000200, -10000 ],
      [ 22808, -1812, -4, -14, -105200, -1311, -11
         ], [ 0000, -123, -10010, -60010, -100
         ],
      [ -3001, -17, -31006, -5, -160050, -55, -2 ],
      [ 3062/5, -157/5376/50, -436/5737/53384, -5388/52188/5,
          -104877/5, -2346/50, -3, -639/5723, -4972/51921/5 ],
      [ 0, -1, -80, -3700, -1, -411, -21001200, -10 ]
        , [ 2008/5, -133/5104/50, -409/5803/52202, -3502/5252/5,
          -23288/5, -2424/50, -1, -171/517, -3293/51264/5 ],
      [ 22808, -2118, -6, -14, -1, -35800, -1411, -1,
          1 ],
      [ -2629/2026/5, -8/5, -178/5, -176/5, -7084441/20, -4, -13/10,
          -3, -4269/20508/5, -1119/101, -24249/20, -841/10 ],
      [ -1923/20, -8/5, -36/5, -3, -54/583/5, -5013067/20, -9, -51/10,
          -5, -3003/20, -274/5, -33133/100, -103003/20, -637/10 ] ],
  [ [ -5910, -12066, -154, -312104200, -1204466, -2, -8,
          24100, -30 ],
      [ -1149, -3031, -65, -648216507, -1861951057,
          -10, -30179, -57 ],
      [ 27, -3, -61, -1433150, -502, -4146, -97, -3, -3113,
          15, -4313 ],
      [ -90, -103, -7, -4816301, -15201, -100313,
          -4 ],
      [ 2601504, -15162, -54, -38, -33439, -2, -1, -274,
          6, -3913 ],
      [ -704, -17012, -25, -3961325, -85, -115756329,
          -8, -18109, -35 ],
      [ 42, -4130, -2659232, -77, -14, -274, -172, -40, -10,
          13, -6721 ],
      [ 96, -7330, -45100537, -178, -212, -6162, -293, -9, -1,
          -34411, -15148 ],
      [ 310011, -3177, -59, -20, -3478, -3, -1, -237,
          -4615 ],
      [ -45314, -522, -57, -24682, -109, -5, -7416466, -28,
          -3, -3068, -20 ],
      [ 22, -220, -1125120, -40, -20, -139, -73, -20012,
          -3511 ],
      [ 42, -550, -2968228, -76, -20, -178, -197, -4021,
          3, -6821 ],
      [ -241, -802, -3, -138462, -42, -38102114, -3, -6,
          37, -12 ],
      [ -1105, -1013, -28, -6122046010, -182821049,
          -9, -26170, -55 ],
      [ 276, -25242, -1393181506, -502, -160, -19489, -926, -26,
          -311438, -438137 ],
      [ 3, -10, -1, -2318, -6, -20, -16, -1000, -110, -6,
          2 ],
      [ 431, -918, -20249, -83, -4, -4, -56256, -4, -1848,
          -6321 ],
      [ 42, -660, -3581222, -74, -20, -281, -235, -4021,
          4, -6921 ],
      [ 78, -8, -20, -4094423, -141, -4, -4, -3141, -272, -7, -1,
          12310, -12439 ],
      [ 84, -8, -210, -3174450, -150, -5, -12, -4153, -213, -7, -2,
          32415, -13443 ] ],
  [ [ -150, -3608, -14, -90302, -162, -28422248, -6, -6,
          24, -8 ],
      [ 3712522201, -6790, -354, -5, -5, -5, -6328,
          -5316 ],
      [ -4080, -25, -279442, -2, -120, -1, -9026, -2
         ],
      [ 10, -1, -110057, -19400160, -1, -2, -119, -16,
          5 ],
      [ -632, -2, -39, -26, -345115, -503, -10473754, -5,
          -2695, -30 ],
      [ 45, -2, -195, -1958222, -747, -12183, -162, -6, -434,
          123, -6720 ],
      [ 11, -111, -1, -112461, -20, -34022, -70, -10, -102,
          -1, -186 ],
      [ 25, -315, -3, -2965135, -44, -84152, -189, -21, -63,
          -6, -4214 ],
      [ -14, -1, -7, -2, -713, -7826, -7, -40, -20, -402314, -1,
          -1319, -6 ],
      [ 44, -3, -1704, -13261, -87, -5, -7, -76133, -3, -1123,
          11, -6922 ],
      [ 01706, -140004, -1, -1410, -1, -132410 ],
      [ 1017, -1, -2112, -4, -28, -12, -400, -232, -2, -2,
          1 ],
      [ 24, -1, -62, -824123, -413, -4043, -67, -3, -2111,
          11, -3611 ],
      [ 57, -3, -15, -2572294, -9814, -40103, -201, -7, -513,
          027, -8626 ],
      [ 31, -844, -7, -60121177, -59, -3616, -374, -359, -17,
          -4011, -32, -5819 ],
      [ 12, -1, -100, -169, -2310, -1193, -1, -1, -115,
          -196 ],
      [ -14, -2, -30, -2, -1434, -9030, -10, -161, -14, -992451,
          -2, -1618, -6 ],
      [ 20, -1180, -816114, -38, -38, -135, -47, -2, -1, -244,
          4, -3110 ],
      [ -12122, -29, -30, -5117, -612, -2, -258321, -373,
          -819, -5 ],
      [ -34316, -231, -86, -16555, -912, -3, -6924252, -42,
          3, -1353, -15 ] ],
  [ [ -71058, -820, -72, -348116432, -2, -134194100, -96,
          2, -8104, -32 ],
      [ -2927245, -1039, -3216, -2, -232980, -2, -504,
          712, -2 ],
      [ -43, -1151, -51, -23779582, -73, -94, -1, -2404,
          64, -22 ],
      [ -15, -1150, -1, -5, -7525380, -28102, -1, -2414,
          21, -7 ],
      [ 52, -8, -9, -4, -4297285, -95, -10, -8, -2101, -282, -44,
          26, -2, -15, -8828 ],
      [ -37613126, -61, -19866, -282, -7117542, -23, -1,
          -1162, -19 ],
      [ 51, -2, -283, -1853259, -86, -4, -16094, -147, -6047,
          05, -7724 ],
      [ 117, -6, -555, -44123600, -199, -10, -32, -1215, -344, -13,
          093111, -17956 ],
      [ 37, -4, -37, -3, -1848192, -64, -9, -20, -275, -135, -33,
          59, -2, -12, -6120 ],
      [ 77, -1, -41, -219429, -1435, -3, -1128, -45, -8, -412,
          319, -11638 ],
      [ -90, -8, -100, -5418, -3, -4, -1, -1211212, -2, -9,
          13, -4 ],
      [ 29, -1, -223, -1032141, -470, -12055, -87, -4, -135,
          08, -4313 ],
      [ -2136114, -33, -11438141, -409520, -120, -1,
          35, -11 ],
      [ -10384420, -66, -248544, -4, -411782, -4, -1359,
          2020, -7 ],
      [ 157, -13, -2581, -104309735, -245, -42, -1406347, -850,
          -1920427, -25, -78, -24878 ],
      [ -3, -181, -47, -155541, -6, -210, -2, -11194,
          -2 ],
      [ 39, -7, -58, -7, -3487192, -64, -18, -32, -391, -246, -28,
          97, -6, -34, -6923 ],
      [ 150, -373, -113860, -20, -3, -20335, -102, -3262,
          -4, -7, -216 ],
      [ 16, -1, -532, -144957, -190, -28341, -131, -3186,
          -5, -3, -237 ],
      [ -401, -78, -2, -634, -252841, -408, -46, -8535128,
          -13, -2860, -18 ] ],
  [ [ -456/543, -164/50125, -246, -2911/51999/102, -82/52,
          -409/274200256/5, -2, -2413/2, -65 ],
      [ 1159/10, -101/288/50, -303/23087399/10, -5061/20044/5,
          21007/4, -919, -30, -107/50, -2, -1007/4155/2 ],
      [ -220000, -2, -12943001, -32520, -10, -233,
          -11 ],
      [ 13/103/2, -4/509/2, -843/10, -17/200, -2/513/4250,
          011/50, -11/41/2 ],
      [ -100000, -1, -662200, -2, -15210, -30215,
          -5 ],
      [ 0000, -366, -20020, -180020, -200 ],
      [ 79/10, -11/253/51, -25/223499/10, -351/20229/5, -1,
          85/4, -711, -1, -97/516, -89/415/2 ],
      [ 217/10, -39/2119/53, -97/2931377/10, -973/20767/5, -2,
          259/4, -2833, -3, -226/5217, -267/443/2 ],
      [ 528/5, -4072/50, -1202383193/5, -1071/5236/5, -2219,
          -7160, -1, -118/516, -22072 ],
      [ 88/57, -128/5021, -35488/5, -161/5, -3, -64/5112107,
          -40202/504, -144 ],
      [ 00000, -1000000200, -10000 ],
      [ 22808, -1812, -4, -14, -105200, -1311, -11
         ], [ 0000, -123, -10010, -60010, -100
         ],
      [ -3001, -17, -31006, -5, -160050, -55, -2 ],
      [ 1634/5, -113376/50, -3326379984/5, -3348/52188/5, -10,
          649, -19380, -3, -639/5723, -668221 ],
      [ 0, -1, -80, -3700, -1, -411, -21001200, -10 ]
        , [ 1056/5, -81104/50, -2454876386/5, -2142/5252/5, -2,
          440, -14640, -1, -171/517, -441144 ],
      [ 22808, -2118, -6, -14, -1, -35800, -1411, -1,
          1 ],
      [ -709/10103/2, -43/5, -1309/2, -313, -4669/103241/20, -4,
          -24/5, -3, -743/4935, -1162/51, -2739/4, -109/2 ],
      [ -443/10101/2, -81/5, -3291/2, -296, -3173/102267/20, -9,
          -48/5, -5, -577/4883, -33134/50, -10577/4, -81/2 ] ],
  [ [ -2121/1078/5, -114/50414/5, -938/5, -11463679/102, -27/50,
          -3651/102734/56, -241/5243451/10, -629/5 ],
      [ 729/2019/538/5077/5, -169/5171, -861/20553/107,
          1089/20507/5105, -89/10, -10, -30, -1229/20371/10 ],
      [ 27, -3, -61, -1433150, -502, -4146, -97, -3, -3113,
          15, -4313 ],
      [ -127/20, -2/5, -4/509/5, -23/5, -33223/2031/101,
          -207/2064/51, -1, -3/1003167/20, -23/10 ],
      [ 2601504, -15162, -54, -38, -33439, -2, -1, -274,
          6, -3913 ],
      [ -704, -17012, -25, -3961325, -85, -115756329,
          -8, -18109, -35 ],
      [ 1579/20, -26/578/50, -148/5331/5433, -2811/20, -153/10,
          -22659/20, -968/5, -40, -139/1013, -2519/20441/10 ],
      [ 4137/20, -53/5204/50, -279/5608/51140, -7373/20, -2159/10,
          -66777/20, -1789/5, -9, -1, -457/10411, -6557/201173/10 ],
      [ 1159/5, -64/572/51, -187/5369/51281, -2051/5, -236/5, -3,
          1879/5, -1112/5, -3, -1, -118/537, -1874/5707/5 ],
      [ -476/531/552/5, -5158/5, -381/5, -522849/5, -1036/5, -5,
          -781/51108/566, -113/5, -3, -30751/5, -258/5 ],
      [ 22, -220, -1125120, -40, -20, -139, -73, -20012,
          -3511 ],
      [ 42, -550, -2968228, -76, -20, -178, -197, -4021,
          3, -6821 ],
      [ -241, -802, -3, -138462, -42, -38102114, -3, -6,
          37, -12 ],
      [ -1105, -1013, -28, -6122046010, -182821049,
          -9, -26170, -55 ],
      [ 4392/5, -317/5336/52, -1271/52742/54818, -7778/5, -16,
          108/5, -197377/5, -8086/5, -26, -3, -319/51438, -7122/5,
          2581/5 ],
      [ 3, -10, -1, -2318, -6, -20, -16, -1000, -110, -6,
          2 ],
      [ 2223/5, -123/599/51, -344/5668/52457, -3927/5, -452/5, -5,
          3598/5, -2024/5, -4, -1, -176/548, -3603/51369/5 ],
      [ 42, -660, -3581222, -74, -20, -281, -235, -4021,
          4, -6921 ],
      [ -1449/20, -14/5, -63/50, -122/5314/5, -3962361/20, -4, -93/10,
          -3, -1989/20, -892/5, -7, -1279/103102329/20, -551/10 ],
      [ -1223/20, -18/5, -156/50, -89/5238/5, -3391987/20, -5,
          -171/10, -4, -1563/20, -669/5, -7, -2473/104151943/20,
          -477/10 ] ],
  [ [ 97, -18, -62, -12, -64138546, -182, -32, -32, -2184, -408, -6,
          41046, -12, -16854 ],
      [ 66, -366, -8, -3264387, -129, -1628, -7123, -186, -63,
          -767, -20, -10737 ],
      [ -575, -18322, -47, -3301100, -81, -1021335019,
          -1492, -30 ],
      [ 6, -11, -1, -51036, -12, -70, -111, -320102, -3,
          -114 ],
      [ 0, -2, -12212, -15510, -435, -20, -312, -114,
          -1, -1 ],
      [ 9129, -3, -81845, -15, -912, -227, -48, -12, -323,
          -14, -146 ],
      [ -46921636, -76, -2638818121, -902253, -3, -40,
          -31281, -26 ],
      [ -9018321276, -159, -51917438202, -1784716, -7,
          -68, -630159, -51 ],
      [ 1, -2, -2013, -63, -114, -823210, -324, -312,
          -30 ],
      [ 120, -1014, -6, -47103696, -232, -185, -2207, -299, -10,
          3, -85, -14, -19363 ],
      [ -262, -10212, -23, -153519, -41, -44702, -211, -2,
          842, -14 ],
      [ -43714528, -60, -240801481, -841763, -2, -28,
          -3874, -24 ],
      [ -1110, -1, -12, -62, -44, -11, -501, -111, -62,
          0 ],
      [ -13581, -5, -38, -8127, -1336, -9, -11, -2410, -103,
          11, -422, -4 ],
      [ -24426, -5832145, -301, -1407469113, -1620, -445904,
          17, -1829, -3068408, -138 ],
      [ 20, -80, -1312, -4, -6, -401, -1101111, -2, -3,
          1 ],
      [ 5, -4, -4713015, -520, -20518100, -562, -419,
          -112 ],
      [ -5985733, -70, -3361121743, -1102074, -2, -17,
          -57100, -33 ],
      [ -395, -12726, -57, -2137116, -45, -811673, -16,
          -7468, -23 ],
      [ 9, -5, -605, -71163, -214, -28109, -330379, -10,
          -13, -163 ] ],
  [ [ -446/547, -254/52141, -276, -2941/52019/10, -2, -122/56,
          -401/283602376/5, -4, -8417/2, -65 ],
      [ 1009/10, -95/273/55, -267/22676379/10, -4381/20344/50,
          883/4, -804, -2, -3, -157/5317, -895/4135/2 ],
      [ 11, -2, -6, -1, -122460, -20, -6, -4022, -70, -1312, -2,
          -13, -196 ],
      [ 133/101/2, -4/503/2, -6793/10, -517/20, -3, -2/5067/4,
          16, -111/50, -4, -75/413/2 ],
      [ -17, -11, -3, -614, -9632300, -22, -39215, -3, -7,
          23, -7 ],
      [ 18, -3, -242, -92584, -282, -12035, -71, -2, -3322,
          17, -298 ],
      [ 329/10, -21/2108/5, -2, -69/2682059/10, -1391/20149/5, -3,
          261/4, -206, -1, -1, -147/524, -265/443/2 ],
      [ 977/10, -65/2239/5, -5, -213/22136027/10, -4073/202107/5,
          -6795/4, -641, -3, -2, -316/548, -791/4127/2 ],
      [ 473/5, -4032/5, -1, -1202462848/5, -956/5616/50209,
          -7331, -2, -33/507, -20467 ],
      [ -92/51452/5254, -117, -457/5154/5336/50, -60341,
          -1, -3, -123/541448, -15 ],
      [ -121, -106, -12, -7224300, -18371, -1003,
          19, -6 ],
      [ 1117, -12, -715, -508, -2, -21800, -241, -1, -1,
          1 ],
      [ 9, -1, -81, -3845, -150, -4016, -23, -1, -11016,
          -144 ],
      [ 65, -2, -75, -920366, -122, -1, -40100, -58, -7070,
          6, -9730 ],
      [ 1404/5, -118241/5, -8, -3577318499/5, -2853/519108/5, -11,
          622, -21833, -10, -289/5736, -608202 ],
      [ 100000, -363, -21, -300137, -11, -10, -4, -15,
          5 ],
      [ 1006/5, -8224/5, -2, -2465036041/5, -2027/51112/50438,
          -14991, -4, -11/5015, -428140 ],
      [ -119, -13, -7, -3104, -3, -3190, -1, -132420
         ], [ -1159/10107/2, -8/5, -2325/2, -330, -7129/104881/200,
          -4/5, -2, -1039/49853017/51, -31015/4, -153/2 ],
      [ -1673/10119/2, -111/5, -2375/2, -381, -10163/106927/200,
          -48/50, -1389/4113780154/50, -51353/4, -205/2 ] ],
  [ [ -1481/1028/526/5084/5, -198/5, -8102559/10213/50,
          -2371/10574/500, -39/5002391/10, -469/5 ],
      [ 3189/20, -36/553/5, -3, -108/5201/5873, -5541/20053/102,
          5169/20, -603/500, -159/1000, -5169/201001/10 ],
      [ -52, -138, -14, -3311301, -11420, -1, -105,
          11, -4 ],
      [ 153/20, -12/51/50, -36/572/545, -297/2001/101293/20,
          -216/500, -3/1000, -293/2047/10 ],
      [ -730111, -21, -421400, -2, -14630000014,
          -4 ],
      [ 4, -200, -81333, -110025, -4200000, -82 ]
        , [ 599/204/5, -27/5112/5, -9/5160, -991/20, -1, -27/100,
          899/2037/50081/1000, -919/20191/10 ],
      [ 1837/2012/5, -41/5336/5, -42/5489, -3033/20, -2, -41/100,
          2777/20146/500123/1000, -2817/20583/10 ],
      [ 984/5, -59/532/50, -172/5334/51086, -1726/5016/5, -2,
          1594/5, -1012/500, -48/500, -1609/5622/5 ],
      [ -171/5, -4/5122/5, -6, -32/529/5, -174269/5, -956/5, -2,
          -256/5, -102/502, -158/53, -10256/5, -103/5 ],
      [ 0000000000, -1000000000 ],
      [ -20, -8003, -124, -1, -40, -3, -70012003, -1
         ],
      [ 2, -100, -4715, -50013, -2200000, -41 ],
      [ -31, -115, -10, -186306, -6301, -10046, -2
         ],
      [ 2902/5, -177/596/50, -516/51042/53213, -5103/5448/5,
          -104687/5, -3136/50, -4, -139/5415, -4752/51841/5 ],
      [ 20800, -112, -4, -1403200, -1210, -31 ],
      [ 1978/5, -123/564/50, -364/5713/52181, -3467/5032/5, -3,
          3218/5, -2154/500, -91/500, -3238/51249/5 ],
      [ -200002, -9310, -1, -4, -50, -10143, -1 ],
      [ -2949/2016/5, -93/5, -148/5, -81/5, -8015061/20, -1, -93/10,
          -2, -4689/20253/500279/10004689/20, -921/10 ],
      [ -2603/20, -8/5, -51/5, -3, -24/548/5, -6994387/200, -51/10,
          -5, -4023/20, -144/500153/10004023/20, -807/10 ] ],
  [ [ -19, -4, -500, -816, -11438, -2, -240, -30, -522068, -2,
          426, -10 ],
      [ -6911, -5548, -102, -4051351200, -1223035, -2, -5,
          -38116, -37 ],
      [ 14, -31, -2, -122781, -27, -10029, -79, -1, -1223,
          -258 ],
      [ -70, -103, -6, -4214300, -10181, -100410,
          -3 ],
      [ 37, -43, -1, -2144219, -73, -80060, -133, -3211,
          -6, -6019 ],
      [ -242, -2015, -36, -12642600, -451042, -2, -30,
          638, -12 ],
      [ 2222504, -8130, -43, -11203225, -20, -342, -1,
          -3111 ],
      [ 5645008, -16330, -109, -42408149, -50, -685,
          -1, -8028 ],
      [ 25, -3, -6, -1, -1529150, -50, -8, -4040, -89, -22121,
          -7, -4113 ],
      [ -586, -3430, -66, -3421141110, -1031945, -1, -7,
          -4695, -31 ],
      [ 1, -11, -1, -6129, -3, -3003, -360110, -5, -31
         ],
      [ 1011700254, -1808018, -3, -10, -221, -1,
          -145 ],
      [ -121, -107, -16, -6622300, -21471, -1, -103,
          19, -6 ],
      [ -6510, -6548, -97, -390130160, -1, -1112905, -6, -6,
          125110, -35 ],
      [ 132, -1151, -8, -65127792, -264, -2620, -1217, -380, -11,
          6, -528, -28, -21370 ],
      [ -100, -102, -4, -6020300, -15121, -100415,
          -5 ],
      [ 38, -5, -13, -2, -2342234, -78, -13, -8, -158, -132, -33,
          232, -10, -6320 ],
      [ 11017, -1, -3666, -2208019, -16, -10, -221, -2,
          -176 ],
      [ 28, -319, -2, -1838162, -54, -48050, -110, -22, -20,
          0, -10, -4515 ],
      [ 39, -105, -5, -4590234, -78, -90074, -267, -255, -3,
          -23, -7123 ] ] ];
          return Group( gens );
       fi;

     if n = 30 then
        # subgroup of a group which is conjugate to a direct product
        # of PolExamples(1) and PolExamples(6);
        gens := 
           [ [ [ -402, -1283224, -452798, -293349 ],
           [ 33720, -95, -11297 ],
           [ -67565, -15, -1051332165 ],
           [ -11466080, -164, -325208528199 ],
           [ -22200, -55, -90419918 ],
           [ -21323616, -63, -359423121209 ],
           [ -362600, -65, -1447222157 ],
           [ 3, -22805794, -6, -206, -20 ] ],
         [ [ -4461144, -64, -288, -1114910833407 ],
           [ -937, -4, -9, -3119297 ],
           [ -125155, -7, -39, -22325277113 ],
           [ -510428, -16, -106, -7791024104457 ],
           [ -108280, -7, -134216, -3596 ],
           [ -407608, -32, -153, -781823347367 ],
           [ -190920, -23, -254380, -23171 ],
           [ 159120, -3176, -31898, -140 ] ],
  [ [ -6212704, -64, -684, -199112602143599 ],
      [ 17, -107, -82763, -32, -87, -21 ],
      [ -1248, -7, -63, -11742253 ],
      [ 856, -1252, -323141560, -1704, -694, -819 ],
      [ 194, -4080102411, -388, -268, -186 ],
      [ -14776, -32, -198, -3883770416 ],
      [ 322, -4440111581, -644, -237, -303 ],
      [ -2224800, -120, -476444319214 ] ],
  [ [ 75114040, -351316, -15001588, -669 ],
      [ 01000000 ], [ 36481, -1228, -7258, -30 ],
      [ -609, -13160330, -1351218, -1457564 ],
      [ -184, -380095, -53368, -423168 ],
      [ 1081440, -3684, -215174, -90 ],
      [ -267, -5680142, -66534, -629246 ],
      [ 2004200, -10555, -400466, -182 ] ],
  [ [ -12724240, -606, -1351256211775 ],
      [ 01000000 ], [ 40102, -82, -6 ],
      [ 208, -284407121634, -416, -2456, -159 ],
      [ 50, -8080202455, -100, -702, -36 ],
      [ 120006, -236, -18 ],
      [ 84, -12200305695, -168, -1055, -63 ],
      [ -549360, -234, -52010881540 ] ],
  [ [ -402, -1283224, -452798, -293349 ],
      [ 33720, -95, -11297 ],
      [ -67565, -15, -1051332165 ],
      [ -11466080, -164, -325208528199 ],
      [ -22200, -55, -90419918 ],
      [ -21323616, -63, -359423121209 ],
      [ -362600, -65, -1447222157 ],
      [ 3, -22805794, -6, -206, -20 ] ],
  [ [ -6116000, -150, -9791224257615 ], [ 01000000 ],
      [ -276, -15361384338552, -1510210 ],
      [ -1604, -131000327637663208, -125321065 ],
      [ -302, -30160754947604, -2854180 ],
      [ -828, -46080115210141657, -4530630 ],
      [ -608, -52520131315511216, -5007393 ],
      [ 42239600, -990, -1212, -8443759, -260 ] ],
  [ [ 72628, -992, -657, -20512362575, -430 ],
      [ -2137, -28, -9, -6749297 ],
      [ -131324, -123, -81, -43529326157 ],
      [ -1520, -540, -112136, -18683068, -11271264 ],
      [ -316, -168042, -347632, -288270 ],
      [ -4831116, -496, -279, -15911091899199 ],
      [ -566, -276069, -6301132, -494486 ],
      [ 342600, -15441, -684201, -287 ] ],
  [ [ -562440, -64, -120, -9961142171461 ],
      [ 22, -143, -123682, -41, -116, -28 ],
      [ -87127, -7, -33, -1731767979 ],
      [ -38, -60, -4816, -1788, -5259 ],
      [ -22200, -55, -90419918 ],
      [ -293520, -32, -135, -631595353265 ],
      [ -362600, -65, -1447222157 ],
      [ 3, -22805794, -6, -206, -20 ] ] ];
    return Group( gens );
    fi;
    if n= 31 then
       gens := GeneratorsOfGroup( MatExamples(4) );
       return Group( gens{[1,2]} );
    fi;
    return fail;
end;


#############################################################################
##
#F POL_RandomRationalTriangularGroup( dim, numberOfGens )
##
POL_RandomRationalTriangularGroup := function( dim, numberOfGens )
    local gens, i, g, j, k, range, kk,ll;

    range := 7;
    ll := [-range..range];
    kk := [-range..range];
    ll := Filtered( ll, (x->x<>0) );
    kk := Filtered( kk, (x->x<>0) ); 
   
    gens:=[];
    for i in [1..numberOfGens] do
        g:=IdentityMat(dim,Rationals);
        for j in [1..dim] do
            for k in [j..dim] do
                if j<=k then
                   g[j][k] := RandomList( ll )/RandomList( kk );
                else 
                   g[j][k] := 0;
                fi;
            od;
        od;
        Add(gens,g);
    od;
    return gens;
end; 

#############################################################################
##
#F  POL_RandomRationalUnipotentGroup( dim, numberOfGens )
##
POL_RandomRationalUnipotentGroup := function( dim, numberOfGens )
    local G, x;
    G := POL_RandomRationalTriangularGroup( dim, numberOfGens );
    x := RandomInvertibleMat( dim, Rationals );
    return G^x;
end;


#############################################################################
##
#F POL_RandomSubgroup( G, numberOfgens )
##
##
POL_RandomSubgroup := function( G, numberOfNewGens )
    local gens,newGens, i;
    gens := GeneratorsOfGroup( G );
    newGens := [];
    for i in [1..numberOfNewGens] do
        Add( newGens, POL_RandomGroupElement( gens ) );
    od;
    return Group( newGens );
end;

#############################################################################
##
#F POL_DirectProduct( G1, G2 )
##
##
POL_DirectProduct:= function( G1, G2 )
    local n1, n2, gens, k, i, j, matrix, x, G, gens1, gens2;
    gens1 := GeneratorsOfGroup( G1 );
    gens2 := GeneratorsOfGroup( G2 );
    n1 := Length( gens1[1] );
    n2 := Length( gens2[2] );
    gens := [];
    for k in [1..Length( gens1 )] do
        matrix := IdentityMat( n1+n2 );
        for i in [1..n1] do
            for j in [1..n1] do
                 matrix[i][j] := gens1[k][i][j]; 
            od;
        od;
        Add( gens, matrix );
    od;
    for k in [1..Length( gens2 )] do
        matrix := IdentityMat( n1+n2 );
        for i in [1..n2] do
            for j in [1..n2] do
                 matrix[i+n1][j+n1] := gens2[k][i][j]; 
            od;
        od;
        Add( gens, matrix );
    od; 
    return Group( gens ); 
end;


#############################################################################
##
#F POL_SemidirectProductVectorSpace( G )
##
POL_SemidirectProductVectorSpace := function( G )
    local gens, n, newGens, g, h, i, v;
    gens := GeneratorsOfGroup( G );
    n := Length( gens[1] );
    newGens := [];
    for g in gens do 
        h := POL_CopyVectorList( g );
        for i in [1..n] do
            Add( h[i], 0 );
        od;
        v := List( [1..n+1], x->0 );
        v[n+1] := 1;
        Add( h, v );
        Add( newGens, h );
    od;
    for i in [1..n] do
        h := IdentityMat( n+1 );
        h[i][n+1] := 1;
        Add( newGens, h );
    od;
    return Group( newGens );
end;


POL_IrredPol := function( n )
    local x,p;
    x := Indeterminate(Rationals,"x":old);

    if n = 1 then 
       p :=  x^2 + 6*x + 3;
       return p;
    fi;
    if n = 2 then 
       p := x^3 + 14*x^2 - 49*x + 7;
       return p;
    fi;
    if n = 3 then 
       p := x^2+1
       return p;
    fi;
    if n = 4 then
       p := x^3+2*x+2
       return p;
    fi;
    if n = 5 then 
       p := x^3+2*x+2;
       return p;
    fi;
    if n = 6 then 
       p := -4*x^2-2*x+1;
       return p;
    fi;
end;

POL_AbelianIrreducibleGens := function( n )
    local k,l,ll,range,pol,mat,n_gens,gens,i,exps,l_comb,g;

    pol := POL_IrredPol( n );
    mat := CompanionMat( pol );
    
    range := 3;
    l := [-range..range];
    l := Filtered( l, (x -> x<>0) );
    # k := [-range..range];
    k := [1];
    k := Filtered( k, (x -> x<>0) );

    exps := [0,1,2];
   
    n_gens := 3;
    gens := [];
    for i in [1..n_gens] do
        l_comb := 2;
        ll := List( [1..l_comb], x-> RandomList(l)/RandomList(k) );
        g := List( [1..l_comb] , x-> ll[x]*mat^RandomList(exps) );
        Add( gens, Sum( g ) );
    od;  

    return gens;
end;

POL_RandomUnitGroupGens := function( n )
    local F, U, u_gens, n_gens, gens;

    F := ExampleMatField( n );
    U := UnitGroup( F );
    u_gens := GeneratorsOfGroup( U );

    n_gens := 3;
    gens := List( [1..n_gens], x->POL_RandomGroupElement( u_gens  ));

    return gens;

end;


POL_TriangularizableGens := function( n_blocks, n_gens )
    local n_fields,a_gens,i,ll,dim,j,k,start,rr,gens,g,start1,start2,
          rr1,rr2, u_entries, mat;
  
    n_fields := 6;
    a_gens := [];
    for i in [1..n_blocks] do 
        Add( a_gens, POL_RandomUnitGroupGens(  RandomList( [1..n_fields] )) );
    od;
  
    #get dimension of composed matrix
    ll := List( [1..n_blocks], x-> Length( a_gens[x][1] ));
    dim := Sum( ll );

    #get final generators
    gens := [];
    for i in [1..n_gens] do 
        g := NullMat( dim,dim );
        #write blocks
        for j in [1..n_blocks] do 
            for k in [j..n_blocks] do 
                if j = k then
                   #place block on diagonal
                     # set starting point
                     start := Sum( ll{[1..(j-1)]} );
                     # get range
                     rr := [1..ll[j]]+start;
                     g{rr}{rr} := RandomList( a_gens[j] );
                elif j <= k then
                   # write upper part
                     #set starting points
                     start1 := Sum( ll{[1..(j-1)]} );
                     start2 := Sum( ll{[1..(k-1)]} );
                     #get range
                     rr1 := [1..ll[j]]+start1;
                     rr2 := [1..ll[k]]+start2;
                     u_entries := [0,0,0,1/2,0];
                     mat := RandomMat( ll[j], ll[k], u_entries );
                     g{rr1}{rr2} := mat;
                     
                fi;
             od;
         od;
        Add( gens, g );
     od;
 
    return gens; 
       

end;


#############################################################################
##
#F POL_PolExamples2( n ) .............Examples for polycyc rat. matrix groups
##
POL_PolExamples2 := function( n )
    local i,M,P, nat, G, gens, d, l, l1, l2, l3,h1,h2,H,g,h;

    # check if aclib is needed
    l1 := Concatenation( [9..16],[21..28],[37..40]);
    l2 := l1 + 40;
    l3 := [82..100];
    l := Concatenation( l1, l2 ,l3);
    l1 := l+100;
    l := Concatenation( l, l1 );
    l1 := l+300;
    l := Concatenation( l, l1 ); 
    l1 := l+400;
    l := Concatenation( l, l1 ); 
    if POL_AlmostCrystallographicGroup = false then 
        if n in l then
            Print( "package 'aclib' is needed for this example.\n" );
            return fail;
        fi;
    fi;

    # some unipotent groups
    if n=1 then
        return Group(
               [ [ [ 1, -412 ], 
                   [ 0151 ], 
                   [ 0013 ], 
                   [ 0001 ] ]
                 ,
                 [ [ 1, -1, -24 ], 
                   [ 01, -11 ], 
                   [ 0011 ], 
                   [ 0001 ] ]
                 ,
                 [ [ 1, -4, -21 ], 
                   [ 01, -2, -3 ], 
                   [ 0012 ], 
                   [ 0001 ] ] 
                ]);
    fi;
    if n=2 then
        return Group(
               [ [ [ 15, -31, -3 ], 
                   [ 01201 ], 
                   [ 0012, -2 ],
                   [ 0001, -2 ], 
                   [ 00001 ] ]
                 ,
                 [ [ 13, -3, -11 ], 
                   [ 010, -22 ], 
                   [ 00141 ],
                   [ 0001, -1 ], 
                   [ 00001 ] ] 
               ]);
    fi;
    if n=3 then
        return Group( 
               [ [ [ 73/10, -35/242/563/2 ], 
                   [ 27/20, -11/49/527/4 ],
                   [ -3/51, -4/5, -9 ], 
                   [ -11/207/4, -2/51/4 ] ]
                 ,
                 [ [ -42/5423/1027/5479/10 ], 
                   [ -23/10227/2013/10231/20 ],
                   [ 14/5, -63/5, -4/5, -79/5 ],
                   [ -1/109/201/1037/20 ] ] 
               ]);
    fi;
    if n=4 then
        return Group(
               [ [ [ 52, -817, -1 ], 
                   [ -69/4, -15/4449/20, -163/553/20 ],
                   [ -249/563/53/5 ], 
                   [ 13/43/4, -121/2057/5, -17/20 ],
                   [ 241/47/4, -1477/20319/5, -189/20 ] ]
                  ,
                  [ [ 19/20, -3, -19/2, -1/2 ], 
                    [ -74/5129/207/4159/49/10 ],
                    [ 53/104/5, -49/2, -9/10 ], 
                    [ 37/10, -41/20, -7/4, -29/4, -3/5 ],
                    [ 137/5, -457/2037/4, -559/43/10 ] ] 
                ]);
    fi;
    if n in [5..8] then
        return MatExamples( n-4 );
    fi;
    if n=9 then
        return POL_AlmostCrystallographicGroup( 317, [1,0,-3,7] );
    fi;
    if n=10 then
        return POL_AlmostCrystallographicGroup( 316, [3,4,-1,0] );
    fi;
    if n=11 then
        return POL_AlmostCrystallographicGroup( 315, [-1,1,0,0] );
    fi;
    if n=12 then
        return POL_AlmostCrystallographicGroup( 314, [-2,-1,2,-1] );
    fi;
    if n=13 then
        return POL_AlmostCrystallographicGroup( 42, [0,-3,-2,1,-1,-2,4] );
    fi;
    if n=14 then
        return POL_AlmostCrystallographicGroup( 413, [-2,0,-2,-2,-1,-1] );
    fi;
    if n=15 then
        return POL_AlmostCrystallographicGroup( 437, [ 1,2,0,-3,-4] );
    fi;
    if n=16 then
        return POL_AlmostCrystallographicGroup( 486,[0,-2,-1,-2,-1] );
    fi;
    if n in [17..20] then
        return POL_KroneckerProduct( MatExamples( n-16), -1  );
    fi;
    if n in [21..28] then
        return POL_KroneckerProduct( PolExamples( n-12 ), 1 );
    fi; 
    if n=29 then
        return POL_DirectProduct( PolExamples( 1 ), PolExamples( 2 ) );
    fi;
    if n=30 then
        return POL_DirectProduct( PolExamples( 1 ), PolExamples( 4 ) );
    fi;
    if n=31 then
        return POL_DirectProduct( PolExamples( 2 ), PolExamples( 8 ) );
    fi;
    if n=32 then
        return POL_DirectProduct( PolExamples( 6 ), PolExamples( 7 ) );
    fi;
    if n=33 then
        return POL_DirectProduct( PolExamples( 1 ), PolExamples( 2 ) );
    fi;
    if n=34 then
        return POL_DirectProduct( PolExamples( 1 ), PolExamples( 4 ) );
    fi;
    if n=35 then
        return POL_DirectProduct( PolExamples( 2 ), PolExamples( 8 ) );
    fi;
    if n=36 then
        return POL_DirectProduct( PolExamples( 6 ), PolExamples( 7 ) );
    fi;
    if n=37 then
        return POL_DirectProduct( PolExamples( 1 ), PolExamples( 9 ) );
    fi; 
    if n=38 then
        return POL_DirectProduct( PolExamples( 10 ), PolExamples( 11 ) );
    fi; 
    if n=39 then
        return POL_DirectProduct( PolExamples( 17 ), PolExamples( 21 ) );
    fi; 
    if n=40 then
        return POL_DirectProduct( PolExamples( 2 ), PolExamples( 27 ) );
    fi; 
    if n in [41..81] then
        return POL_SemidirectProductVectorSpace( PolExamples( n-40 ) );
    fi;
    if n in [82..100] then
        return POL_AlmostCrystallographicGroup( 4, n-5, false );
    fi;
    if n in [101..200] then
        P := SymmetricGroup( 3 );
        M := POL_PolExamples2( n-100 );
        return WreathProductOfMatrixGroup( M, P );
    fi;
    if n in [201..300] then
        P := SmallGroup( 83 );
        nat := RegularActionHomomorphism( P );
        P := Image( nat );
        M := POL_PolExamples2( n-200 );
        return WreathProductOfMatrixGroup( M, P );
    fi;
    if n in [301..600] then
        G := POL_PolExamples2( n-300 );
        gens := GeneratorsOfGroup( G );
        d := Length( gens[1] );
        M := RandomInvertibleMat( Integers, d );
        return G^M;
    fi;
    if n in [601..1200]  then
        return POL_RandomSubgroup( POL_PolExamples2( n-600), 2 );
    fi; 
    # examples which can be nonpolycyclic or nonsolvable
    if n = 1201 then
          h1 := [[2,0],[0,1]];
          h2 := [[1,1],[0,1]];
          H := Group( [h1,h2] );
          return H;
     fi;
     if n = 1202 then
         gens := [ [ [ -1/45/4, -4/3 ], [ 101 ], [ 0, -5/3, -1 ] ],
                 [ [ 23/54 ], [ 2/301 ], [ 5/301/2 ] ] ];
         return Group( gens );
     fi;
     if n = 1203 then
         gens := [ [ [ 24/31/21/2 ], [ -2, -1/2, -1/41 ], 
                    [ -1/2003/2 ],
                  [ 01/303/2 ] ],
              [ [ 2212 ], [ -2/53/20, -1/2 ], [ -3/201/34 ],
                  [ -1/40, -30 ] ] ];
         return Group( gens );
     fi;
     if n = 1204 then
         gens := [ [ [ 313, -1 ], 
                   [ 2, -111 ], 
                  [ -1013 ], [ 11, -10 ] ],
              [ [ 0, -3, -12 ], [ -3, -30, -1 ], [ -1, -2, -10 ],
                  [ 1, -12, -5 ] ] ];
         return Group( gens );
     fi;
     if n= 1205 then
           gens := [ [ [ -7/377/30010 ], 
                     [ -77/3994/30000 ],
                      [ 00000, -28/3 ], [ 002/30022/3 ],
                      [ 0002/30, -10/3 ], [ 00002/3, -2 ]
                       ],
                      [ [ 1/38/30000 ], [ -8/3350100 ],
                          [ 00000, -28/3 ], [ 002/30022/3 ],
                          [ 0002/30, -10/3 ], 
                         [ 00002/3, -2 ]] ];
             return Group( gens );
     fi;
     if n = 1206 then
        gens := [ [ [ -6, -1/23/4, -5/3 ], [ 0, -33, -3/2 ], 
                 [ 001/3, -4/7 ],
                  [ 0001 ] ],
                [ [ 7/421/2, -5/3 ], [ 05/6, -61 ], [ 0032/7 ],
                  [ 0002/3 ] ] ];
        return Group( gens );
     fi;
     if n = 1207 then
        gens := [ [ [ 15/73/4, -52/5 ], 
                  [ 0, -13/224/7 ], [ 002/31, -7/5 ],
                  [ 0001/54/7 ], [ 00002/5 ] ],
                  [ [ 2, -2/7, -4/713/7 ], [ 0, -1/5, -1/311/2 ],
                  [ 00, -4/3, -32 ], [ 0007, -1/6 ], 
                   [ 0000, -2 ] ] ];
        return Group( gens );
     fi;
     if n = 1208 then 
        gens := [ [ [ 3/2, -3, -4/51/3, -3, -5/645/3 ],
                 [ 0, -15/7, -1/23/7, -1/3, -4/51/2 ],
                 [ 00, -1/43/55/2, -1/6, -11 ],
                  [ 0001/57/4, -2, -7/4, -1 ],
                  [ 00005/3, -5/2, -1, -1/6 ], 
                  [ 00000, -15/2, -1 ],
                  [ 00000031 ], 
                 [ 0000000, -2/7 ] ],
                [ [ 3/21, -3/21, -1, -2/51/5, -1 ],
                [ 014/71, -3/5, -5/75/23 ],
                 [ 00, -1/313/2, -4/33/22/3 ],
                  [ 0003, -3, -7/55/21/2 ], 
                  [ 00003/5, -24/31 ],
                 [ 00000, -233 ], 
                  [ 000000, -1/2, -1/2 ],
                 [ 00000005/3 ] ] ];
          return Group( gens );
       fi;
       if n = 1209 then
          gens := [ [ [ 5/6, -214, -12 ], [ 2/3, -19/6, -14, -30 ],
      [ 005/6, -2, -1, -2 ], [ 002/3, -19/60, -3 ],
      [ 00005/6, -2 ], [ 00002/3, -19/6 ] ],
  [ [ -1/2, -12/53, -11, -2 ], [ 4/5, -53/10, -2, -4, -21 ],
      [ 00, -1/2, -12/5, -2, -4 ], [ 004/5, -53/1023 ],
      [ 0000, -1/2, -12/5 ], [ 00004/5, -53/10 ] ],
  [ [ 4733/600, -2037/50, -2, -14, -2 ], [ 679/50, -8831/12000, -3, -2 ],
      [ 004733/600, -2037/5002 ], [ 00679/50, -8831/12041 ],
      [ 00004733/600, -2037/50 ], [ 0000679/50, -8831/120 ] ],
  [ [ 10, -3, -2, -2, -4 ], [ 013213 ], [ 0010, -21 ],
      [ 000120 ], [ 000010 ], [ 000001 ] ] ];
            return Group( gens );
       fi;
       if n = 1210 then
           # takes 6 minutes to test polycyclicity 
           gens := [ [ [ 63/20, -5/2121/2, -1475, -5111 ],
      [ 0, -237/20721/2, -17579/21, -32, -2 ],
      [ 2/5, -15/23393/20, -8129/21, -11, -1 ],
      [ 1/2, -121/10295, -144107/20, -3, -100 ],
      [ 000063/20, -5/2121/2, -1475 ],
      [ 00000, -237/20721/2, -17579/2 ],
      [ 00002/5, -15/23393/20, -8129/2 ],
      [ 00001/2, -121/10295, -144107/20 ] ],
  [ [ -281351/40034831/2, -8511437/2020798633/230, -20 ],
      [ -85011/2041515849/400, -12680078/51239406543/20, -10, -11 ],
      [ -196313/100959919/20, -469170371/400286619339/10, -1, -411 ],
      [ -34831/108511437/100, -20798633/1020329462629/4001, -24, -2 ],
      [ 0000, -281351/40034831/2, -8511437/2020798633/2 ],
      [ 0000, -85011/2041515849/400, -12680078/51239406543/20 ],
      [ 0000, -196313/100959919/20, -469170371/400286619339/10 ],
      [ 0000, -34831/108511437/100, -20798633/1020329462629/400 ] ],
  [ [ -5, -375, -3665/210, -1, -2 ], [ 1/2, -23447, -109200, -312 ],
      [ 0, -17/2202, -10101/2, -3, -101 ],
      [ 3/5, -15733/2, -17921/20123 ],
      [ 0000, -5, -375, -3665/2 ], [ 00001/2, -23447, -10920 ],
      [ 00000, -17/2202, -10101/2 ],
      [ 00003/5, -15733/2, -17921/2 ] ],
  [ [ -50, -30750, -183253, -202 ], [ 5, -2304470, -1092000153 ],
      [ 0, -852020, -505053014 ], [ 6, -1503665, -896052, -31, -1 ]
        , [ 0000, -50, -30750, -18325 ],
      [ 00005, -2304470, -109200 ], [ 00000, -852020, -50505 ],
      [ 00006, -1503665, -89605 ] ] ];
           return Group( gens );
        fi;



     ###############################################################
     # some easy examples
     if n = -1 then
         g := 2*IdentityMat( 21 ); 
         gens := [g];
         return Group( gens );
     fi;
     if n = -2 then 
        g := 2*IdentityMat( 31 ); 
         gens := [g];
         return Group( gens );  
     fi;
     if n = -3 then
        g := 1345*IdentityMat( 51 ); 
         gens := [g];
         return Group( gens );  
     fi;
     if n = -4 then
        g := 23* IdentityMat( 51 ); 
        h := 12* IdentityMat( 51 );
        gens := [g,h];
        return Group( gens );
     fi;
     if n = -5 then 
        g := IdentityMat( 3,1 );
        g[3][3] := 34;
        h := IdentityMat( 3,1 );
        h[1][1] := 23;
        gens := [g,h];
        return Group( gens );
     fi;
     if n = -6 then
        g := IdentityMat(4,1 );
        gens := [g];
        return Group( gens );
     fi;
     if n = -7 then
        g := [[2]];
        h := [[3]];
        gens := [g,h];
        return Group( gens );
     fi;
     if n = -8 then
        g := [[1]];
        gens := [g];
        return Group( gens );
     fi;
 
     ##################################################################
     # some abelian irrdeucible examples
     if n = - 9 then
        gens := [ [ [ -21/5056, -168 ], [ 0, -21/5, -44188 ], 
                  [ -4079/5, -104 ],
                  [ 0, -412, -101/5 ] ],
                  [ [ -1/20434/5, -1302/5 ], [ 0, -1/2, -341/51457/5 ],
                  [ -31/5061/2, -806/5 ], [ 0, -31/593/5, -253/10 ] ],
                  [ [ -5/6014/5, -77/5 ], [ 1/2, -5/6, -11/5149/10 ],
                  [ -1/51/21/6, -77/10 ], [ 0, -1/511/10, -47/15 ] ] ];
        return Group( gens );
     fi;
     if n = - 10 then 
        gens := [ [ [ -37/2000, -70/3 ], [ 5/3, -37/20055/3 ],
                [ 05/3, -37/20, -25/3 ], [ 005/3, -137/20 ] ],
                [ [ 3/400, -56 ], [ 43/4044 ], [ 043/4, -20 ],
                 [ 004, -45/4 ] ],
               [ [ 7/2028, -84 ], [ 07/2, -2294 ],
                 [ -2027/2, -52 ],
                     [ 0, -26, -9/2 ] ] ];
        return Group( gens );
     fi;
     if n = -11 then 
        gens := [ [ [ -1185/12 ], [ -185/122393/12 ] ], 
                [ [ -1/2, -24 ], [ 24, -625/2 ] ]
                 , [ [ 1/3, -1/2 ], [ 1/2, -37/6 ] ] ];
        return( Group(gens ) );
     fi;
     if n = -12 then
        gens := [ [ [ 00000119/6 ], 
                 [ -17/120000, -187/12 ],
                 [ 0, -17/120000 ], [ 00, -17/1200, -17 ],
                 [ 000, -17/1200 ], [ 0000, -17/1285/12 ] ],
                 [ [ 0000196/15, -238/3 ], 
                 [ 1000, -154/15377/5 ],
                 [ -14/151000, -154/15 ], 
                 [ 0, -14/1510, -56/568 ],
                 [ 00, -14/1510, -56/5 ], 
                 [ 000, -14/1517/3, -85/3 ] ],
                 [ [ 2000, -84/598 ], [ -120066/5, -469/5 ],
                 [ 6/5, -120066/5 ], [ 06/5, -1272/5, -84 ],
                 [ 006/5, -1272/5 ], [ 0006/5, -737 ] ] ];
         return Group( gens );
     fi;
     
     ##################################################################
     # some triangularizable examples
     if n = -13 then
           gens := [ [ [ 9/1039/1000 ], [ -39/10258/500 ], 
                   [ 004, -39 ],
                    [ 0039, -503 ] ],
                    [ [ 9/1039/1000 ], [ -39/10258/500 ], 
                   [ 004, -39 ],
                    [ 0039, -503 ] ] ];
            return Group( gens );
     fi;
     if n = -14 then
          gens := [ [ [ 7600 ], [ -68500 ], 
                    [ 0005 ], [ 00, -565 ] ],
                   [ [ -77800 ], [ -78100700 ], [ 00, -681 ],
                   [ 00, -811047 ] ] ];
          return Group( gens );
     fi;
     if n = -15 then
           gens := [ [ [ -936000 ], [ -1263000 ], 
                     [ 00, -160 ],
                     [ 00056 ], [ 00, -305 ] ],
                     [ [ -624000 ], [ -842000 ], 
                      [ 00, -160 ],
                     [ 00056 ], [ 00, -305 ] ] ];
        return Group( gens );
     fi;
     # takes some more time, example form referee
     if n = -16 then
          gens := [ [ [ 1, -38, -202 ], [ 5, -1437, -3, -2, -2 ],
                     [ -38, -220, -52 ], [ 00001, -1 ],
                      [ 00005, -4 ],
                    [ 0001, -16 ] ],
                       [ [ 100, -11, -2 ], 
                   [ 010, -305 ], [ 001, -121 ],
                    [ 0002, -1, -1 ], [ 000, -2, -3, -6 ],
                       [ 000, -1, -1, -2 ] ] ];
          return Group( gens );
     fi;
     
     # finite examples
     if n = -17 then
        return ImfMatrixGroup( 4,1,1 );
     fi;
     if n = -18 then
        return ImfMatrixGroup(6,2,1);
     fi;       



     ################################################################
     #difficult examples ???
       if n = -100 then
           gens := [ [ [ -1005170, -231,  1001 ], 
                       [ -16982112, -3850000 ],
                       [ -592737, -132,   0000 ], 
                       [ -803852, -181,   0100 ],
                       [ 0000, -199670, -231 ],
                       [ 0000, -34163112, -385 ],
                       [ 000031, -153, -107363 ], 
                       [ 000010, -52, -38125 ]
                       ],
                     [ [ -10, -10,  0000 ], 
                       [ -235, -110010 ], 
                       [ -1000,   0010 ], 
                       [ -112, -4,  1010 ],
                       [ 0000, -199670, -231 ], 
                       [ 0000, -34163112, -385 ],
                       [ 000031, -153, -107363 ], 
                       [ 000010, -52, -38125 ]
                      ] ];
            return Group( gens );
        fi;
       if n = -101 then 
           gens:= [[[1,-3,8,-2,0,2],
                [5,-14,37,-3,-2,-2],
                [-3,8,-22,0,-5,2],
                 [0,0,0,0,1,-1],
                  [0,0,0,0,5,-4],
                   [0,0,0,1,-1,6]],
               [[1,0,0,-1,1,-2],
                [0,1,0,-3,0,5],
                  [0,0,1,-1,2,1],
                 [0,0,0,2,-1,-1],
                     [0,0,0,-2,-3,-6],
                   [0,0,0,-1,-1,-2]]];
            return Group( gens );
       fi;
       if n = -102 then
           gens :=[[[-984,113,11,19,0,-2,-2,5,1,1,-1],
                    [1160,146,223,201,0,1,0,-2,-3,2,3],
                    [124,30,36,33,2,0,2,-2,1,-5,0],
                    [113,11,19,17,3,0,4,-1,1,1,-1],
                    [0,0,0,0619,1178,2242,        2,-2,-1,-2],
                    [0,0,0,034206509,12388,     2,-2,-2,-4],
                    [0,0,0,0117822424267,     2,0,1,-3],
                    [0,0,0,00,0,0,         5274486145614272],
                    [0,0,0,00,0,0,         5744353884,50471,47281],
                    [0,0,0,00,0,0,         9422,8833,8274,7751],
                    [0,0,0,00,0,0,         4861,4561,4272,4002]],
                   [[4272,4002,3749,3512,    -1,-2,2,-1,1,1,2],
                    [47281,44292,41492,388694,-1,-1,3,-2,3,1],
                    [7751,7261,6802,6372,      2,-2,5,4,-1,-1,-3],
                    [4002,3749,3512,3290,      -1,1,0,-2,0,1,-3],
                    [0,0,0,0,                   0,0,1,   -1,-1,-2,2],
                    [0,0,0,0,                   1,0,5,   3,-1,2,2],
                    [0,0,0,0,                   0,1,-1,  -1,2,-1,0],
                    [0,0,0,0,                 0,0,0,   4272,4002,3749,3512 ],
                    [0,0,0,0,                 0,0,0,  47281,44292,41492,38869],
                    [0,0,0,0,                 0,0,0,   7751,7261,6802,6372],
                    [0,0,0,0,                 0,0,0,  4002,3749,3512,3290]]
                  ];
             return Group( gens );
        fi;
       if n = -103 then 
          gens := [ [ [ -12, -3, -182201/2000000 ],
                [ -11646, -881/201/200000 ],
                [ -2, -10, -233300000000 ],
                   [ 0414, -290001/21/21/200 ],
                   [ 0000, -1, -1, -1001/200 ],
                   [ 0000, -535, -111/2000 ],
                   [ 0000, -345, -11001/20 ],
                   [ 0000, -334, -90000 ],
                   [ 00000000, -154836 -121 ],
                   [ 00000000, -268362, -209 ],
                   [ 0000000011, -71, -49165 ],
                   [ 000000000, -22, -1447 ] ],
               [ [ -12, -3, -182200000000 ],
                   [ -11646, -8800001/2000 ],
                   [ -2, -10, -233300000000 ],
                   [ 0414, -291/21/201/20001/2 ],
                   [ 0000, -346, -110000 ],
                   [ 00002, -5, -81101/201/2 ],
                   [ 00003, -5, -7110000 ],
                   [ 00002, -4, -69001/20 ],
                   [ 00000000, -154836, -121 ],
                   [ 00000000, -268362, -209 ],
                   [ 0000000011, -71, -49165 ],
                   [ 000000000, -22, -1447 ] ] ];
            return Group( gens );
       fi;

    return fail;

  end;

#############################################################################
#
# examples groups used for the paper "testing polycyclicity"
#
SolvableMatGroupExams := function( n )
    local gens,mat1,mat2;
    if n=1 then 
        return PolExamples( 3 );
    fi;
    if n=2 then 
        return PolExamples( 4 );
    fi;
    if n=3 then 
        return PolExamples( 13 );
    fi;
    if n=4 then 
        return PolExamples( 16 );
    fi;


    if n=5 then 
        return PolExamples( 24 );
    fi;

    if n=6 then 
        return PolExamples( 27 );
    fi;
    if n=7 then
        return POL_PolExamples2( 1201 );
    fi;
    if n = 8 then 
        return POL_PolExamples2( 1209 );
    fi;
    if n = 9 then 
        return POL_PolExamples2( 1210 );
    fi;
    if n = 10 then 
         # examples used during the talk in oxford and st andrews
         mat1 := [ [ 5/6, -214 ], [ 2/3, -19/6, -14 ], 
                 [ 005/6, -2 ],  [ 002/3, -19/6 ] ];
         mat2 := [ [ -1/2, -12/53, -1 ], [ 4/5, -53/10, -2, -4 ], 
                 [ 00, -1/2, -12/5 ], [ 004/5, -53/10 ] ];
         return Group( mat1, mat2 );
    fi;
    
    return 0;
end;

   
# ideas for the construction of further examples
# - semidirect product
# - wreath product for example with S_4
# - extensions
# - use library for finite integral matrix groups
# - subdirect product
# - use galois group of the arrising number fields
# - direct product with finite group
# - subdirect products S_4 \times G 
#     S_4 \times G
#      |      | 
#      |alpha | beta
#      V      V
#        S_3 or C_2

#   H = { (\sigma,g) : \sigma \alpha = g \beta}
#   K < G \times H

[Dauer der Verarbeitung: 0.158 Sekunden, vorverarbeitet 2026-06-07]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik