Y := Matrix(3, [ [ -1, 0 ,0] , [0,-1,0]

restart: with(LinearAlgebra):
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 generate 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
#Get the 15 involutions
o2:={}:
for Xg in GG do;
if Equal( mmult_list( [Xg,Xg] ) , GG[1] ) then;
if Equal( Xg , GG[1] ) = false then;
o2 := o2 union {Xg};
end if;
end if;
(4)
end do;
nops(o2);
15
# I am looking an element V such that G_V=<Y>
(5)
(6)
3
(6)
3
(7)
(8)
(9)
(10)
(11)
(12)
"----"
"----"
"----"
"----"
0
"----"
0
"----"
"----"
"----"
"----"
"----"
"----"
"----"
"----"
"----"
0
0
0
"----"
(13)
# Note: If one runs this code again, then the order of the steps
might change!
#From steps 1,4: (a-1/2(1+sqrt5))<>0
#From steps 2,5,8,13: (a-1)<>0
#From steps 3,6,9,14: (a-sqrt5)<>0
#From steps 7,11:
(a-2-sqrt5)<>0
#From steps 10,12:
(a+1)<>0
#Step 15: This is the involution Y