MAPLE and GAP code for: EXPLICIT REPRESENTATIONS OF 3-DIMENSIONAL SKLYANIN ALGEBRAS ASSOCIATED TO A POINT OF ORDER 2 by Daniel J. Reich and Chelsea Walton preprint available at http://arxiv.org/abs/1512.09167 *** in MAPLE unless stated otherwise *** For Lemma 2.5 f1:=c*v^2-b^2*u*w: g1:=b*c*u^2-v*w: h1:=b*w^2-c^2*u*v: f2:=c*g1^2-b^2*f1*h1: g2:=b*c*f1^2-g1*h1: h2:=b*h1^2-c^2*f1*g1: v1:=u*g2-f2*v: v2:=u*h2-f2*w: v3:=v*h2-g2*w: var:=[u,v,w]; Coeffs:=[coeffs(collect(v1,var,'distributed'),var), coeffs(collect(v2,var,'distributed'),var), coeffs(collect(v3,var,'distributed'),var)]; solve([op(Coeffs),b<>0,c<>0],{b,c}); For Lemma 2.6 solve([x*y+y*x+c*z^2,y*z+z*y+c*x^2, z*x+x*z+c*y^2], [x,y,z]); For Section 4 Steps 0 and 1 restart; with(LinearAlgebra): # X:= <>: Y:= <>: Z:= <>: ## X:= <>: Y:= <>: Z:= <>: XX:= Multiply(X,X): XY:= Multiply(X,Y): XZ:= Multiply(X,Z): YX:= Multiply(Y,X): YY:= Multiply(Y,Y): YZ:= Multiply(Y,Z): ZX:= Multiply(Z,X): ZY:= Multiply(Z,Y): ZZ:= Multiply(Z,Z): Eq1:= convert(YZ+ZY+zc*XX,list): Eq2:= convert(XZ+ZX+zc*YY,list): Eq3:= convert(XY+YX+zc*ZZ,list): Conditions:= [zc<>0,zc^3<>-8,zc^3<>1]: # Vars:= {zc,x1,y1,y2,y3,y4,z1,z2,z3,z4}: ## Vars:= {zc,x1,x4,y1,y2,y3,y4,z1,z2,z3,z4}: M:= solve([op(Eq1),op(Eq2),op(Eq3),op(Conditions)],Vars): L:= []: for i from 1 to nops([M]) do T:=map(allvalues,{M[i]}): for j from 1 to nops(T) do L:=[op(L),T[j]]: end do: end do: Families:=[]: for i from 1 to nops(L) do Families:=[op(Families),[eval(X,L[i]),eval(Y,L[i]),eval(Z,L[i])]]: end do: For Section 4 Step 2 w:=<>: NonRedFams:=[]: for i from 1 to nops(Families) do Xw:=Multiply(Families[i][1],w): Yw:=Multiply(Families[i][2],w): Zw:=Multiply(Families[i][3],w): NonRed:=solve([p*conjugate(p)+q*conjugate(q)<>0, p*Xw[2][1]-q*Xw[1][1], p*Yw[2][1]-q*Yw[1][1], p*Zw[2][1]-q*Zw[1][1], op(Conditions)],[p,q]): if NonRed=[] then NonRedFams:=[op(NonRedFams),[Families[i]]]: end if: end do: for i from 1 to nops(NonRedFams) do print(NonRedFams[i]): end do: For Section 5 Step 3a BetweenFams:=[]: ChangeVars:=[x1=u1,x4=u4,y1=v1,y2=v2,y3=v3,y4=v4,z1=w1,z2=w2,z3=w3,z4=w4]: Q:=<>: Qi:=MatrixInverse(Q): for i from 1 to nops(NonRedFams) do Xconj:=Multiply(Q,Multiply(eval(NonRedFams[i][1][1],ChangeVars),Qi)): Yconj:=Multiply(Q,Multiply(eval(NonRedFams[i][1][2],ChangeVars),Qi)): Zconj:=Multiply(Q,Multiply(eval(NonRedFams[i][1][3],ChangeVars),Qi)): for j from i to nops(NonRedFams) do Xj:=NonRedFams[j][1][1]: Yj:=NonRedFams[j][1][2]: Zj:=NonRedFams[j][1][3]: Equiv1:= convert(Xj-Xconj,list): Equiv2:= convert(Yj-Yconj,list): Equiv3:= convert(Zj-Zconj,list): Conditions:= [zc<>0,zc^3<>-8,zc^3<>1,q1*q4-q2*q3<>0]: Equiv:= solve([op(Equiv1),op(Equiv2),op(Equiv3),op(Conditions)]): BetweenFams:=[op(BetweenFams),[i,j,Equiv]]: end do: end do: for i from 1 to nops(BetweenFams) do print(BetweenFams[i]): end do: For Section 5 For Step 3b IrConditions:=[]: for i from 1 to nops(NonRedFams) do Xw:=Multiply(NonRedFams[i][1][1],w): Yw:=Multiply(NonRedFams[i][1][2],w): Zw:=Multiply(NonRedFams[i][1][3],w): Ir:=solve([p*conjugate(p)+q*conjugate(q)<>0, p*Xw[2][1]-q*Xw[1][1],p*Yw[2][1]-q*Yw[1][1],p*Zw[2][1]-q*Zw[1][1], zc<>0,zc^3<>1,zc^3<>-8]): IrConditions:=[op(IrConditions),[i,Ir]]: end do: for i from 1 to nops(IrConditions) do print(IrConditions[i]): end do: For Section 6 Step 3a BetweenFams:=[]: ChangeVars:=[x1=u1,x4=u4,y1=v1,y2=v2,y3=v3,y4=v4,z1=w1,z2=w2,z3=w3,z4=w4]: Q:=<>: Qi:=MatrixInverse(Q): for i from 1 to nops(NonRedFams) do Xconj:=Multiply(Q,Multiply(eval(NonRedFams[i][1][1],ChangeVars),Qi)): Yconj:=Multiply(Q,Multiply(eval(NonRedFams[i][1][2],ChangeVars),Qi)): Zconj:=Multiply(Q,Multiply(eval(NonRedFams[i][1][3],ChangeVars),Qi)): for j from i to nops(NonRedFams) do Xj:=NonRedFams[j][1][1]: Yj:=NonRedFams[j][1][2]: Zj:=NonRedFams[j][1][3]: Equiv1:= convert(Xj-Xconj,list): Equiv2:= convert(Yj-Yconj,list): Equiv3:= convert(Zj-Zconj,list): Conditions:= [zc<>0,zc^3<>-8,zc^3<>1,q1*q4-q2*q3<>0]: Equiv:= solve([op(Equiv1),op(Equiv2),op(Equiv3),op(Conditions)]): BetweenFams:=[op(BetweenFams),[i,j,Equiv]]: end do: end do: for i from 1 to nops(BetweenFams) do print(BetweenFams[i]): end do: For Section 6 For Step 3b IrConditions:=[]: for i from 1 to nops(NonRedFams) do Xw:=Multiply(NonRedFams[i][1][1],w): Yw:=Multiply(NonRedFams[i][1][2],w): Zw:=Multiply(NonRedFams[i][1][3],w): Ir:=solve([p*conjugate(p)+q*conjugate(q)<>0, p*Xw[2][1]-q*Xw[1][1],p*Yw[2][1]-q*Yw[1][1],p*Zw[2][1]-q*Zw[1][1], zc<>0,zc^3<>1,zc^3<>-8]): IrConditions:=[op(IrConditions),[i,Ir]]: end do: for i from 1 to nops(IrConditions) do print(IrConditions[i]): end do: For Section 6 Step 3a again NewNonRedFams[1]:=eval(NonRedFams[1],[y3=1]): NewNonRedFams[2]:=eval(NonRedFams[2],[y3=1]): NewNonRedFams[3]:=eval(NonRedFams[3],[z3=1]): NewNonRedFams[4]:=eval(NonRedFams[5],[y3=1]): NewBetweenFams:=[]: ChangeVars:=[x1=u1,x4=u4,y1=v1,y2=v2,y3=v3,y4=v4,z1=w1,z2=w2,z3=w3,z4=w4]: Q:=<>: Qi:=MatrixInverse(Q): for i from 1 to 4 do Xconj:=Multiply(Q,Multiply(eval(NewNonRedFams[i][1][1],ChangeVars),Qi)): Yconj:=Multiply(Q,Multiply(eval(NewNonRedFams[i][1][2],ChangeVars),Qi)): Zconj:=Multiply(Q,Multiply(eval(NewNonRedFams[i][1][3],ChangeVars),Qi)): for j from i+1 to 4 do Xj:=NewNonRedFams[j][1][1]: Yj:=NewNonRedFams[j][1][2]: Zj:=NewNonRedFams[j][1][3]: Equiv1:= convert(Xj-Xconj,list): Equiv2:= convert(Yj-Yconj,list): Equiv3:= convert(Zj-Zconj,list): Conditions:= [zc<>0,zc^3<>-8,zc^3<>1,q1*q4-q2*q3<>0]: Equiv:= solve([op(Equiv1),op(Equiv2),op(Equiv3),op(Conditions)]): NewBetweenFams:=[op(NewBetweenFams),[i,j,Equiv]]: end do: end do: for i from 1 to nops(NewBetweenFams) do print(NewBetweenFams[i]): end do: For proof of Theorem 7.1(a) (in GAP) LoadPackage( "GBNP" ); SetInfoLevel(InfoGBNP,0); SetInfoLevel(InfoGBNPTime,0); A:=FreeAssociativeAlgebraWithOne (Rationals, "x", "y", "z"); x:=A.x;; y:=A.y;; z:=A.z;; o:=One(A);; uerels:=[x*y+y*x+5*z*z, y*z+z*y+5*x*x, z*x+x*z+5*y*y]; uerelsNP:=GP2NPList(uerels);; PrintNPList(uerelsNP); GBNP.ConfigPrint(A); GB:=SGrobner(uerelsNP);; PrintNPList(GB); x1:=[[[1]],[1]];; y1:=[[[2]],[1]];; z1:=[[[3]],[1]];; u1:=[[[1,1]],[1]];; u2:=[[[2,2]],[1]];; u3:=[[[3,3]],[1]];; g:=[[[2,2,2],[2,1,3],[1,2,3],[1,1,1]],[5,1,-1,-5]];; MulQA(x1,u1,GB) - MulQA(u1,x1,GB); MulQA(x1,u2,GB) - MulQA(u2,x1,GB); MulQA(x1,u3,GB) - MulQA(u3,x1,GB); MulQA(y1,u1,GB) - MulQA(u1,y1,GB); MulQA(y1,u2,GB) - MulQA(u2,y1,GB); MulQA(y1,u3,GB) - MulQA(u3,y1,GB); MulQA(z1,u1,GB) - MulQA(u1,z1,GB); MulQA(z1,u2,GB) - MulQA(u2,z1,GB); MulQA(z1,u3,GB) - MulQA(u3,z1,GB); MulQA(x1,g,GB) - MulQA(g,x1,GB); MulQA(y1,g,GB) - MulQA(g,y1,GB); MulQA(z1,g,GB) - MulQA(g,z1,GB); PrintNP(MulQA(g,g,GB)); PrintNP(MulQA(u1,MulQA(u1,u1,GB),GB)); PrintNP(MulQA(u2,MulQA(u2,u2,GB),GB)); PrintNP(MulQA(u3,MulQA(u3,u3,GB),GB)); PrintNP(MulQA(u1,MulQA(u2,u3,GB),GB)); For proof of Theorem 7.1(c) F:=g^2-c^2*(u1^3+u2^3+u3^3) - (c^3-4)*u1*u2*u3; solve([diff(F,g),diff(F,u1),diff(F,u2),diff(F,u3)],[g,u1,u2,u3]); For Remark 7.3 # For X being 1 Jordan block # Uncomment one of the following E # E:=eval(NonRedFams[4],[z4=1]); # E:=eval(NonRedFams[5],[y4=1]); ## For X being 2 Jordan block ## Uncomment one of the following E ## E:=eval(NonRedFams[1],[y3=1]); ## E:=eval(NonRedFams[2],[y3=1]); ## E:=eval(NonRedFams[3],[z3=1]); ## E:=eval(NonRedFams[5],[y3=1]); U1:=Multiply(E[1][1],E[1][1]); U2:=Multiply(E[1][2],E[1][2]); U3:=Multiply(E[1][3],E[1][3]); C:=<>; G:= Multiply(Multiply(Multiply( C,E[1][2]),E[1][2]),E[1][2]) +Multiply(Multiply(E[1][2],E[1][1]),E[1][3]) -Multiply(Multiply(E[1][1],E[1][2]),E[1][3]) -Multiply(Multiply(Multiply( C,E[1][1]),E[1][1]),E[1][1]); C2:=<>; C34:=<>; F:= Multiply(G,G) -Multiply(C2,Multiply(Multiply(U1,U1),U1) +Multiply(Multiply(U2,U2),U2) +Multiply(Multiply(U3,U3),U3)) - Multiply(C34,Multiply(Multiply(U1,U2),U3)); simplify(F); For Section 8 Adapted Steps 0 and 1 restart; with(LinearAlgebra): # X:= <>: Y:= <>: ## X:= <>: Y:= <>: XY:= Multiply(X,Y): YX:= Multiply(Y,X): Eq1:= convert(XY+YX,list): # Vars:= {x1,y1,y2,y3,y4}: ## Vars:= {x1,x4,y1,y2,y3,y4}: M:= solve([op(Eq1)],Vars): L:= []: for i from 1 to nops([M]) do T:=map(allvalues,{M[i]}): for j from 1 to nops(T) do L:=[op(L),T[j]]: end do: end do: Families:=[]: for i from 1 to nops(L) do Families:=[op(Families), [eval(X,L[i]),eval(Y,L[i])]]: end do: For Section 8 Adapted Step 2 w:=<>: NonRedFams:=[]: for i from 1 to nops(Families) do Xw:=Multiply(Families[i][1],w): Yw:=Multiply(Families[i][2],w): NonRed:=solve([p*conjugate(p)+q*conjugate(q)<>0, p*Xw[2][1]-q*Xw[1][1], p*Yw[2][1]-q*Yw[1][1], op(Conditions)],[p,q]): if NonRed=[] then NonRedFams:=[op(NonRedFams),[Families[i]]]: end if: end do: For Section 8 Adapted Step 3a BetweenFams:=[]: ChangeVars:=[x1=u1,x4=u4,y1=v1,y2=v2,y3=v3,y4=v4]: Q:=<>: Qi:=MatrixInverse(Q): for i from 1 to nops(NonRedFams) do Xconj:=Multiply(Q,Multiply(eval( NonRedFams[i][1][1],ChangeVars),Qi)): Yconj:=Multiply(Q,Multiply(eval( NonRedFams[i][1][2],ChangeVars),Qi)): for j from i to nops(NonRedFams) do Xj:=NonRedFams[j][1][1]: Yj:=NonRedFams[j][1][2]: Equiv1:= convert(Xj-Xconj,list): Equiv2:= convert(Yj-Yconj,list): Conditions:= [q1*q4-q2*q3<>0]: Equiv:= solve([op(Equiv1),op(Equiv2),op(Conditions)]): BetweenFams:=[op(BetweenFams),[i,j,Equiv]]: end do: end do: For Section 8 Adapted Step 3b IrConditions:=[]: for i from 1 to nops(NonRedFams) do Xw:=Multiply(NonRedFams[i][1][1],w): Yw:=Multiply(NonRedFams[i][1][2],w): Ir:=solve([p*conjugate(p)+q*conjugate(q)<>0, p*Xw[2][1]-q*Xw[1][1],p*Yw[2][1]-q*Yw[1][1]]): IrConditions:=[op(IrConditions),[i,Ir]]: end do: For Section 8 Adapted Step 3a again NewBetweenFams:=[]: ChangeVars:=[x1=u1,x4=u4,y1=v1,y2=v2,y3=v3,y4=v4,z1=w1,z2=w2,z3=w3,z4=w4]: Q:=<>: Qi:=MatrixInverse(Q): for i from 5 to 5 do Xconj:=Multiply(Q,Multiply(eval(NewNonRedFams[i][1][1],ChangeVars),Qi)): Yconj:=Multiply(Q,Multiply(eval(NewNonRedFams[i][1][2],ChangeVars),Qi)): for j from 5 to 5 do Xj:=NewNonRedFams[j][1][1]: Yj:=NewNonRedFams[j][1][2]: Equiv1:= convert(Xj-Xconj,list): Equiv2:= convert(Yj-Yconj,list): Conditions:= [zc<>0,zc^3<>-8,zc^3<>1,q1*q4-q2*q3<>0,u4<>0,x4<>0]: Equiv:= solve([op(Equiv1),op(Equiv2),op(Conditions)]): NewBetweenFams:=[op(NewBetweenFams),[i,j,Equiv]]: end do: end do: for i from 1 to nops(NewBetweenFams) do print(NewBetweenFams[i]): end do: