< ^ From:

> < ^ Subject:

Dear Gap Forum, dear Nicola Sottocornola, dear Jan Draisma,

in a letter to the gap-forum on February 22nd, Nicola Sottocornola

wrote:

I'd like to generate a group using two elements A and S: G = <A,S>. I

don't know if this group is finite. Someone can help me?S = diag(1,1,-1,-1) A = [0, 0, cos(s), -sin(s)] [-sin(t), cos(t), 0, 0] [cos(t), sin(t), 0, 0] [0, 0, sin(s), cos(s)]with

cos(t) := 1/4 + 1/4 sqrt(5) sin(t) := 1/4 sqrt(2) sqrt(5 - sqrt(5)) cos(s):= 3/4 - 1/4 sqrt(5) sin(s):= 1/4 sqrt(2 + 6 sqrt(5))

In a first reply to gap-forum Jan Draisma wrote:

I would express the algebraic numbers occuring in your example in a suitable cyclotomic field (see E and CF in the manual); in your case CF(20) should do; for instance, cos(t) and sin(t) should be sg like this: c1:=(-E(5)^2-E(5)^3)/2; s1:=(-E(5)^2+E(5)^3)/(2*E(4)); Then define A and S, and simply call Size(Group([A,S])).

Our attempt to follow this suggestion for sin(s) failed. It turned out

that sin(s) has the minimal polynomial

x^4 - 1/4*x^2 - 11/16

and its Galois group is a dihedral group of order 8. Hence the extension

field Q(sin(s)) is not abelian and cannot be embedded into a cyclotomic

field. So the idea does not work in this case and we have to apply a

different approach to find a description of the algebraic field that

contains the given irrationalities, suitable for the intended computations.

If we set a := sin(s) and b := sin(t)

it follows immediately from the above definitions that

cos(s) = 3/4 - 1/24*((4*a)^2 - 2) and cos(t) = 1/4 + 1/24*((4*a)^2 - 2).

Hence we can do the computations in Q(a,b). From the theorem on the

existence of a primitive element we know that there is a q in Q such

that Q(c) = Q(a,b) for c = a + q*b. We simply try the easiest case

and check if q = 1 will do, i. e. if there is a solution for

a = q_0*c^0 + q_1*c^1 + ... + q_7*c^7 with c = a+b.

As GAP cannot handle numbers like a = 1/4 sqrt(2 + 6 sqrt(5)) we use

Maple for this purpose and in fact get a solution

a = 21/8*c - c^3 + c^5 - 3/8*c^7.

Similarly, starting with the approach

c^8 = q_0*c^0 + q_1*c^1 + ... + q_7*c^7,

we compute the minimal polynomial p of c to

p = x^8 - 3*x^6 + 4*x^4 - 7*x^2 + 1.

As GAP cannot handle the field Q(c) itself we perform the subsequent

computations in the matrix field generated by the companion matrix

m of p which is isomorphic to Q(c). This leads to the following GAP

job.

gap> # Verify that p is irreducible. gap> x := Indeterminate( Rationals );; gap> p := x^8 - 3*x^6 + 4*x^4 - 7*x^2 + 1;; gap> Factors( p ); [ 1-7*x_1^2+4*x_1^4-3*x_1^6+x_1^8 ] gap> gap> # Get the isomorphic matrices for the given sinus and cosinus values. gap> e := IdentityMat( 8 );; gap> m := CompanionMat( p ); [ [ 0, 0, 0, 0, 0, 0, 0, -1 ], [ 1, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 1, 0, 0, 0, 0, 0, 7 ], [ 0, 0, 1, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 1, 0, 0, 0, -4 ], [ 0, 0, 0, 0, 1, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 1, 0, 3 ], [ 0, 0, 0, 0, 0, 0, 1, 0 ] ] gap> sins := 21/8*m - m^3 + m^5 - 3/8*m^7; [ [ 0, 3/8, 0, 1/8, 0, -1/8, 0, -7/8 ], [ 21/8, 0, 3/8, 0, 1/8, 0, -1/8, 0 ], [ 0, 0, 0, -1/2, 0, 1, 0, 6 ], [ -1, 0, 0, 0, -1/2, 0, 1, 0 ], [ 0, 1/2, 0, 1/2, 0, -1, 0, -5/2 ], [ 1, 0, 1/2, 0, 1/2, 0, -1, 0 ], [ 0, -1/8, 0, 1/8, 0, 7/8, 0, 13/8 ], [ -3/8, 0, -1/8, 0, 1/8, 0, 7/8, 0 ] ] gap> sint := m - sins; [ [ 0, -3/8, 0, -1/8, 0, 1/8, 0, -1/8 ], [ -13/8, 0, -3/8, 0, -1/8, 0, 1/8, 0 ], [ 0, 1, 0, 1/2, 0, -1, 0, 1 ], [ 1, 0, 1, 0, 1/2, 0, -1, 0 ], [ 0, -1/2, 0, 1/2, 0, 1, 0, -3/2 ], [ -1, 0, -1/2, 0, 1/2, 0, 1, 0 ], [ 0, 1/8, 0, -1/8, 0, 1/8, 0, 11/8 ], [ 3/8, 0, 1/8, 0, -1/8, 0, 1/8, 0 ] ] gap> coss := 3/4*e - 1/24*( (4*sins)^2 - 2*e ); [ [ 1/8, 0, -1/8, 0, 1/8, 0, 3/8, 0 ], [ 0, 1/8, 0, -1/8, 0, 1/8, 0, 3/8 ], [ 1/2, 0, 1, 0, -1, 0, -5/2, 0 ], [ 0, 1/2, 0, 1, 0, -1, 0, -5/2 ], [ -1/2, 0, 0, 0, 3/2, 0, 1/2, 0 ], [ 0, -1/2, 0, 0, 0, 3/2, 0, 1/2 ], [ 1/8, 0, -1/8, 0, -3/8, 0, 3/8, 0 ], [ 0, 1/8, 0, -1/8, 0, -3/8, 0, 3/8 ] ] gap> cost := 1/4*e + 1/24*( (4*sins)^2 - 2*e ); [ [ 7/8, 0, 1/8, 0, -1/8, 0, -3/8, 0 ], [ 0, 7/8, 0, 1/8, 0, -1/8, 0, -3/8 ], [ -1/2, 0, 0, 0, 1, 0, 5/2, 0 ], [ 0, -1/2, 0, 0, 0, 1, 0, 5/2 ], [ 1/2, 0, 0, 0, -1/2, 0, -1/2, 0 ], [ 0, 1/2, 0, 0, 0, -1/2, 0, -1/2 ], [ -1/8, 0, 1/8, 0, 3/8, 0, 5/8, 0 ], [ 0, -1/8, 0, 1/8, 0, 3/8, 0, 5/8 ] ] gap> gap> # Get the two generators of G. gap> S := IdentityMat( 32 );; gap> for i in [ 17 .. 32 ] do S[i][i] := -1; od; gap> A := MatrixByBlockMatrix( BlockMatrix( > [ [1,3,coss], [1,4,-sins], > [2,1,-sint], [2,2,cost], > [3,1,cost], [3,2,sint], > [4,3,sins], [4,4,coss] ], 4,4 ) );; gap> gap> # Compute the orders of the groups <S>, <A>, and G = <A,S>. gap> Size( Group( S ) ); 2 gap> Size( Group( A ) ); 6 gap> G := Group( A, S ); <matrix group with 2 generators> gap> Size( G ); infinity gap> time; 957210

The last command in the preceding job shows that the computation of the

size of a matrix group like G is relatively time consuming. It took us

about 16 minutes CPU time on a Pentium 4 processor with 1.7 GHz.

We hope that we didn't make a mistake in the hand calculations preceding

the GAP job. Perhaps control them yourself.

With kind regards, Volkmar Felsch and Joachim Neubueser

P.S.:

As you may guess from the above letter, answering such a question has

taken us some time. We have enjoyed solving the problem, however we would

also really appreciate to know a little bit about the person who asked the

question (a commercial email address doesn't even tell us where you are).

May we therefore generally suggest to the Forum members that such

questions to the Forum are complemented by a full address and affiliation.

P.P.S.:

We aren't even quite sure that the name Nicola tells us that we are talking

to a lady.

> < [top]