# Contruction of a matrix group

Keywords: Sine, Cosine, Matrix group

## Respondent:

Volkmar Felsch ( Volkmar.Felsch@Math.RWTH-Aachen.DE)

## Question:

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))

A first attempt to define the values of sine and cosine as cyclotomic
numbers 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.
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
```