# The GAP-program randomly constructing a (12,8)-group with the properties of \Sigma C := [[ 2, 1, 2, 0, 0, 2, 1, 2], [ 1, 2, 1, 0, 0, 1, 2, 1], [ 4, 3, 4, 0, 0, 4, 3, 4], [ 3, 4, 3, 0, 0, 3, 4, 3], [ 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0], [ 9,10,10, 0, 0,10,10, 9], [10, 9, 9, 0, 0, 9, 9,10], [11,12,12, 0, 0,12,12,11], [12,11,11, 0, 0,11,11,12]]; D := [[ 2, 1, 3, 0, 0, 7, 8, 6], [ 3, 1, 2, 0, 0, 6, 8, 7], [ 2, 1, 3, 0, 0, 7, 8, 6], [ 3, 1, 2, 0, 0, 6, 8, 7], [ 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0], [ 2, 3, 1, 0, 0, 6, 8, 7], [ 2, 1, 3, 0, 0, 8, 6, 7], [ 2, 3, 1, 0, 0, 6, 8, 7], [ 2, 1, 3, 0, 0, 8, 6, 7]]; q := [ [ 1, 4 ], [ 1, 5 ], [ 2, 4 ], [ 2, 5 ], [ 3, 4 ], [ 3, 5 ], [ 4, 4 ], [ 4, 5 ], [ 5, 1 ], [ 5, 2 ], [ 5, 3 ], [ 5, 4 ], [ 5, 5 ], [ 5, 6 ], [ 5, 7 ], [ 5, 8 ], [ 6, 1 ], [ 6, 2 ], [ 6, 3 ], [ 6, 4 ], [ 6, 5 ], [ 6, 6 ], [ 6, 7 ], [ 6, 8 ], [ 7, 1 ], [ 7, 2 ], [ 7, 3 ], [ 7, 4 ], [ 7, 5 ], [ 7, 6 ], [ 7, 7 ], [ 7, 8 ], [ 8, 1 ], [ 8, 2 ], [ 8, 3 ], [ 8, 4 ], [ 8, 5 ], [ 8, 6 ], [ 8, 7 ], [ 8, 8 ], [ 9, 4 ], [ 9, 5 ], [10, 4 ], [10, 5 ], [11, 4 ], [11, 5 ], [12, 4 ], [12, 5 ] ]; all := function(x1, x2, y1, y2) local w, k, i, j; w := [ ]; k := 1; for i in [x1..x2] do for j in [y1..y2] do w[k] := [i,j]; k := k+1; od; od; return w; end; test := function(M, N, q, r, s, t, cM, cN) if (s = cM+1-q and t = cN+1-r) or M[s][cN+1-r] <> 0 or M[cM-q+1][t] <> 0 or M[cM+1-s][cN+1-t] <> 0 or ForAny(all(1,cM,1,cN), v -> ([M[v[1]][v[2]],N[v[1]][v[2]]] in [[s,t], [q,cN+1-t], [cM+1-s,r], [cM+1-q,cN+1-r]])) then return false; else return true; fi; end; part := function(x, y, z) local w, k, i1, i2, j; w := [ ]; k := 1; for i1 in [1..x-1] do for i2 in [1..z] do w[k] := [i1,i2]; k := k+1; od; od; for j in [1..y-1] do w[k] := [x,j]; k := k+1; od; return w; end; test2 := function(A, x, y, z) if A[x][y] = 0 and ForAll(part(x,y,z), v -> A[v[1]][v[2]] <> 0) then return true; else return false; fi; end; PhPerm := function(j, cA, A) local v, i; v := [ ]; for i in [1..cA] do v[i] := cA+1-A[cA-i+1][j]; od; return PermList(v); end; Ph := function(A) local p, j, cA, cB; cA := DimensionsMat(A)[1]; cB := DimensionsMat(A)[2]; p := [ ]; for j in [1..cB/2] do p[j] := PhPerm(j,cA,A); od; return Group(p,()); end; PvPerm := function(i, cA, cB, B) local w, j; w := [ ]; for j in [1..cB] do w[j] := B[cA-i+1][j]; od; return PermList(w); end; Pv := function(B) local p, i, cA, cB; cA := DimensionsMat(B)[1]; cB := DimensionsMat(B)[2]; p := [ ]; for i in [1..cA/2] do p[i] := PvPerm(i,cA,cB,B); od; return Group(p,()); end; F := FreeGroup("a1", "a2", "a3", "a4", "a5", "a6", "b1", "b2", "b3", "b4"); a1 := F.1; a2 := F.2; a3 := F.3; a4 := F.4; a5 := F.5; a6 := F.6; b1 := F.7; b2 := F.8; b3 := F.9; b4 := F.10; NL12a := function(n) local a; a := [a1,a2,a3,a4,a5,a6,a6^-1,a5^-1,a4^-1,a3^-1,a2^-1,a1^-1]; return a[n]; end; NL8b := function(n) local b; b := [b1,b2,b3,b4,b4^-1,b3^-1,b2^-1,b1^-1]; return b[n]; end; relation := function(A, B) local i, j, rel, cA, cB; cA := DimensionsMat(A)[1]; cB := DimensionsMat(A)[2]; rel := []; for i in [1..cA/2] do for j in [1..cB] do if not NL12a(i)*NL8b(j)*NL12a(cA+1-A[i][j])*NL8b(cB+1-B[i][j]) in rel and not NL12a(cA+1-A[i][j])*NL8b(cB+1-B[i][j])*NL12a(i)*NL8b(j) in rel and not NL12a(cA+1-A[i][j])^-1*NL8b(j)^-1*NL12a(i)^-1*NL8b(cB+1-B[i][j])^-1 in rel then Add(rel,NL12a(i)*NL8b(j)*NL12a(cA+1-A[i][j])*NL8b(cB+1-B[i][j])); fi; od; od; return rel; end; relation2 := function(A, B) return Concatenation(relation(A,B), [a2*a1^-1*a3*a4^-1]); end; out := []; full := function(A) if ForAny(A, x -> 0 in x) then return false; else return true; fi; end; rdm := function(A, B, p) local cA, cB, i, j, k, l, AA, BB, kl, pp, z; z := 0; cA := DimensionsMat(A)[1]; cB := DimensionsMat(A)[2]; for i in [1..cA/2] do for j in [1..cB] do if test2(A,i,j,cB) then repeat kl := Random(p); z := z+1; until test(A,B,i,j,kl[1],kl[2],cA,cB) or z = 101; AA := StructuralCopy(A); BB := StructuralCopy(B); if z < 101 then AA[i][j] := kl[1]; BB[i][j] := kl[2]; AA[kl[1]][cB-j+1] := i; BB[kl[1]][cB-j+1] := cB+1-kl[2]; AA[cA+1-i][kl[2]] := cA+1-kl[1]; BB[cA+1-i][kl[2]] := j; AA[cA+1-kl[1]][cB+1-kl[2]] := cA+1-i; BB[cA+1-kl[1]][cB+1-kl[2]] := cB+1-j; pp := StructuralCopy(p); RemoveSet(pp,kl); RemoveSet(pp,[i,cB+1-kl[2]]); RemoveSet(pp,[cA+1-kl[1],j]); RemoveSet(pp,[cA+1-i,cB+1-j]); if full(AA) then out := StructuralCopy([AA,BB,cA,cB]); else rdm(AA, BB, pp); fi; fi; fi; od; od; return out; end; Ma := function(m, n) local i, j, w; w := NullMat(m,n); for i in [1..m] do for j in [1..n] do w[i][j] := i; od; od; return w; end; Mb := function(m, n) local i, j, w; w := NullMat(m,n); for i in [1..m] do for j in [1..n] do w[i][j] := j; od; od; return w; end; slc := function(aa,bb) local res; repeat out := [Ma(aa,bb),Mb(aa,bb),aa,bb]; res := rdm(C,D,q); until Transitivity(Ph(res[1]), [1..aa]) = 5 and Transitivity(Pv(res[2]), [1..bb]) = 6 and Size(F/relation2(res[1],res[2])) = 4; Print(res[1], "\n", res[2], "\n", Size(Ph(res[1])) = 95040, "\n", Size(Pv(res[2])) = 20160, "\n", relation(res[1],res[2]), "\n"); end; #slc(12,8); # [ [ 2, 1, 2,10,11, 2, 1, 2 ], # [ 1, 2, 1, 8,12, 1, 2, 1 ], # [ 4, 3, 4,12, 4, 4, 3, 4 ], # [ 3, 4, 3, 3, 8, 3, 4, 3 ], # [ 6, 6, 5,11, 9, 5, 6, 6 ], # [ 5, 5, 6, 6, 6, 6, 5, 5 ], # [ 8, 8, 7, 7, 7, 7, 8, 8 ], # [ 7, 7, 8, 4, 2, 8, 7, 7 ], # [ 9,10,10, 5,10,10,10, 9 ], # [10, 9, 9, 9, 1, 9, 9,10 ], # [11,12,12, 1, 5,12,12,11 ], # [12,11,11, 2, 3,11,11,12 ] ] # [ [ 2, 1, 3, 5, 4, 7, 8, 6 ], # [ 3, 1, 2, 5, 4, 6, 8, 7 ], # [ 2, 1, 3, 5, 4, 7, 8, 6 ], # [ 3, 1, 2, 5, 4, 6, 8, 7 ], # [ 7, 2, 3, 5, 4, 6, 1, 8 ], # [ 1, 8, 4, 6, 3, 5, 7, 2 ], # [ 1, 8, 5, 3, 6, 4, 7, 2 ], # [ 7, 2, 3, 5, 4, 6, 1, 8 ], # [ 2, 3, 1, 5, 4, 6, 8, 7 ], # [ 2, 1, 3, 5, 4, 8, 6, 7 ], # [ 2, 3, 1, 5, 4, 6, 8, 7 ], # [ 2, 1, 3, 5, 4, 8, 6, 7 ] ] # true # true # [ a1*b1*a2^-1*b2^-1, a1*b2*a1^-1*b1^-1, a1*b3*a2^-1*b3^-1, a1*b4*a3*b4, # a1*b4^-1*a2*b4^-1, a1*b3^-1*a2^-1*b2, a1*b1^-1*a2^-1*b3, a2*b2*a2^-1*b1^-1, # a2*b4*a5*b4, a3*b1*a4^-1*b2^-1, a3*b2*a3^-1*b1^-1, a3*b3*a4^-1*b3^-1, # a3*b4^-1*a4^-1*b4^-1, a3*b3^-1*a4^-1*b2, a3*b1^-1*a4^-1*b3, a4*b2*a4^-1*b1^-1, # a4*b4^-1*a5*b4^-1, a5*b1*a6^-1*b2, a5*b2*a6^-1*b2^-1, a5*b3*a5^-1*b3^-1, # a5*b2^-1*a6^-1*b1^-1, a5*b1^-1*a6^-1*b1, a6*b3*a6^-1*b4^-1, a6*b4*a6^-1*b3 ]