Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/polenta/exam/   (GAP Algebra Version 4.15.1©)  Datei vom 10.3.2025 mit Größe 66 kB image not shown  

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

[zur Elbe Produktseite wechseln0.102QuellennavigatorsAnalyse erneut starten2026-06-07]