(* Dowód, że algebra Hecke dla n=3 jest izomorficzna z k x k x (Subscript[M, 2x2])(k) poprzez wskazanie bazy *)

(* działanie T1 i T2 *)
T1[a0]=a1;
T1[a1]=q a0+(q-1)a1;
T1[a2]=a21;
T1[a21]=q a2+(q-1)a21;
T1[a12]=aw;
T1[aw]=q a12 +(q-1)aw;

T2[a0]=a2;
T2[a2]=q a0+(q-1)a2;
T2[a1]=a12;
T2[a12]=q a1+(q-1)a12;
T2[a21]=aw;
T2[aw]=q a21 +(q-1)aw;

baza={a0,a1,a2,a21,a12,aw};
MatrixForm[m1=Table[Coefficient[T1[a],b,1],{b,baza},{a,baza}]]
MatrixForm[m2=Table[Coefficient[T2[a],b,1],{b,baza},{a,baza}]]

(* sprawdzenie tożsamości *)
m0=IdentityMatrix[6];
m1.m1==(q-1)m1+q m0
m2.m2==(q-1)m2+q m0
m1.m2.m1==m2.m1.m2

(* pozostałe macierze *)
m12=m1.m2;
m21=m2.m1;
mw=m21.m2; (* najdłuższy element *)
zero=0IdentityMatrix[6];
macierze=Factor[{m0,m1,m2,m21,m12,mw}];
xx={a0,a1,a2,a21,a12,aw};

(* generyczne elementy *)
mogolny=Sum[b[i]macierze[[i]],{i,1,6}];
xogolny=Sum[b[i]xx[[i]],{i,1,6}];

(* mnozenie *)
napis2macierz[napis_]:=Table[Coefficient[napis,x,1],{x,xx}].macierze;
wspolczynniki[A_]:={u[1],u[2],u[3],u[4],u[5],u[6]}/.Solve[A==Sum[u[i]macierze[[i]],{i,1,6}],{u[1],u[2],u[3],u[4],u[5],u[6]}][[1]]
mn[napis1_,napis2_]:=wspolczynniki[napis2macierz[napis1].napis2macierz[napis2]]
(* przyklad *)
mn[aw,a12].xx

(* dwa elementy centrum, które są idempotentami po przeskalowaniu *)
MatrixForm[msum=Factor[Sum[m,{m,macierze}]]]
Factor[msum.mogolny-mogolny.msum]==zero
c=1+2 q+2(q^2)+q^3;
Factor[(msum/c).(msum/c)-msum/c]==zero

MatrixForm[malt=Factor[{-q^3,q^2,q^2,-q,-q,1}.macierze]]
wspolczynniki[malt].xx
Factor[malt.mogolny-mogolny.malt]==zero
c=-1-2 q-2 (q^2)-(q^3);
Factor[(malt/c).(malt/c)-malt/c]==zero

(* wybrane elementy centrum definiują prostopadłe pod reprezentacje *)
malt.msum==zero

(* rozszerzamy ciało Q(q) o t=√q i wskazujemy elementy nilpotentne *)
mn1=t (m1- m2)+ (m12-m21)/.q->t^2;
mn2=t( m1-  m2)-(m12-m21)/.q->t^2;
Factor[mn1.mn1]==zero
Factor[mn2.mn2]==zero

(* te elementy są prostopadłe do msum i malt *)
Factor[mn1.msum/.q->t^2]==zero
Factor[mn2.msum/.q->t^2]==zero
Factor[mn1.malt/.q->t^2]==zero
Factor[mn2.malt/.q->t^2]==zero

(* rozszerzamy ciało Q(t) o  (Sqrt[1+(t^2)+(t^4)]) i definujemy listę elementow, bazę 4-wymiarowej podalgebry generowanej przez mn1 i mn2 *)
c=2  t (Sqrt[1+(t^2)+(t^4)]);
blok={mn1/c,mn2/c,mn1.mn2/c^2,mn2.mn1/c^2};

(* obliczamy tabelkę działań *)
wspolczynnikit[A_]:={u[1],u[2],u[3],u[4]}/.Solve[A==Sum[u[i]blok[[i]],{i,1,4}],{u[1],u[2],u[3],u[4]}][[1]];
MatrixForm[Table[Factor[wspolczynnikit[a.b]].{n1,n2,n12,n21},{a,blok},{b,blok}]]