Quelle exam.gi
Sprache: unbekannt
|
|
#############################################################################
##
#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, -4, 1, 2 ],
[ 0, 1, 5, 1 ],
[ 0, 0, 1, 3 ],
[ 0, 0, 0, 1 ] ]
,
[ [ 1, -1, -2, 4 ],
[ 0, 1, -1, 1 ],
[ 0, 0, 1, 1 ],
[ 0, 0, 0, 1 ] ]
,
[ [ 1, -4, -2, 1 ],
[ 0, 1, -2, -3 ],
[ 0, 0, 1, 2 ],
[ 0, 0, 0, 1 ] ]
]);
fi;
if n=2 then
return Group(
[ [ [ 1, 5, -3, 1, -3 ],
[ 0, 1, 2, 0, 1 ],
[ 0, 0, 1, 2, -2 ],
[ 0, 0, 0, 1, -2 ],
[ 0, 0, 0, 0, 1 ] ]
,
[ [ 1, 3, -3, -1, 1 ],
[ 0, 1, 0, -2, 2 ],
[ 0, 0, 1, 4, 1 ],
[ 0, 0, 0, 1, -1 ],
[ 0, 0, 0, 0, 1 ] ]
]);
fi;
if n=3 then
return Group(
[ [ [ 73/10, -35/2, 42/5, 63/2 ],
[ 27/20, -11/4, 9/5, 27/4 ],
[ -3/5, 1, -4/5, -9 ],
[ -11/20, 7/4, -2/5, 1/4 ] ]
,
[ [ -42/5, 423/10, 27/5, 479/10 ],
[ -23/10, 227/20, 13/10, 231/20 ],
[ 14/5, -63/5, -4/5, -79/5 ],
[ -1/10, 9/20, 1/10, 37/20 ] ]
]);
fi;
if n=4 then
return Group(
[ [ [ 5, 2, -8, 17, -1 ],
[ -69/4, -15/4, 449/20, -163/5, 53/20 ],
[ -2, 4, 9/5, 63/5, 3/5 ],
[ 13/4, 3/4, -121/20, 57/5, -17/20 ],
[ 241/4, 7/4, -1477/20, 319/5, -189/20 ] ]
,
[ [ 19/2, 0, -3, -19/2, -1/2 ],
[ -74/5, 129/20, 7/4, 159/4, 9/10 ],
[ 53/10, 4/5, -4, 9/2, -9/10 ],
[ 37/10, -41/20, -7/4, -29/4, -3/5 ],
[ 137/5, -457/20, 37/4, -559/4, 3/10 ] ]
]);
fi;
if n in [5..8] then
return MatExamples( n-4 );
fi;
if n=9 then
return POL_AlmostCrystallographicGroup( 3, 17, [1,0,-3,7] );
fi;
if n=10 then
return POL_AlmostCrystallographicGroup( 3, 16, [3,4,-1,0] );
fi;
if n=11 then
return POL_AlmostCrystallographicGroup( 3, 15, [-1,1,0,0] );
fi;
if n=12 then
return POL_AlmostCrystallographicGroup( 3, 14, [-2,-1,2,-1] );
fi;
if n=13 then
return POL_AlmostCrystallographicGroup( 4, 2, [0,-3,-2,1,-1,-2,4] );
fi;
if n=14 then
return POL_AlmostCrystallographicGroup( 4, 13, [-2,0,-2,-2,-1,-1] );
fi;
if n=15 then
return POL_AlmostCrystallographicGroup( 4, 37, [ 1,2,0,-3,-4] );
fi;
if n=16 then
return POL_AlmostCrystallographicGroup( 4, 86,[0,-2,-1,-2,-1] );
fi;
if n=17 then
return POL_AlmostCrystallographicGroup( 4, 10,[-2,-2,-1] );
fi;
if n=18 then
return POL_AlmostCrystallographicGroup( 4, 11,[-4,-2,-1] );
fi;
if n=19 then
return POL_AlmostCrystallographicGroup( 4, 12,[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 := [ [ 1, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 1, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 1, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 1, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 1, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 1 ], [ 0, 1, 0, 0, 0, 0, 0, 0 ] ];
s :=
[ [ 1, 0, 0, 0, 0, 0, 0, 1 ], [ 0, E(7)^6, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, E(7), 0, 0, 0, 0, 0 ], [ 0, 0, 0, 1, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 1, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 1, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 0, 0, 0, 1 ] ];
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 :=
[ [ [ -403, 2500, 32, -633, -1638, 800, 2073, 406 ],
[ 3, 37, 20, -9, 5, -11, 29, 7 ], [ -65, -16, 5, 3, -73, 129, -43, 59 ]
, [ -37, -2936, 80, 735, 1366, 54, -2676, 28 ],
[ 2, -788, 0, 197, 364, -4, -707, -12 ],
[ -207, 20, 16, -9, -263, 411, -71, 191 ],
[ -13, -1276, 0, 319, 567, 26, -1152, -6 ],
[ 8, 972, 0, -243, -434, -16, 877, 7 ] ],
[ [ -615, 40, -64, -12, -850, 1248, -241, 515 ],
[ -9, 37, -4, -9, -31, 19, 29, 7 ],
[ -39, 347, -7, -87, -205, 80, 293, 41 ],
[ 437, 3676, -16, -918, -1054, -870, 3495, -290 ],
[ 106, 748, 0, -187, -189, -212, 719, -72 ],
[ -149, 1184, -32, -297, -727, 307, 995, 151 ],
[ 187, 1376, 0, -344, -359, -374, 1319, -126 ],
[ -106, -816, 0, 204, 217, 212, -779, 70 ] ],
[ [ -352, -632, -64, 150, -246, 722, -699, 251 ],
[ 17, -107, -8, 27, 63, -32, -87, -21 ],
[ -59, -16, -7, 3, -73, 120, -37, 51 ],
[ -58, 84, -32, -20, -93, 124, 64, 87 ],
[ -2, 220, 0, -55, -90, 4, 199, 18 ],
[ -188, -16, -32, 0, -256, 385, -82, 160 ],
[ -36, 260, 0, -65, -144, 72, 221, 57 ],
[ 3, -228, 0, 57, 94, -6, -206, -20 ] ],
[ [ 893, 7836, 0, -1959, -2319, -1784, 7446, -585 ],
[ 0, 1, 0, 0, 0, 0, 0, 0 ], [ 76, 456, 1, -114, -102, -152, 444, -54 ],
[ -210, -4128, 0, 1033, 1567, 420, -3805, 87 ],
[ -158, -1776, 0, 444, 587, 316, -1668, 96 ],
[ 228, 1368, 0, -342, -306, -455, 1332, -162 ],
[ -142, -2088, 0, 522, 746, 284, -1940, 75 ],
[ 190, 2100, 0, -525, -690, -380, 1974, -116 ] ],
[ [ -1656, -60, 0, 15, -1925, 3314, -920, 1473 ],
[ 0, 1, 0, 0, 0, 0, 0, 0 ], [ -46, 0, 1, 0, -50, 92, -26, 42 ],
[ 1626, 236, 0, -58, 1847, -3252, 1043, -1434 ],
[ 468, 20, 0, -5, 551, -936, 259, -414 ],
[ -138, 0, 0, 0, -150, 277, -78, 126 ],
[ 700, 76, 0, -19, 805, -1400, 428, -618 ],
[ -519, 0, 0, 0, -621, 1038, -267, 460 ] ],
[ [ -427, -4608, 0, 1152, 1464, 856, -4359, 207 ],
[ 0, 1, 0, 0, 0, 0, 0, 0 ], [ -104, -360, 1, 90, 36, 208, -372, 90 ],
[ -525, 2300, 0, -574, -1560, 1050, 1845, 660 ],
[ -48, 876, 0, -219, -421, 96, 771, 96 ],
[ -312, -1080, 0, 270, 108, 625, -1116, 270 ],
[ -171, 1104, 0, -276, -657, 342, 923, 234 ],
[ 58, -936, 0, 234, 457, -116, -821, -110 ] ],
[ [ -479, 2668, -64, -669, -1882, 976, 2189, 434 ],
[ -9, 37, -4, -9, -31, 19, 29, 7 ],
[ -71, -13, -7, 3, -91, 144, -43, 59 ],
[ -85, -2936, -16, 735, 1222, 174, -2676, 28 ],
[ 2, -788, 0, 197, 364, -4, -707, -12 ],
[ -245, 104, -32, -27, -385, 499, -13, 205 ],
[ -13, -1276, 0, 319, 567, 26, -1152, -6 ],
[ 8, 972, 0, -243, -434, -16, 877, 7 ] ],
[ [ -539, -128, 32, 24, -606, 1072, -357, 487 ],
[ 3, 37, 20, -9, 5, -11, 29, 7 ],
[ -33, 344, 5, -87, -187, 65, 293, 41 ],
[ 485, 3676, 80, -918, -910, -990, 3495, -290 ],
[ 106, 748, 0, -187, -189, -212, 719, -72 ],
[ -111, 1100, 16, -279, -605, 219, 937, 137 ],
[ 187, 1376, 0, -344, -359, -374, 1319, -126 ],
[ -106, -816, 0, 204, 217, 212, -779, 70 ] ],
[ [ -352, -632, -64, 150, -246, 722, -699, 251 ],
[ 17, -107, -8, 27, 63, -32, -87, -21 ],
[ -59, -16, -7, 3, -73, 120, -37, 51 ],
[ -58, 84, -32, -20, -93, 124, 64, 87 ],
[ -2, 220, 0, -55, -90, 4, 199, 18 ],
[ -188, -16, -32, 0, -256, 385, -82, 160 ],
[ -36, 260, 0, -65, -144, 72, 221, 57 ],
[ 3, -228, 0, 57, 94, -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/5, 49, -4/5, 0, 147, -292, -2611/5, 1799/10, 6, -2/5, 2, -373/2,
882, 0, 0, 16/5, -2, -2, 389/2, -59 ],
[ 539/10, -97/2, 78/5, 2, -283/2, 283, 3619/10, -2541/20, 15, 44/5, 2,
623/4, -849, 2, -5, -132/5, 0, 20, -623/4, 91/2 ],
[ -9, 1, -10, 1, 8, -17, -51, 17, -2, -4, 2, -16, 51, 1, 1, 12, -1,
-5, 15, -5 ],
[ -117/10, 5/2, -49/5, 1, 19/2, -18, -737/10, 503/20, 1, -22/5, 2,
-81/4, 55, 1, 0, 66/5, -1, -1, 85/4, -13/2 ],
[ 32, -2, 18, -2, -10, 16, 192, -64, -11, 8, -4, 49, -52, -2, 3, -26,
2, -10, -51, 17 ],
[ -30, 2, 6, 2, 10, -25, -162, 54, 11, 4, 4, -55, 73, 2, -2, -10, -2,
6, 48, -16 ],
[ 169/10, -19/2, 18/5, 0, -57/2, 55, 1159/10, -791/20, -4, 9/5, -1,
141/4, -169, 0, 0, -32/5, 2, 1, -161/4, 25/2 ],
[ 547/10, -57/2, 94/5, 0, -171/2, 166, 3657/10, -2493/20, -9, 47/5,
-2, 463/4, -507, 0, 0, -151/5, 5, 2, -507/4, 79/2 ],
[ 653/5, -41, 117/5, -1, -125, 248, 3958/5, -1326/5, -2, 56/5, -3,
257, -746, -2, 0, -173/5, 2, 2, -259, 85 ],
[ -87/5, 11, -28/5, 1, 23, -35, -652/5, 219/5, 1, -24/5, -1, -32, 111,
-2, -2, 72/5, 2, 10, 43, -14 ],
[ 10, 0, 0, 0, 0, 1, 57, -19, 0, 0, 0, 16, -2, -1, 0, 0, 0, 0, -15, 5 ]
, [ -2, 0, -8, 0, 0, 1, -12, 4, -3, -4, -1, -4, -4, 0, 0, 11, 1, 1,
3, -1 ],
[ -15, 1, -1, 1, 5, -11, -84, 28, 5, 0, 2, -26, 33, 1, -1, 1, -1, 3,
24, -8 ],
[ -66, 5, -5, 6, 24, -48, -396, 132, 15, 0, 7, -107, 144, 5, -5, 0, 0,
20, 107, -36 ],
[ 2139/5, -124, 236/5, -3, -381, 751, 13014/5, -4358/5, -20, 108/5,
-13, 814, -2267, -11, 1, -359/5, 10, 6, -832, 273 ],
[ -3, 1, -8, 1, 3, -3, -24, 8, -1, -4, 1, -3, 11, 0, 0, 12, 0, 0, 6,
-2 ],
[ 1241/5, -81, 234/5, -1, -248, 491, 7556/5, -2532/5, -3, 112/5, -3,
492, -1477, -3, 1, -341/5, 2, -2, -497, 163 ],
[ 6, 0, -8, 0, 0, -1, 39, -13, -3, -4, -1, 6, 1, -1, 0, 11, 1, 1, -9,
3 ],
[ -639/10, 97/2, -158/5, -2, 283/2, -281, -4249/10, 2961/20, -8,
-84/5, -3, -683/4, 843, -2, 2, 247/5, 0, -7, 683/4, -101/2 ],
[ -243/10, 97/2, -191/5, -5, 271/2, -268, -2003/10, 1487/20, -12,
-108/5, -5, -433/4, 807, -5, 5, 324/5, -3, -20, 445/4, -59/2 ] ],
[ [ -1561/10, -2/5, -134/5, 0, -26/5, 72/5, -852, 2699/10, 2, -67/5, 2,
-2431/10, -196/5, 0, 0, 211/5, -2, -2, 2451/10, -489/5 ],
[ 3529/20, -21/5, 53/5, 0, -63/5, 151/5, 981, -6261/20, 0, 53/10, 2,
5589/20, -428/5, -3, 0, -109/10, 0, -2, -5589/20, 1071/10 ],
[ -22, 0, 0, 0, 0, -2, -129, 43, 0, 0, 1, -32, 5, 2, 0, -1, 0, -2, 33,
-11 ],
[ 113/20, -7/5, 1/5, 0, -21/5, 47/5, 33, -217/20, 0, 1/10, 1, 233/20,
-136/5, 0, 0, 7/10, 0, -1, -213/20, 37/10 ],
[ -10, 0, 0, 0, 0, -1, -66, 22, 0, 0, -2, -15, 2, 1, 0, -3, 0, 2, 15,
-5 ],
[ 0, 0, 0, 0, -3, 6, 6, -2, 0, 0, 2, 0, -18, 0, 0, 2, 0, -2, 0, 0 ],
[ 519/20, 19/5, 48/5, 1, 77/5, -164/5, 130, -791/20, 2, 53/10, -1,
719/20, 482/5, 1, -1, -179/10, 1, 6, -739/20, 171/10 ],
[ 1517/20, 42/5, 104/5, 3, 176/5, -372/5, 378, -2293/20, 7, 119/10,
-2, 2177/20, 1096/5, 3, -3, -407/10, 2, 17, -2217/20, 503/10 ],
[ 1004/5, -64/5, 72/5, 0, -192/5, 374/5, 1101, -1751/5, 2, 36/5, -2,
1639/5, -1132/5, 0, -1, -118/5, 1, 6, -1644/5, 632/5 ],
[ -31/5, 1/5, -128/5, 0, 3/5, 29/5, -18, 9/5, -3, -64/5, 1, -76/5,
-77/5, -4, 0, 202/5, 0, 4, 66/5, -48/5 ],
[ 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 2, 0, 0, -1, 0, 0, 0, 0 ],
[ 2, 2, 8, 0, 8, -18, 12, -4, -1, 4, -1, 0, 52, 0, 0, -13, 1, 1, -1, 1
], [ 0, 0, 0, 0, -1, 2, 3, -1, 0, 0, 1, 0, -6, 0, 0, 1, 0, -1, 0, 0
],
[ -3, 0, 0, 1, -1, 7, -3, 1, 0, 0, 6, -5, -16, 0, 0, 5, 0, -5, 5, -2 ],
[ 3062/5, -157/5, 376/5, 0, -436/5, 737/5, 3384, -5388/5, 2, 188/5,
-10, 4877/5, -2346/5, 0, -3, -639/5, 7, 23, -4972/5, 1921/5 ],
[ 0, -1, -8, 0, -3, 7, 0, 0, -1, -4, 1, 1, -21, 0, 0, 12, 0, 0, -1, 0 ]
, [ 2008/5, -133/5, 104/5, 0, -409/5, 803/5, 2202, -3502/5, 2, 52/5,
-2, 3288/5, -2424/5, 0, -1, -171/5, 1, 7, -3293/5, 1264/5 ],
[ 2, 2, 8, 0, 8, -21, 18, -6, -1, 4, -1, -3, 58, 0, 0, -14, 1, 1, -1,
1 ],
[ -2629/20, 26/5, -8/5, -1, 78/5, -176/5, -708, 4441/20, -4, -13/10,
-3, -4269/20, 508/5, -1, 1, 19/10, 1, -2, 4249/20, -841/10 ],
[ -1923/20, -8/5, -36/5, -3, -54/5, 83/5, -501, 3067/20, -9, -51/10,
-5, -3003/20, -274/5, -3, 3, 133/10, 0, -10, 3003/20, -637/10 ] ],
[ [ -59, 10, -12, 0, 66, -154, -312, 104, 2, 0, 0, -120, 446, 6, -2, -8,
2, 4, 100, -30 ],
[ -114, 9, -3, 0, 31, -65, -648, 216, 5, 0, 7, -186, 195, 10, 5, 7,
-10, -30, 179, -57 ],
[ 27, -3, -6, 1, -14, 33, 150, -50, 2, -4, 1, 46, -97, -3, -3, 11, 3,
15, -43, 13 ],
[ -9, 0, -1, 0, 3, -7, -48, 16, 3, 0, 1, -15, 20, 1, -1, 0, 0, 3, 13,
-4 ],
[ 26, 0, 15, 0, 4, -15, 162, -54, -3, 8, -3, 34, 39, -2, -1, -27, 4,
6, -39, 13 ],
[ -70, 4, -17, 0, 12, -25, -396, 132, 5, -8, 5, -115, 75, 6, 3, 29,
-8, -18, 109, -35 ],
[ 42, -4, 13, 0, -26, 59, 232, -77, -1, 4, -2, 74, -172, -4, 0, -10,
1, 3, -67, 21 ],
[ 96, -7, 33, 0, -45, 100, 537, -178, -2, 12, -6, 162, -293, -9, -1,
-34, 4, 11, -151, 48 ],
[ 31, 0, 0, 1, 1, -3, 177, -59, -2, 0, -3, 47, 8, -3, -1, -2, 3, 7,
-46, 15 ],
[ -45, 3, 14, -5, 22, -57, -246, 82, -10, 9, -5, -74, 164, 6, 6, -28,
-3, -30, 68, -20 ],
[ 22, -2, 2, 0, -11, 25, 120, -40, -2, 0, -1, 39, -73, -2, 0, 0, 1, 2,
-35, 11 ],
[ 42, -5, 5, 0, -29, 68, 228, -76, -2, 0, -1, 78, -197, -4, 0, 2, 1,
3, -68, 21 ],
[ -24, 1, -8, 0, 2, -3, -138, 46, 2, -4, 2, -38, 10, 2, 1, 14, -3, -6,
37, -12 ],
[ -110, 5, -1, 0, 13, -28, -612, 204, 6, 0, 10, -182, 82, 10, 4, 9,
-9, -26, 170, -55 ],
[ 276, -25, 24, 2, -139, 318, 1506, -502, -16, 0, -19, 489, -926, -26,
-3, 1, 14, 38, -438, 137 ],
[ 3, -1, 0, -1, -2, 3, 18, -6, -2, 0, -1, 6, -10, 0, 0, -1, 1, 0, -6,
2 ],
[ 43, 1, -9, 1, 8, -20, 249, -83, -4, -4, -5, 62, 56, -4, -1, 8, 4, 8,
-63, 21 ],
[ 42, -6, 6, 0, -35, 81, 222, -74, -2, 0, -2, 81, -235, -4, 0, 2, 1,
4, -69, 21 ],
[ 78, -8, -2, 0, -40, 94, 423, -141, -4, -4, -3, 141, -272, -7, -1,
12, 3, 10, -124, 39 ],
[ 84, -8, -21, 0, -31, 74, 450, -150, -5, -12, -4, 153, -213, -7, -2,
32, 4, 15, -134, 43 ] ],
[ [ -15, 0, -36, 0, 8, -14, -90, 30, 2, -16, 2, -28, 42, 2, 2, 48, -6, -6,
24, -8 ],
[ 37, 1, 2, 5, 2, 2, 201, -67, 9, 0, -3, 54, -5, -5, -5, -6, 3, 28,
-53, 16 ],
[ -4, 0, 8, 0, -2, 5, -27, 9, 4, 4, 2, -2, -12, 0, -1, -9, 0, 2, 6, -2
],
[ 10, -1, -1, 1, 0, 0, 57, -19, 4, 0, 0, 16, 0, -1, -2, -1, 1, 9, -16,
5 ],
[ -63, 2, -2, -3, 9, -26, -345, 115, -5, 0, 3, -104, 73, 7, 5, 4, -5,
-26, 95, -30 ],
[ 45, -2, -19, 5, -19, 58, 222, -74, 7, -12, 1, 83, -162, -6, -4, 34,
1, 23, -67, 20 ],
[ 11, -1, 11, -1, -11, 24, 61, -20, -3, 4, 0, 22, -70, -1, 0, -10, 2,
-1, -18, 6 ],
[ 25, -3, 15, -3, -29, 65, 135, -44, -8, 4, 1, 52, -189, -2, 1, -6, 3,
-6, -42, 14 ],
[ -14, -1, -7, -2, -7, 13, -78, 26, -7, -4, 0, -20, -40, 2, 3, 14, -1,
-13, 19, -6 ],
[ 44, -3, -17, 0, 4, -13, 261, -87, -5, -7, -7, 61, 33, -3, -1, 12, 3,
11, -69, 22 ],
[ 0, 1, 7, 0, 6, -14, 0, 0, 0, 4, -1, -1, 41, 0, -1, -13, 2, 4, 1, 0 ],
[ 1, 0, 17, -1, -2, 1, 12, -4, -2, 8, -1, 2, -4, 0, 0, -23, 2, -2, -2,
1 ],
[ 24, -1, -6, 2, -8, 24, 123, -41, 3, -4, 0, 43, -67, -3, -2, 11, 1,
11, -36, 11 ],
[ 57, -3, -1, 5, -25, 72, 294, -98, 14, -4, 0, 103, -201, -7, -5, 13,
0, 27, -86, 26 ],
[ 31, -8, 44, -7, -60, 121, 177, -59, -36, 16, -3, 74, -359, -1, 7,
-40, 11, -32, -58, 19 ],
[ 12, -1, -1, 0, 0, -1, 69, -23, 1, 0, -1, 19, 3, -1, -1, -1, 1, 5,
-19, 6 ],
[ -14, -2, -30, -2, -14, 34, -90, 30, -10, -16, 1, -14, -99, 2, 4, 51,
-2, -16, 18, -6 ],
[ 20, -1, 18, 0, -8, 16, 114, -38, -3, 8, -1, 35, -47, -2, -1, -24, 4,
4, -31, 10 ],
[ -12, 1, 22, -2, 9, -30, -51, 17, -6, 12, -2, -25, 83, 2, 1, -37, 3,
-8, 19, -5 ],
[ -34, 3, 16, -2, 31, -86, -165, 55, -9, 12, -3, -69, 242, 5, 2, -42,
3, -13, 53, -15 ] ],
[ [ -71, 0, 58, -8, 20, -72, -348, 116, 4, 32, -2, -134, 194, 10, 0, -96,
2, -8, 104, -32 ],
[ -2, 9, 27, 2, 45, -103, 9, -3, 2, 16, -2, -23, 298, 0, -2, -50, 4,
7, 12, -2 ],
[ -43, -1, 15, 1, -5, 1, -237, 79, 5, 8, 2, -73, -9, 4, -1, -24, 0, 4,
64, -22 ],
[ -15, -1, 15, 0, -1, -5, -75, 25, 3, 8, 0, -28, 10, 2, -1, -24, 1, 4,
21, -7 ],
[ 52, -8, -9, -4, -42, 97, 285, -95, -10, -8, -2, 101, -282, -4, 4,
26, -2, -15, -88, 28 ],
[ -37, 6, 13, 1, 26, -61, -198, 66, -2, 8, 2, -71, 175, 4, 2, -23, -1,
-11, 62, -19 ],
[ 51, -2, -28, 3, -18, 53, 259, -86, -4, -16, 0, 94, -147, -6, 0, 47,
0, 5, -77, 24 ],
[ 117, -6, -55, 5, -44, 123, 600, -199, -10, -32, -1, 215, -344, -13,
0, 93, 1, 11, -179, 56 ],
[ 37, -4, -37, -3, -18, 48, 192, -64, -9, -20, -2, 75, -135, -3, 3,
59, -2, -12, -61, 20 ],
[ 77, -1, -4, 1, -2, 19, 429, -143, 5, -3, -1, 128, -45, -8, -4, 12,
3, 19, -116, 38 ],
[ -9, 0, -8, -1, 0, 0, -54, 18, -3, -4, -1, -12, 1, 1, 2, 12, -2, -9,
13, -4 ],
[ 29, -1, -22, 3, -10, 32, 141, -47, 0, -12, 0, 55, -87, -4, -1, 35,
0, 8, -43, 13 ],
[ -21, 3, 6, 1, 14, -33, -114, 38, 1, 4, 1, -40, 95, 2, 0, -12, 0, -1,
35, -11 ],
[ -10, 3, 84, 4, 20, -66, -24, 8, 5, 44, -4, -41, 178, 2, -4, -135, 9,
20, 20, -7 ],
[ 157, -13, -258, 1, -104, 309, 735, -245, -42, -140, 6, 347, -850,
-19, 20, 427, -25, -78, -248, 78 ],
[ -3, -1, 8, 1, -4, 7, -15, 5, 5, 4, 1, -6, -21, 0, -2, -11, 1, 9, 4,
-2 ],
[ 39, -7, -58, -7, -34, 87, 192, -64, -18, -32, -3, 91, -246, -2, 8,
97, -6, -34, -69, 23 ],
[ 15, 0, -37, 3, -11, 38, 60, -20, -3, -20, 3, 35, -102, -3, 2, 62,
-4, -7, -21, 6 ],
[ 16, -1, -53, 2, -14, 49, 57, -19, 0, -28, 3, 41, -131, -3, 1, 86,
-5, -3, -23, 7 ],
[ -40, 1, -78, -2, -6, 34, -252, 84, 1, -40, 8, -46, -85, 3, 5, 128,
-13, -28, 60, -18 ] ],
[ [ -456/5, 43, -164/5, 0, 125, -246, -2911/5, 1999/10, 2, -82/5, 2,
-409/2, 742, 0, 0, 256/5, -2, -2, 413/2, -65 ],
[ 1159/10, -101/2, 88/5, 0, -303/2, 308, 7399/10, -5061/20, 0, 44/5,
2, 1007/4, -919, -3, 0, -107/5, 0, -2, -1007/4, 155/2 ],
[ -22, 0, 0, 0, 0, -2, -129, 43, 0, 0, 1, -32, 5, 2, 0, -1, 0, -2, 33,
-11 ],
[ 13/10, 3/2, -4/5, 0, 9/2, -8, 43/10, -17/20, 0, -2/5, 1, 3/4, 25, 0,
0, 11/5, 0, -1, 1/4, 1/2 ],
[ -10, 0, 0, 0, 0, -1, -66, 22, 0, 0, -2, -15, 2, 1, 0, -3, 0, 2, 15,
-5 ],
[ 0, 0, 0, 0, -3, 6, 6, -2, 0, 0, 2, 0, -18, 0, 0, 2, 0, -2, 0, 0 ],
[ 79/10, -11/2, 53/5, 1, -25/2, 23, 499/10, -351/20, 2, 29/5, -1,
85/4, -71, 1, -1, -97/5, 1, 6, -89/4, 15/2 ],
[ 217/10, -39/2, 119/5, 3, -97/2, 93, 1377/10, -973/20, 7, 67/5, -2,
259/4, -283, 3, -3, -226/5, 2, 17, -267/4, 43/2 ],
[ 528/5, -40, 72/5, 0, -120, 238, 3193/5, -1071/5, 2, 36/5, -2, 219,
-716, 0, -1, -118/5, 1, 6, -220, 72 ],
[ 88/5, 7, -128/5, 0, 21, -35, 488/5, -161/5, -3, -64/5, 1, 12, 107,
-4, 0, 202/5, 0, 4, -14, 4 ],
[ 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 2, 0, 0, -1, 0, 0, 0, 0 ],
[ 2, 2, 8, 0, 8, -18, 12, -4, -1, 4, -1, 0, 52, 0, 0, -13, 1, 1, -1, 1
], [ 0, 0, 0, 0, -1, 2, 3, -1, 0, 0, 1, 0, -6, 0, 0, 1, 0, -1, 0, 0
],
[ -3, 0, 0, 1, -1, 7, -3, 1, 0, 0, 6, -5, -16, 0, 0, 5, 0, -5, 5, -2 ],
[ 1634/5, -113, 376/5, 0, -332, 637, 9984/5, -3348/5, 2, 188/5, -10,
649, -1938, 0, -3, -639/5, 7, 23, -668, 221 ],
[ 0, -1, -8, 0, -3, 7, 0, 0, -1, -4, 1, 1, -21, 0, 0, 12, 0, 0, -1, 0 ]
, [ 1056/5, -81, 104/5, 0, -245, 487, 6386/5, -2142/5, 2, 52/5, -2,
440, -1464, 0, -1, -171/5, 1, 7, -441, 144 ],
[ 2, 2, 8, 0, 8, -21, 18, -6, -1, 4, -1, -3, 58, 0, 0, -14, 1, 1, -1,
1 ],
[ -709/10, 103/2, -43/5, -1, 309/2, -313, -4669/10, 3241/20, -4,
-24/5, -3, -743/4, 935, -1, 1, 62/5, 1, -2, 739/4, -109/2 ],
[ -443/10, 101/2, -81/5, -3, 291/2, -296, -3173/10, 2267/20, -9,
-48/5, -5, -577/4, 883, -3, 3, 134/5, 0, -10, 577/4, -81/2 ] ],
[ [ -2121/10, 78/5, -114/5, 0, 414/5, -938/5, -1146, 3679/10, 2, -27/5, 0,
-3651/10, 2734/5, 6, -2, 41/5, 2, 4, 3451/10, -629/5 ],
[ 729/20, 19/5, 38/5, 0, 77/5, -169/5, 171, -861/20, 5, 53/10, 7,
1089/20, 507/5, 10, 5, -89/10, -10, -30, -1229/20, 371/10 ],
[ 27, -3, -6, 1, -14, 33, 150, -50, 2, -4, 1, 46, -97, -3, -3, 11, 3,
15, -43, 13 ],
[ -127/20, -2/5, -4/5, 0, 9/5, -23/5, -33, 223/20, 3, 1/10, 1,
-207/20, 64/5, 1, -1, -3/10, 0, 3, 167/20, -23/10 ],
[ 26, 0, 15, 0, 4, -15, 162, -54, -3, 8, -3, 34, 39, -2, -1, -27, 4,
6, -39, 13 ],
[ -70, 4, -17, 0, 12, -25, -396, 132, 5, -8, 5, -115, 75, 6, 3, 29,
-8, -18, 109, -35 ],
[ 1579/20, -26/5, 78/5, 0, -148/5, 331/5, 433, -2811/20, -1, 53/10,
-2, 2659/20, -968/5, -4, 0, -139/10, 1, 3, -2519/20, 441/10 ],
[ 4137/20, -53/5, 204/5, 0, -279/5, 608/5, 1140, -7373/20, -2, 159/10,
-6, 6777/20, -1789/5, -9, -1, -457/10, 4, 11, -6557/20, 1173/10 ],
[ 1159/5, -64/5, 72/5, 1, -187/5, 369/5, 1281, -2051/5, -2, 36/5, -3,
1879/5, -1112/5, -3, -1, -118/5, 3, 7, -1874/5, 707/5 ],
[ -476/5, 31/5, 52/5, -5, 158/5, -381/5, -522, 849/5, -10, 36/5, -5,
-781/5, 1108/5, 6, 6, -113/5, -3, -30, 751/5, -258/5 ],
[ 22, -2, 2, 0, -11, 25, 120, -40, -2, 0, -1, 39, -73, -2, 0, 0, 1, 2,
-35, 11 ],
[ 42, -5, 5, 0, -29, 68, 228, -76, -2, 0, -1, 78, -197, -4, 0, 2, 1,
3, -68, 21 ],
[ -24, 1, -8, 0, 2, -3, -138, 46, 2, -4, 2, -38, 10, 2, 1, 14, -3, -6,
37, -12 ],
[ -110, 5, -1, 0, 13, -28, -612, 204, 6, 0, 10, -182, 82, 10, 4, 9,
-9, -26, 170, -55 ],
[ 4392/5, -317/5, 336/5, 2, -1271/5, 2742/5, 4818, -7778/5, -16,
108/5, -19, 7377/5, -8086/5, -26, -3, -319/5, 14, 38, -7122/5,
2581/5 ],
[ 3, -1, 0, -1, -2, 3, 18, -6, -2, 0, -1, 6, -10, 0, 0, -1, 1, 0, -6,
2 ],
[ 2223/5, -123/5, 99/5, 1, -344/5, 668/5, 2457, -3927/5, -4, 52/5, -5,
3598/5, -2024/5, -4, -1, -176/5, 4, 8, -3603/5, 1369/5 ],
[ 42, -6, 6, 0, -35, 81, 222, -74, -2, 0, -2, 81, -235, -4, 0, 2, 1,
4, -69, 21 ],
[ -1449/20, -14/5, -63/5, 0, -122/5, 314/5, -396, 2361/20, -4, -93/10,
-3, -1989/20, -892/5, -7, -1, 279/10, 3, 10, 2329/20, -551/10 ],
[ -1223/20, -18/5, -156/5, 0, -89/5, 238/5, -339, 1987/20, -5,
-171/10, -4, -1563/20, -669/5, -7, -2, 473/10, 4, 15, 1943/20,
-477/10 ] ],
[ [ 97, -18, -62, -12, -64, 138, 546, -182, -32, -32, -2, 184, -408, -6,
4, 104, 6, -12, -168, 54 ],
[ 66, -3, 66, -8, -32, 64, 387, -129, -16, 28, -7, 123, -186, -6, 3,
-76, 7, -20, -107, 37 ],
[ -57, 5, -18, 3, 22, -47, -330, 110, 0, -8, 1, -102, 133, 5, 0, 19,
-1, 4, 92, -30 ],
[ 6, -1, 1, -1, -5, 10, 36, -12, -7, 0, -1, 11, -32, 0, 1, 0, 2, -3,
-11, 4 ],
[ 0, -2, -12, 2, 1, 2, -15, 5, 10, -4, 3, 5, -2, 0, -3, 12, -1, 14,
-1, -1 ],
[ 9, 1, 29, -3, -8, 18, 45, -15, -9, 12, -2, 27, -48, -1, 2, -32, 3,
-14, -14, 6 ],
[ -46, 9, 21, 6, 36, -76, -263, 88, 18, 12, 1, -90, 225, 3, -3, -40,
-3, 12, 81, -26 ],
[ -90, 18, 32, 12, 76, -159, -519, 174, 38, 20, 2, -178, 471, 6, -7,
-68, -6, 30, 159, -51 ],
[ 1, -2, -20, 1, 3, -6, 3, -1, 14, -8, 2, 3, 21, 0, -3, 24, -3, 12,
-3, 0 ],
[ 120, -10, 14, -6, -47, 103, 696, -232, -18, 5, -2, 207, -299, -10,
3, -8, 5, -14, -193, 63 ],
[ -26, 2, -10, 2, 12, -23, -153, 51, 9, -4, 1, -44, 70, 2, -2, 11, -2,
8, 42, -14 ],
[ -43, 7, 14, 5, 28, -60, -240, 80, 14, 8, 1, -84, 176, 3, -2, -28,
-3, 8, 74, -24 ],
[ -1, 1, 10, -1, -1, 2, -6, 2, -4, 4, -1, 1, -5, 0, 1, -11, 1, -6, 2,
0 ],
[ -13, 5, 81, -5, -3, 8, -81, 27, -13, 36, -9, -11, -24, 1, 0, -103,
11, -4, 22, -4 ],
[ -244, 26, -58, 32, 145, -301, -1407, 469, 113, -16, 20, -445, 904,
17, -18, 29, -30, 68, 408, -138 ],
[ 2, 0, -8, 0, -1, 3, 12, -4, -6, -4, 0, 1, -11, 0, 1, 11, 1, -2, -3,
1 ],
[ 5, -4, -47, 1, 3, 0, 15, -5, 20, -20, 5, 18, 10, 0, -5, 62, -4, 19,
-11, 2 ],
[ -59, 8, 5, 7, 33, -70, -336, 112, 17, 4, 3, -110, 207, 4, -2, -17,
-5, 7, 100, -33 ],
[ -39, 5, -12, 7, 26, -57, -213, 71, 16, -4, 5, -81, 167, 3, -1, 6,
-7, 4, 68, -23 ],
[ 9, -5, -60, 5, -7, 11, 63, -21, 4, -28, 10, 9, -33, 0, 3, 79, -10,
-13, -16, 3 ] ],
[ [ -446/5, 47, -254/5, 2, 141, -276, -2941/5, 2019/10, -2, -122/5, 6,
-401/2, 836, 0, 2, 376/5, -4, -8, 417/2, -65 ],
[ 1009/10, -95/2, 73/5, 5, -267/2, 267, 6379/10, -4381/20, 3, 44/5, 0,
883/4, -804, -2, -3, -157/5, 3, 17, -895/4, 135/2 ],
[ 11, -2, -6, -1, -12, 24, 60, -20, -6, -4, 0, 22, -70, -1, 3, 12, -2,
-13, -19, 6 ],
[ 133/10, 1/2, -4/5, 0, 3/2, -6, 793/10, -517/20, -3, -2/5, 0, 67/4,
16, -1, 1, 1/5, 0, -4, -75/4, 13/2 ],
[ -17, -1, 1, -3, -6, 14, -96, 32, 3, 0, 0, -22, -39, 2, 1, 5, -3, -7,
23, -7 ],
[ 18, -3, -24, 2, -9, 25, 84, -28, 2, -12, 0, 35, -71, -2, -3, 32, 2,
17, -29, 8 ],
[ 329/10, -21/2, 108/5, -2, -69/2, 68, 2059/10, -1391/20, 1, 49/5, -3,
261/4, -206, -1, -1, -147/5, 2, 4, -265/4, 43/2 ],
[ 977/10, -65/2, 239/5, -5, -213/2, 213, 6027/10, -4073/20, 2, 107/5,
-6, 795/4, -641, -3, -2, -316/5, 4, 8, -791/4, 127/2 ],
[ 473/5, -40, 32/5, -1, -120, 246, 2848/5, -956/5, 6, 16/5, 0, 209,
-733, 1, -2, -33/5, 0, 7, -204, 67 ],
[ -92/5, 14, 52/5, 2, 54, -117, -457/5, 154/5, 3, 36/5, 0, -60, 341,
-1, -3, -123/5, 4, 14, 48, -15 ],
[ -12, 1, -1, 0, 6, -12, -72, 24, 3, 0, 0, -18, 37, 1, -1, 0, 0, 3,
19, -6 ],
[ 1, 1, 17, -1, 2, -7, 15, -5, 0, 8, -2, -2, 18, 0, 0, -24, 1, -1, -1,
1 ],
[ 9, -1, -8, 1, -3, 8, 45, -15, 0, -4, 0, 16, -23, -1, -1, 10, 1, 6,
-14, 4 ],
[ 65, -2, -7, 5, -9, 20, 366, -122, -1, -4, 0, 100, -58, -7, 0, 7, 0,
6, -97, 30 ],
[ 1404/5, -118, 241/5, -8, -357, 731, 8499/5, -2853/5, 19, 108/5, -11,
622, -2183, 3, -10, -289/5, 7, 36, -608, 202 ],
[ 10, 0, 0, 0, 0, -3, 63, -21, -3, 0, 0, 13, 7, -1, 1, -1, 0, -4, -15,
5 ],
[ 1006/5, -82, 24/5, -2, -246, 503, 6041/5, -2027/5, 11, 12/5, 0, 438,
-1499, 1, -4, -11/5, 0, 15, -428, 140 ],
[ -1, 1, 9, -1, 3, -7, -3, 1, 0, 4, -3, -3, 19, 0, -1, -13, 2, 4, 2, 0
], [ -1159/10, 107/2, -8/5, -2, 325/2, -330, -7129/10, 4881/20, 0,
-4/5, -2, -1039/4, 985, 3, 0, 17/5, 1, -3, 1015/4, -153/2 ],
[ -1673/10, 119/2, -111/5, -2, 375/2, -381, -10163/10, 6927/20, 0,
-48/5, 0, -1389/4, 1137, 8, 0, 154/5, 0, -5, 1353/4, -205/2 ] ],
[ [ -1481/10, 28/5, 26/5, 0, 84/5, -198/5, -810, 2559/10, 2, 13/5, 0,
-2371/10, 574/5, 0, 0, -39/5, 0, 0, 2391/10, -469/5 ],
[ 3189/20, -36/5, 53/5, -3, -108/5, 201/5, 873, -5541/20, 0, 53/10, 2,
5169/20, -603/5, 0, 0, -159/10, 0, 0, -5169/20, 1001/10 ],
[ -5, 2, -1, 3, 8, -14, -33, 11, 3, 0, 1, -11, 42, 0, -1, -1, 0, 5,
11, -4 ],
[ 153/20, -12/5, 1/5, 0, -36/5, 72/5, 45, -297/20, 0, 1/10, 1, 293/20,
-216/5, 0, 0, -3/10, 0, 0, -293/20, 47/10 ],
[ -7, 3, 0, 1, 11, -21, -42, 14, 0, 0, -2, -14, 63, 0, 0, 0, 0, 0, 14,
-4 ],
[ 4, -2, 0, 0, -8, 13, 33, -11, 0, 0, 2, 5, -42, 0, 0, 0, 0, 0, -8, 2 ]
, [ 599/20, 4/5, -27/5, 1, 12/5, -9/5, 160, -991/20, -1, -27/10, 0,
899/20, 37/5, 0, 0, 81/10, 0, 0, -919/20, 191/10 ],
[ 1837/20, 12/5, -41/5, 3, 36/5, -42/5, 489, -3033/20, -2, -41/10, 0,
2777/20, 146/5, 0, 0, 123/10, 0, 0, -2817/20, 583/10 ],
[ 984/5, -59/5, 32/5, 0, -172/5, 334/5, 1086, -1726/5, 0, 16/5, -2,
1594/5, -1012/5, 0, 0, -48/5, 0, 0, -1609/5, 622/5 ],
[ -171/5, -4/5, 122/5, -6, -32/5, 29/5, -174, 269/5, -9, 56/5, -2,
-256/5, -102/5, 0, 2, -158/5, 3, -10, 256/5, -103/5 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ -2, 0, -8, 0, 0, 3, -12, 4, -1, -4, 0, -3, -7, 0, 0, 12, 0, 0, 3, -1
],
[ 2, -1, 0, 0, -4, 7, 15, -5, 0, 0, 1, 3, -22, 0, 0, 0, 0, 0, -4, 1 ],
[ -3, 1, -1, 1, 5, -10, -18, 6, 3, 0, 6, -6, 30, 1, -1, 0, 0, 4, 6, -2
],
[ 2902/5, -177/5, 96/5, 0, -516/5, 1042/5, 3213, -5103/5, 4, 48/5,
-10, 4687/5, -3136/5, 0, -4, -139/5, 4, 15, -4752/5, 1841/5 ],
[ 2, 0, 8, 0, 0, -1, 12, -4, -1, 4, 0, 3, 2, 0, 0, -12, 1, 0, -3, 1 ],
[ 1978/5, -123/5, 64/5, 0, -364/5, 713/5, 2181, -3467/5, 0, 32/5, -3,
3218/5, -2154/5, 0, 0, -91/5, 0, 0, -3238/5, 1249/5 ],
[ -2, 0, 0, 0, 0, 2, -9, 3, 1, 0, -1, -4, -5, 0, -1, 0, 1, 4, 3, -1 ],
[ -2949/20, 16/5, -93/5, -1, 48/5, -81/5, -801, 5061/20, -1, -93/10,
-2, -4689/20, 253/5, 0, 0, 279/10, 0, 0, 4689/20, -921/10 ],
[ -2603/20, -8/5, -51/5, -3, -24/5, 48/5, -699, 4387/20, 0, -51/10,
-5, -4023/20, -144/5, 0, 0, 153/10, 0, 0, 4023/20, -807/10 ] ],
[ [ -19, -4, -50, 0, -8, 16, -114, 38, -2, -24, 0, -30, -52, 2, 0, 68, -2,
4, 26, -10 ],
[ -69, 11, -5, 5, 48, -102, -405, 135, 12, 0, 0, -122, 303, 5, -2, -5,
-3, 8, 116, -37 ],
[ 14, -3, 1, -2, -12, 27, 81, -27, -1, 0, 0, 29, -79, -1, -1, 2, 2, 3,
-25, 8 ],
[ -7, 0, -1, 0, 3, -6, -42, 14, 3, 0, 0, -10, 18, 1, -1, 0, 0, 4, 10,
-3 ],
[ 37, -4, 3, -1, -21, 44, 219, -73, -8, 0, 0, 60, -133, -3, 2, 1, 1,
-6, -60, 19 ],
[ -24, 2, -2, 0, 15, -36, -126, 42, 6, 0, 0, -45, 104, 2, -2, -3, 0,
6, 38, -12 ],
[ 22, 2, 25, 0, 4, -8, 130, -43, -1, 12, 0, 32, 25, -2, 0, -34, 2, -1,
-31, 11 ],
[ 56, 4, 50, 0, 8, -16, 330, -109, -4, 24, 0, 81, 49, -5, 0, -68, 5,
-1, -80, 28 ],
[ 25, -3, -6, -1, -15, 29, 150, -50, -8, -4, 0, 40, -89, -2, 2, 12, 1,
-7, -41, 13 ],
[ -58, 6, -3, 4, 30, -66, -342, 114, 11, 1, 0, -103, 194, 5, -1, -7,
-4, 6, 95, -31 ],
[ 1, -1, 1, -1, -6, 12, 9, -3, -3, 0, 0, 3, -36, 0, 1, 1, 0, -5, -3, 1
],
[ 10, 1, 17, 0, 0, 2, 54, -18, 0, 8, 0, 18, -3, -1, 0, -22, 1, -1,
-14, 5 ],
[ -12, 1, -1, 0, 7, -16, -66, 22, 3, 0, 0, -21, 47, 1, -1, -1, 0, 3,
19, -6 ],
[ -65, 10, -6, 5, 48, -97, -390, 130, 16, 0, -1, -111, 290, 5, -6, -6,
1, 25, 110, -35 ],
[ 132, -11, 51, -8, -65, 127, 792, -264, -26, 20, -1, 217, -380, -11,
6, -52, 8, -28, -213, 70 ],
[ -10, 0, -1, 0, 2, -4, -60, 20, 3, 0, 0, -15, 12, 1, -1, 0, 0, 4, 15,
-5 ],
[ 38, -5, -13, -2, -23, 42, 234, -78, -13, -8, -1, 58, -132, -3, 3,
23, 2, -10, -63, 20 ],
[ 11, 0, 17, -1, -3, 6, 66, -22, 0, 8, 0, 19, -16, -1, 0, -22, 1, -2,
-17, 6 ],
[ 28, -3, 19, -2, -18, 38, 162, -54, -4, 8, 0, 50, -110, -2, 2, -20,
0, -10, -45, 15 ],
[ 39, -10, 5, -5, -45, 90, 234, -78, -9, 0, 0, 74, -267, -2, 5, 5, -3,
-23, -71, 23 ] ] ];
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, -128, 32, 24, -452, 798, -293, 349 ],
[ 3, 37, 20, -9, 5, -11, 29, 7 ],
[ -67, 56, 5, -15, -105, 133, 21, 65 ],
[ -114, 660, 80, -164, -325, 208, 528, 199 ],
[ -2, 220, 0, -55, -90, 4, 199, 18 ],
[ -213, 236, 16, -63, -359, 423, 121, 209 ],
[ -36, 260, 0, -65, -144, 72, 221, 57 ],
[ 3, -228, 0, 57, 94, -6, -206, -20 ] ],
[ [ -446, 1144, -64, -288, -1114, 910, 833, 407 ],
[ -9, 37, -4, -9, -31, 19, 29, 7 ],
[ -125, 155, -7, -39, -223, 252, 77, 113 ],
[ -510, 428, -16, -106, -779, 1024, 104, 457 ],
[ -108, 28, 0, -7, -134, 216, -35, 96 ],
[ -407, 608, -32, -153, -781, 823, 347, 367 ],
[ -190, 92, 0, -23, -254, 380, -23, 171 ],
[ 159, 12, 0, -3, 176, -318, 98, -140 ] ],
[ [ -621, 2704, -64, -684, -1991, 1260, 2143, 599 ],
[ 17, -107, -8, 27, 63, -32, -87, -21 ],
[ -1, 248, -7, -63, -117, 4, 225, 3 ],
[ 856, -1252, -32, 314, 1560, -1704, -694, -819 ],
[ 194, -408, 0, 102, 411, -388, -268, -186 ],
[ -14, 776, -32, -198, -388, 37, 704, 16 ],
[ 322, -444, 0, 111, 581, -644, -237, -303 ],
[ -222, 480, 0, -120, -476, 444, 319, 214 ] ],
[ [ 751, 1404, 0, -351, 316, -1500, 1588, -669 ],
[ 0, 1, 0, 0, 0, 0, 0, 0 ], [ 36, 48, 1, -12, 28, -72, 58, -30 ],
[ -609, -1316, 0, 330, -135, 1218, -1457, 564 ],
[ -184, -380, 0, 95, -53, 368, -423, 168 ],
[ 108, 144, 0, -36, 84, -215, 174, -90 ],
[ -267, -568, 0, 142, -66, 534, -629, 246 ],
[ 200, 420, 0, -105, 55, -400, 466, -182 ] ],
[ [ -127, 2424, 0, -606, -1351, 256, 2117, 75 ],
[ 0, 1, 0, 0, 0, 0, 0, 0 ], [ 4, 0, 1, 0, 2, -8, 2, -6 ],
[ 208, -2844, 0, 712, 1634, -416, -2456, -159 ],
[ 50, -808, 0, 202, 455, -100, -702, -36 ],
[ 12, 0, 0, 0, 6, -23, 6, -18 ],
[ 84, -1220, 0, 305, 695, -168, -1055, -63 ],
[ -54, 936, 0, -234, -520, 108, 815, 40 ] ],
[ [ -402, -128, 32, 24, -452, 798, -293, 349 ],
[ 3, 37, 20, -9, 5, -11, 29, 7 ],
[ -67, 56, 5, -15, -105, 133, 21, 65 ],
[ -114, 660, 80, -164, -325, 208, 528, 199 ],
[ -2, 220, 0, -55, -90, 4, 199, 18 ],
[ -213, 236, 16, -63, -359, 423, 121, 209 ],
[ -36, 260, 0, -65, -144, 72, 221, 57 ],
[ 3, -228, 0, 57, 94, -6, -206, -20 ] ],
[ [ -611, 600, 0, -150, -979, 1224, 257, 615 ], [ 0, 1, 0, 0, 0, 0, 0, 0 ],
[ -276, -1536, 1, 384, 338, 552, -1510, 210 ],
[ -1604, -13100, 0, 3276, 3766, 3208, -12532, 1065 ],
[ -302, -3016, 0, 754, 947, 604, -2854, 180 ],
[ -828, -4608, 0, 1152, 1014, 1657, -4530, 630 ],
[ -608, -5252, 0, 1313, 1551, 1216, -5007, 393 ],
[ 422, 3960, 0, -990, -1212, -844, 3759, -260 ] ],
[ [ 7, 2628, -992, -657, -2051, 236, 2575, -430 ],
[ -21, 37, -28, -9, -67, 49, 29, 7 ],
[ -131, 324, -123, -81, -435, 293, 261, 57 ],
[ -1520, -540, -112, 136, -1868, 3068, -1127, 1264 ],
[ -316, -168, 0, 42, -347, 632, -288, 270 ],
[ -483, 1116, -496, -279, -1591, 1091, 899, 199 ],
[ -566, -276, 0, 69, -630, 1132, -494, 486 ],
[ 342, 60, 0, -15, 441, -684, 201, -287 ] ],
[ [ -562, 440, -64, -120, -996, 1142, 171, 461 ],
[ 22, -143, -12, 36, 82, -41, -116, -28 ],
[ -87, 127, -7, -33, -173, 176, 79, 79 ],
[ -38, -60, -48, 16, -17, 88, -52, 59 ],
[ -2, 220, 0, -55, -90, 4, 199, 18 ],
[ -293, 520, -32, -135, -631, 595, 353, 265 ],
[ -36, 260, 0, -65, -144, 72, 221, 57 ],
[ 3, -228, 0, 57, 94, -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, -4, 1, 2 ],
[ 0, 1, 5, 1 ],
[ 0, 0, 1, 3 ],
[ 0, 0, 0, 1 ] ]
,
[ [ 1, -1, -2, 4 ],
[ 0, 1, -1, 1 ],
[ 0, 0, 1, 1 ],
[ 0, 0, 0, 1 ] ]
,
[ [ 1, -4, -2, 1 ],
[ 0, 1, -2, -3 ],
[ 0, 0, 1, 2 ],
[ 0, 0, 0, 1 ] ]
]);
fi;
if n=2 then
return Group(
[ [ [ 1, 5, -3, 1, -3 ],
[ 0, 1, 2, 0, 1 ],
[ 0, 0, 1, 2, -2 ],
[ 0, 0, 0, 1, -2 ],
[ 0, 0, 0, 0, 1 ] ]
,
[ [ 1, 3, -3, -1, 1 ],
[ 0, 1, 0, -2, 2 ],
[ 0, 0, 1, 4, 1 ],
[ 0, 0, 0, 1, -1 ],
[ 0, 0, 0, 0, 1 ] ]
]);
fi;
if n=3 then
return Group(
[ [ [ 73/10, -35/2, 42/5, 63/2 ],
[ 27/20, -11/4, 9/5, 27/4 ],
[ -3/5, 1, -4/5, -9 ],
[ -11/20, 7/4, -2/5, 1/4 ] ]
,
[ [ -42/5, 423/10, 27/5, 479/10 ],
[ -23/10, 227/20, 13/10, 231/20 ],
[ 14/5, -63/5, -4/5, -79/5 ],
[ -1/10, 9/20, 1/10, 37/20 ] ]
]);
fi;
if n=4 then
return Group(
[ [ [ 5, 2, -8, 17, -1 ],
[ -69/4, -15/4, 449/20, -163/5, 53/20 ],
[ -2, 4, 9/5, 63/5, 3/5 ],
[ 13/4, 3/4, -121/20, 57/5, -17/20 ],
[ 241/4, 7/4, -1477/20, 319/5, -189/20 ] ]
,
[ [ 19/2, 0, -3, -19/2, -1/2 ],
[ -74/5, 129/20, 7/4, 159/4, 9/10 ],
[ 53/10, 4/5, -4, 9/2, -9/10 ],
[ 37/10, -41/20, -7/4, -29/4, -3/5 ],
[ 137/5, -457/20, 37/4, -559/4, 3/10 ] ]
]);
fi;
if n in [5..8] then
return MatExamples( n-4 );
fi;
if n=9 then
return POL_AlmostCrystallographicGroup( 3, 17, [1,0,-3,7] );
fi;
if n=10 then
return POL_AlmostCrystallographicGroup( 3, 16, [3,4,-1,0] );
fi;
if n=11 then
return POL_AlmostCrystallographicGroup( 3, 15, [-1,1,0,0] );
fi;
if n=12 then
return POL_AlmostCrystallographicGroup( 3, 14, [-2,-1,2,-1] );
fi;
if n=13 then
return POL_AlmostCrystallographicGroup( 4, 2, [0,-3,-2,1,-1,-2,4] );
fi;
if n=14 then
return POL_AlmostCrystallographicGroup( 4, 13, [-2,0,-2,-2,-1,-1] );
fi;
if n=15 then
return POL_AlmostCrystallographicGroup( 4, 37, [ 1,2,0,-3,-4] );
fi;
if n=16 then
return POL_AlmostCrystallographicGroup( 4, 86,[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( 8, 3 );
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/4, 5/4, -4/3 ], [ 1, 0, 1 ], [ 0, -5/3, -1 ] ],
[ [ 2, 3/5, 4 ], [ 2/3, 0, 1 ], [ 5/3, 0, 1/2 ] ] ];
return Group( gens );
fi;
if n = 1203 then
gens := [ [ [ 2, 4/3, 1/2, 1/2 ], [ -2, -1/2, -1/4, 1 ],
[ -1/2, 0, 0, 3/2 ],
[ 0, 1/3, 0, 3/2 ] ],
[ [ 2, 2, 1, 2 ], [ -2/5, 3/2, 0, -1/2 ], [ -3/2, 0, 1/3, 4 ],
[ -1/4, 0, -3, 0 ] ] ];
return Group( gens );
fi;
if n = 1204 then
gens := [ [ [ 3, 1, 3, -1 ],
[ 2, -1, 1, 1 ],
[ -1, 0, 1, 3 ], [ 1, 1, -1, 0 ] ],
[ [ 0, -3, -1, 2 ], [ -3, -3, 0, -1 ], [ -1, -2, -1, 0 ],
[ 1, -1, 2, -5 ] ] ];
return Group( gens );
fi;
if n= 1205 then
gens := [ [ [ -7/3, 77/3, 0, 0, 1, 0 ],
[ -77/3, 994/3, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, -28/3 ], [ 0, 0, 2/3, 0, 0, 22/3 ],
[ 0, 0, 0, 2/3, 0, -10/3 ], [ 0, 0, 0, 0, 2/3, -2 ]
],
[ [ 1/3, 8/3, 0, 0, 0, 0 ], [ -8/3, 35, 0, 1, 0, 0 ],
[ 0, 0, 0, 0, 0, -28/3 ], [ 0, 0, 2/3, 0, 0, 22/3 ],
[ 0, 0, 0, 2/3, 0, -10/3 ],
[ 0, 0, 0, 0, 2/3, -2 ]] ];
return Group( gens );
fi;
if n = 1206 then
gens := [ [ [ -6, -1/2, 3/4, -5/3 ], [ 0, -3, 3, -3/2 ],
[ 0, 0, 1/3, -4/7 ],
[ 0, 0, 0, 1 ] ],
[ [ 7/4, 2, 1/2, -5/3 ], [ 0, 5/6, -6, 1 ], [ 0, 0, 3, 2/7 ],
[ 0, 0, 0, 2/3 ] ] ];
return Group( gens );
fi;
if n = 1207 then
gens := [ [ [ 1, 5/7, 3/4, -5, 2/5 ],
[ 0, -1, 3/2, 2, 4/7 ], [ 0, 0, 2/3, 1, -7/5 ],
[ 0, 0, 0, 1/5, 4/7 ], [ 0, 0, 0, 0, 2/5 ] ],
[ [ 2, -2/7, -4/7, 1, 3/7 ], [ 0, -1/5, -1/3, 1, 1/2 ],
[ 0, 0, -4/3, -3, 2 ], [ 0, 0, 0, 7, -1/6 ],
[ 0, 0, 0, 0, -2 ] ] ];
return Group( gens );
fi;
if n = 1208 then
gens := [ [ [ 3/2, -3, -4/5, 1/3, -3, -5/6, 4, 5/3 ],
[ 0, -1, 5/7, -1/2, 3/7, -1/3, -4/5, 1/2 ],
[ 0, 0, -1/4, 3/5, 5/2, -1/6, -1, 1 ],
[ 0, 0, 0, 1/5, 7/4, -2, -7/4, -1 ],
[ 0, 0, 0, 0, 5/3, -5/2, -1, -1/6 ],
[ 0, 0, 0, 0, 0, -1, 5/2, -1 ],
[ 0, 0, 0, 0, 0, 0, 3, 1 ],
[ 0, 0, 0, 0, 0, 0, 0, -2/7 ] ],
[ [ 3/2, 1, -3/2, 1, -1, -2/5, 1/5, -1 ],
[ 0, 1, 4/7, 1, -3/5, -5/7, 5/2, 3 ],
[ 0, 0, -1/3, 1, 3/2, -4/3, 3/2, 2/3 ],
[ 0, 0, 0, 3, -3, -7/5, 5/2, 1/2 ],
[ 0, 0, 0, 0, 3/5, -2, 4/3, 1 ],
[ 0, 0, 0, 0, 0, -2, 3, 3 ],
[ 0, 0, 0, 0, 0, 0, -1/2, -1/2 ],
[ 0, 0, 0, 0, 0, 0, 0, 5/3 ] ] ];
return Group( gens );
fi;
if n = 1209 then
gens := [ [ [ 5/6, -2, 1, 4, -1, 2 ], [ 2/3, -19/6, -1, 4, -3, 0 ],
[ 0, 0, 5/6, -2, -1, -2 ], [ 0, 0, 2/3, -19/6, 0, -3 ],
[ 0, 0, 0, 0, 5/6, -2 ], [ 0, 0, 0, 0, 2/3, -19/6 ] ],
[ [ -1/2, -12/5, 3, -1, 1, -2 ], [ 4/5, -53/10, -2, -4, -2, 1 ],
[ 0, 0, -1/2, -12/5, -2, -4 ], [ 0, 0, 4/5, -53/10, 2, 3 ],
[ 0, 0, 0, 0, -1/2, -12/5 ], [ 0, 0, 0, 0, 4/5, -53/10 ] ],
[ [ 4733/600, -2037/50, -2, -1, 4, -2 ], [ 679/50, -8831/120, 0, 0, -3, -2 ],
[ 0, 0, 4733/600, -2037/50, 0, 2 ], [ 0, 0, 679/50, -8831/120, 4, 1 ],
[ 0, 0, 0, 0, 4733/600, -2037/50 ], [ 0, 0, 0, 0, 679/50, -8831/120 ] ],
[ [ 1, 0, -3, -2, -2, -4 ], [ 0, 1, 3, 2, 1, 3 ], [ 0, 0, 1, 0, -2, 1 ],
[ 0, 0, 0, 1, 2, 0 ], [ 0, 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 0, 1 ] ] ];
return Group( gens );
fi;
if n = 1210 then
# takes 6 minutes to test polycyclicity
gens := [ [ [ 63/20, -5/2, 121/2, -1475, -5, 1, 1, 1 ],
[ 0, -237/20, 721/2, -17579/2, 1, -3, 2, -2 ],
[ 2/5, -15/2, 3393/20, -8129/2, 1, -1, 1, -1 ],
[ 1/2, -121/10, 295, -144107/20, -3, -1, 0, 0 ],
[ 0, 0, 0, 0, 63/20, -5/2, 121/2, -1475 ],
[ 0, 0, 0, 0, 0, -237/20, 721/2, -17579/2 ],
[ 0, 0, 0, 0, 2/5, -15/2, 3393/20, -8129/2 ],
[ 0, 0, 0, 0, 1/2, -121/10, 295, -144107/20 ] ],
[ [ -281351/400, 34831/2, -8511437/20, 20798633/2, 3, 0, -2, 0 ],
[ -85011/20, 41515849/400, -12680078/5, 1239406543/20, -1, 0, -1, 1 ],
[ -196313/100, 959919/20, -469170371/400, 286619339/10, -1, -4, 1, 1 ],
[ -34831/10, 8511437/100, -20798633/10, 20329462629/400, 1, -2, 4, -2 ],
[ 0, 0, 0, 0, -281351/400, 34831/2, -8511437/20, 20798633/2 ],
[ 0, 0, 0, 0, -85011/20, 41515849/400, -12680078/5, 1239406543/20 ],
[ 0, 0, 0, 0, -196313/100, 959919/20, -469170371/400, 286619339/10 ],
[ 0, 0, 0, 0, -34831/10, 8511437/100, -20798633/10, 20329462629/400 ] ],
[ [ -5, -3, 75, -3665/2, 1, 0, -1, -2 ], [ 1/2, -23, 447, -10920, 0, -3, 1, 2 ],
[ 0, -17/2, 202, -10101/2, -3, -1, 0, 1 ],
[ 3/5, -15, 733/2, -17921/2, 0, 1, 2, 3 ],
[ 0, 0, 0, 0, -5, -3, 75, -3665/2 ], [ 0, 0, 0, 0, 1/2, -23, 447, -10920 ],
[ 0, 0, 0, 0, 0, -17/2, 202, -10101/2 ],
[ 0, 0, 0, 0, 3/5, -15, 733/2, -17921/2 ] ],
[ [ -50, -30, 750, -18325, 3, -2, 0, 2 ], [ 5, -230, 4470, -109200, 0, 1, 5, 3 ],
[ 0, -85, 2020, -50505, 3, 0, 1, 4 ], [ 6, -150, 3665, -89605, 2, -3, 1, -1 ]
, [ 0, 0, 0, 0, -50, -30, 750, -18325 ],
[ 0, 0, 0, 0, 5, -230, 4470, -109200 ], [ 0, 0, 0, 0, 0, -85, 2020, -50505 ],
[ 0, 0, 0, 0, 6, -150, 3665, -89605 ] ] ];
return Group( gens );
fi;
###############################################################
# some easy examples
if n = -1 then
g := 2*IdentityMat( 2, 1 );
gens := [g];
return Group( gens );
fi;
if n = -2 then
g := 2*IdentityMat( 3, 1 );
gens := [g];
return Group( gens );
fi;
if n = -3 then
g := 1345*IdentityMat( 5, 1 );
gens := [g];
return Group( gens );
fi;
if n = -4 then
g := 23* IdentityMat( 5, 1 );
h := 12* IdentityMat( 5, 1 );
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/5, 0, 56, -168 ], [ 0, -21/5, -44, 188 ],
[ -4, 0, 79/5, -104 ],
[ 0, -4, 12, -101/5 ] ],
[ [ -1/2, 0, 434/5, -1302/5 ], [ 0, -1/2, -341/5, 1457/5 ],
[ -31/5, 0, 61/2, -806/5 ], [ 0, -31/5, 93/5, -253/10 ] ],
[ [ -5/6, 0, 14/5, -77/5 ], [ 1/2, -5/6, -11/5, 149/10 ],
[ -1/5, 1/2, 1/6, -77/10 ], [ 0, -1/5, 11/10, -47/15 ] ] ];
return Group( gens );
fi;
if n = - 10 then
gens := [ [ [ -37/20, 0, 0, -70/3 ], [ 5/3, -37/20, 0, 55/3 ],
[ 0, 5/3, -37/20, -25/3 ], [ 0, 0, 5/3, -137/20 ] ],
[ [ 3/4, 0, 0, -56 ], [ 4, 3/4, 0, 44 ], [ 0, 4, 3/4, -20 ],
[ 0, 0, 4, -45/4 ] ],
[ [ 7/2, 0, 28, -84 ], [ 0, 7/2, -22, 94 ],
[ -2, 0, 27/2, -52 ],
[ 0, -2, 6, -9/2 ] ] ];
return Group( gens );
fi;
if n = -11 then
gens := [ [ [ -1, 185/12 ], [ -185/12, 2393/12 ] ],
[ [ -1/2, -24 ], [ 24, -625/2 ] ]
, [ [ 1/3, -1/2 ], [ 1/2, -37/6 ] ] ];
return( Group(gens ) );
fi;
if n = -12 then
gens := [ [ [ 0, 0, 0, 0, 0, 119/6 ],
[ -17/12, 0, 0, 0, 0, -187/12 ],
[ 0, -17/12, 0, 0, 0, 0 ], [ 0, 0, -17/12, 0, 0, -17 ],
[ 0, 0, 0, -17/12, 0, 0 ], [ 0, 0, 0, 0, -17/12, 85/12 ] ],
[ [ 0, 0, 0, 0, 196/15, -238/3 ],
[ 1, 0, 0, 0, -154/15, 377/5 ],
[ -14/15, 1, 0, 0, 0, -154/15 ],
[ 0, -14/15, 1, 0, -56/5, 68 ],
[ 0, 0, -14/15, 1, 0, -56/5 ],
[ 0, 0, 0, -14/15, 17/3, -85/3 ] ],
[ [ 2, 0, 0, 0, -84/5, 98 ], [ -1, 2, 0, 0, 66/5, -469/5 ],
[ 6/5, -1, 2, 0, 0, 66/5 ], [ 0, 6/5, -1, 2, 72/5, -84 ],
[ 0, 0, 6/5, -1, 2, 72/5 ], [ 0, 0, 0, 6/5, -7, 37 ] ] ];
return Group( gens );
fi;
##################################################################
# some triangularizable examples
if n = -13 then
gens := [ [ [ 9/10, 39/10, 0, 0 ], [ -39/10, 258/5, 0, 0 ],
[ 0, 0, 4, -39 ],
[ 0, 0, 39, -503 ] ],
[ [ 9/10, 39/10, 0, 0 ], [ -39/10, 258/5, 0, 0 ],
[ 0, 0, 4, -39 ],
[ 0, 0, 39, -503 ] ] ];
return Group( gens );
fi;
if n = -14 then
gens := [ [ [ 7, 6, 0, 0 ], [ -6, 85, 0, 0 ],
[ 0, 0, 0, 5 ], [ 0, 0, -5, 65 ] ],
[ [ -7, 78, 0, 0 ], [ -78, 1007, 0, 0 ], [ 0, 0, -6, 81 ],
[ 0, 0, -81, 1047 ] ] ];
return Group( gens );
fi;
if n = -15 then
gens := [ [ [ -9, 36, 0, 0, 0 ], [ -12, 63, 0, 0, 0 ],
[ 0, 0, -1, 6, 0 ],
[ 0, 0, 0, 5, 6 ], [ 0, 0, -3, 0, 5 ] ],
[ [ -6, 24, 0, 0, 0 ], [ -8, 42, 0, 0, 0 ],
[ 0, 0, -1, 6, 0 ],
[ 0, 0, 0, 5, 6 ], [ 0, 0, -3, 0, 5 ] ] ];
return Group( gens );
fi;
# takes some more time, example form referee
if n = -16 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;
# 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 := [ [ [ -100, 51, 70, -231, 1, 0, 0, 1 ],
[ -169, 82, 112, -385, 0, 0, 0, 0 ],
[ -59, 27, 37, -132, 0, 0, 0, 0 ],
[ -80, 38, 52, -181, 0, 1, 0, 0 ],
[ 0, 0, 0, 0, -19, 96, 70, -231 ],
[ 0, 0, 0, 0, -34, 163, 112, -385 ],
[ 0, 0, 0, 0, 31, -153, -107, 363 ],
[ 0, 0, 0, 0, 10, -52, -38, 125 ]
],
[ [ -1, 0, -1, 0, 0, 0, 0, 0 ],
[ -2, 3, 5, -11, 0, 0, 1, 0 ],
[ -1, 0, 0, 0, 0, 0, 1, 0 ],
[ -1, 1, 2, -4, 1, 0, 1, 0 ],
[ 0, 0, 0, 0, -19, 96, 70, -231 ],
[ 0, 0, 0, 0, -34, 163, 112, -385 ],
[ 0, 0, 0, 0, 31, -153, -107, 363 ],
[ 0, 0, 0, 0, 10, -52, -38, 125 ]
] ];
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,0, 619,1178,2242, 2,-2,-1,-2],
[0,0,0,0, 3420, 6509,12388, 2,-2,-2,-4],
[0,0,0,0, 1178, 2242, 4267, 2,0,1,-3],
[0,0,0,0, 0,0,0, 5274, 4861, 4561, 4272],
[0,0,0,0, 0,0,0, 57443, 53884,50471,47281],
[0,0,0,0, 0,0,0, 9422,8833,8274,7751],
[0,0,0,0, 0,0,0, 4861,4561,4272,4002]],
[[4272,4002,3749,3512, -1,-2,2,-1,1,1,2],
[47281,44292,41492,38869, 4,-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, -18, 22, 0, 1/2, 0, 0, 0, 0, 0, 0 ],
[ -1, 16, 46, -88, 1/2, 0, 1/2, 0, 0, 0, 0, 0 ],
[ -2, -10, -23, 33, 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 4, 14, -29, 0, 0, 0, 1/2, 1/2, 1/2, 0, 0 ],
[ 0, 0, 0, 0, -1, -1, -1, 0, 0, 1/2, 0, 0 ],
[ 0, 0, 0, 0, -5, 3, 5, -11, 1/2, 0, 0, 0 ],
[ 0, 0, 0, 0, -3, 4, 5, -11, 0, 0, 1/2, 0 ],
[ 0, 0, 0, 0, -3, 3, 4, -9, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, -15, 48, 36 -121 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, -26, 83, 62, -209 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 11, -71, -49, 165 ],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, -22, -14, 47 ] ],
[ [ -12, -3, -18, 22, 0, 0, 0, 0, 0, 0, 0, 0 ],
--> --------------------
--> maximum size reached
--> --------------------
[ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet)
]
|
2026-04-02
|