(* Rachunki sprawdzające działania algebry Hecke dla (Subscript[SL, 3]) na wielomianach *)
(* transpozycje *)
s1[f_]:=f/.{x1->x2,x2->x1}
s2[f_]:=f/.{x3->x2,x2->x3}
(* operacje Demazura \partial - różnice podzielone *)
p1[f_]:=(f-s1[f])/(x1-x2)
p2[f_]:=(f-s2[f])/(x2-x3)

f=g[x1,x2,x3];
(* sprawdzamy relację kwadratową i warkoczową *)
Factor[p1[p1[f]]]==0
Factor[p1[p2[p1[f]]]-p2[p1[p2[f]]]]==0

(* operacje Demazura izobaryczne*)
d1[f_]:=f/(1-x2/x1)+s1[f]/(1-x1/x2)
d2[f_]:=f/(1-x3/x2)+s2[f]/(1-x2/x3)

(* sprawdzamy relację kwadratową i warkoczową *)
Factor[d1[d1[f]]-d1[f]]==0
Factor[d1[d2[d1[f]]]-d2[d1[d2[f]]]]==0

(* operacje Demazura-Lusztiga *)
T1[f_]:=(1-q x2/x1)d1[f]-f
T2[f_]:=(1-q x3/x2)d2[f]-f

(* sprawdzamy relację kwadratową i warkoczową *)
Factor[T1[T1[f]]-((q-1)T1[f]+q f)]==0
Factor[T1[T2[T1[f]]]-T2[T1[T2[f]]]]==0

(* oryginalna operacja Lusztiga *)
L1[f_]:=d1[(1-q x2/x1)f]-f
L2[f_]:=d2[(1-q x3/x2)f]-f

(* sprawdzamy relację kwadratową i warkoczową *)
Factor[L1[L1[f]]-((q-1)L1[f]+q f)]==0
Factor[L1[L2[L1[f]]]-L2[L1[L2[f]]]]==0