X := Matrix(3,[ [0,1,0], [0,0,1] , [1,0,0] ])

restart: with(LinearAlgebra): with(group):
X := Matrix(3,[ [0,1,0], [0,0,1] , [1,0,0] ]); Y := Matrix(3, [
[ -1, 0 ,0] , [0,-1,0] , [-b5 , -b5 , 1]
]);
(1)
# Note: here I put sqrt5:=RootOf(z^2-5).
# I don't use sqrt(5) because I want to make sure my computation
is
# independent on the choice of the sign: +sqrt(5) or -sqrt(5)
sqrt5:=RootOf(z^2-5);
b5:=-1/2+(1/2)*sqrt5;
mmult_list:=proc(L::list)
local x,y;
y:=Matrix( 3, [ [1,0,0], [0,1,0] , [0,0,1] ] );
if nops(L)=1 then RETURN(L[1]); fi:
for x in L do
y:=MatrixMatrixMultiply(y,x);
od;
y:=simplify( y , 'symbolic' );
RETURN(y);
end:
IsMatrixIn:=proc(M::Matrix,L::list)
local l;
for l in L do:
if Equal( l , M ) then:
RETURN( 1 );
end if:
end do:
Print("NOT IN");
RETURN(0);
end:
(2)
(2)
GG:=[ mmult_list([ X^3 ]) ];
(3)
#... below I generates all the elements of the group A5
for i from 1 to 12 do
i;
GV:=[op(GG)]:
nops(GG):
for j from 1 to nops(GG) do;
g:=GG[j];
u:=mmult_list( [g,X] );
v:=mmult_list( [g,Y] );
#Print(u,v);
if (IsMatrixIn( u , GV) = 0 ) then
GV:=[op(GV) , u ]:
end if:
if (IsMatrixIn( v , GV) = 0 ) then;
GV:=[op(GV) , v ]:
end if:
end do;
GG:=[op(GV)]:
"-----";
end do:
nops(GG);
60
(4)
# We consider a point V such that G_V=<Y>
V:=Vector( 3 , [a*(-1+sqrt5), a-a*sqrt5+4 , -1+sqrt5] );
(5)
# note: the following expressions must be <>0:
# a-1, a+1, a-sqrt5, a-2-sqrt5, a-1/2*(1+sqrt5).
#Get the orbit of V
for i from 1 to 60 do:
P[i]:=(MatrixVectorMultiply( GG[i] , V
end do:
)):
# I double check that I get an orbit of size 30
Couples:={}:
for i from 1 to 59 do;
for j from (i+1) to 60 do;
l:=Matrix( [P[i] , P[j] , Vector([0,0,0])] );
diffr:= Vector(3, [ Minor(l, 1, 3), Minor(l, 2, 3), Minor(l,
3, 3) ]) ;
diffr := simplify( diffr, 'symbolic' );
if ( (diffr[1]) = 0) and ( (diffr[2]) = 0) and (diffr[3]=
0) then;
Couples:=Couples union { {i,j} };
end if:
end do;
end do;
30
(6)
Couples;
(7)
sysres := {}:
for i to 28 do:
for j from i+1 to 29 do:
for k from j+1 to 30 do:
m := Matrix(3, [PP[i], PP[j], PP[k]]);
dd := simplify( Determinant(m) , 'symbolic');
sysres := `union`(sysres, {dd });
end do:
end do:
end do:
nops(sysres);
156
(8)
# I am considering only the irreducible factors
(9)
"----"
0
0
"----"
0
0
"----"
0
0
"----"
8
0
0
"----"
16
0
0
"----"
24
0
0
"----"
a
1
1
"----"
0
1
"----"
0
1
"----"
0
1
"----"
0
1
"----"
0
1
"----"
0
1
"----"
0
1
"----"
0
1
"----"
0
1
"----"
0
1
"----"
0
1
"----"
0
1
"----"
0
1
"----"
1
2
"----"
1
3
"----"
1
4
"----"
1
5
"----"
0
5
"----"
0
5
"----"
0
5
"----"
0
5
"----"
0
5
"----"
1
6
"----"
1
7
"----"
1
8
"----"
1
9
"----"
1
10
"----"
1
11
"----"
2
13
"----"
2
15
"----"
2
17
"----"
2
19
"----"
2
21
"----"
2
23
"----"
2
25
"----"
2
27
"----"
2
29
"----"
2
31
"----"
2
33
"----"
2
35
"----"
2
37
"----"
2
39
"----"
2
41
"----"
2
43
"----"
2
45
"----"
2
47
"----"
2
49
"----"
3
52
"----"
3
55
"----"
3
58
"----"
3
61
"----"
3
64
"----"
3
67
"----"
(10)
67
(11)
a
11
(12)
19
(13)
6
(14)