> # This program computes the cocycle invariants for > # knot table, with the Alexander quandles > # Z_p [T, T^{-1}] / (h(T)) , with coefficients A=Z_q. > restart; > with(linalg): Warning, new definition for norm Warning, new definition for trace > # Defining initial conditions (p, q, h(T)): > assign(p=3): # mod p Alexander quandle > assign(q=3): # A=Z_q > > Rel0:= T^2+1 : # order ideal h(T)(deg(h(T)) must be 2) > Rel1:= T^2 = -1 : # ideal solved for T^2 > Rel2:= T^(-1) = -T : # inverse rel from Rel1 > # Quandle operation: > g:=proc(a, b) > algsubs( Rel1, > expand( T*a + (1-T)*b) ) mod p : end: > > # Defining a matrix for cocycle conditions: > A:=array(sparse,1..p^6, 1..p^4) : > for j from 0 to p^2-1 do > assign(c[j+j*p^2+1]=0): # quandle condition > od: > > > for x0 from 0 to p-1 do > for x1 from 0 to p-1 do > for y0 from 0 to p-1 do > for y1 from 0 to p-1 do > for z0 from 0 to p-1 do > for z1 from 0 to p-1 do > > ind:=z1*p^5+z0*p^4+y1*p^3+y0*p^2+x1*p+x0+1: > > #f[x0 + x1*T, z0 + z1*T] - f[x0 + x1*T, y0 + y1*T] > #-f[g(x0+ x1*T, y0 + y1*T), z0 + z1*T] > #+f[g(x0 + x1*T, z0 + z1*T), g(y0 + y1*T, z0 + z1*T)] > # Make a matrix for the cocy cond > > if z0+z1*T-x0-x1*T<>0 then > A[ind,z1*p^3+z0*p^2+x1*p+x0+1]:= > (1+A[ind,z1*p^3+z0*p^2+x1*p+x0+1]) mod q: > fi: > if y0-x0+(y1-x1)*T<>0 then > A[ind,y1*p^3+y0*p^2+x1*p+x0+1]:= > (A[ind,y1*p^3+y0*p^2+x1*p+x0+1]-1) mod q; > fi: > if z0+z1*T-g(x0+ x1*T, y0 + y1*T)<>0 then > A[ind,z1*p^3+z0*p^2 > +coeff(g(x0+ x1*T, y0 + y1*T),T,1)*p > +coeff(g(x0+ x1*T, y0 + y1*T),T,0)+1]:= > (A[ind,z1*p^3+z0*p^2 > +coeff(g(x0+ x1*T, y0 + y1*T),T,1)*p > +coeff(g(x0+ x1*T, y0 + y1*T),T,0)+1]-1) mod q ; > fi: > if g(y0 + y1*T, z0 + z1*T)-g(x0 + x1*T, z0 + z1*T)<>0 then > A[ind,coeff(g(y0 + y1*T, z0 + z1*T),T,1)*p^3 > +coeff(g(y0 + y1*T, z0 + z1*T),T,0)*p^2 > +coeff(g(x0 + x1*T, z0 + z1*T),T,1)*p > +coeff(g(x0 + x1*T, z0 + z1*T),T,0)+1]:= > (A[ind,coeff(g(y0 + y1*T, z0 + z1*T),T,1)*p^3 > +coeff(g(y0 + y1*T, z0 + z1*T),T,0)*p^2 > +coeff(g(x0 + x1*T, z0 + z1*T),T,1)*p > +coeff(g(x0 + x1*T, z0 + z1*T),T,0) +1]+1) mod q: > fi: > > od: od: od: od: od: od: > # solving the cocycle conditions mod q > Sol:= Linsolve(A,vector(p^6,0),'rank',c) mod q : > > > # Knot table in braid form, > # from Jones' paper in Annals: > bw[1]:= vector([1,1,1]): brind[1]:=2: > bw[2]:= vector([1,-2,1,-2]): brind[2]:=3: > bw[3]:= vector([1,1,1,1,1]): brind[3]:=2: > bw[4]:= vector([1,1,2,2,-1,2]): brind[4]:=3: > bw[5]:= vector([-1,2,-1,3,-2,3,2]): brind[5]:=4: > bw[6]:= vector([-1,2,-1,2,2,2]): brind[6]:=3: > bw[7]:= vector([-1,2,2,-1,-1,2]): brind[7]:=3: > bw[8]:= vector([1,1,1,1,1,1,1]): brind[8]:=2: > bw[9]:= vector([-1,3,3,3,2,1,1,-3,2]): brind[9]:=4: > bw[10]:= vector([1,1,2,-1,2,2,2,2]): brind[10]:=3: > bw[11]:= vector([1,1,2,3,3,-1,2,-3,2]): brind[11]:=4: > bw[12]:= vector([1,1,1,1,2,-1,2,2]): brind[12]:=3: > bw[13]:= vector([1,-2,-1,-1,3,2,2,2,3]): brind[13]:=4: > bw[14]:= vector([1,-3,2,-3,2,-1,2,-3,2]): brind[14]:=4: > bw[15]:= vector([-1,2,3,-2,-1,4,4,3,2,-4]): brind[15]:=5: > bw[16]:= vector([-1,2,2,2,2,2,-1,2]): brind[16]:=3: > bw[17]:= vector([-1,-1,-2,1,4,4,3,-4,-2,3]): brind[17]:=5: > bw[18]:= vector([1,1,1,3,-2,-3,-3,1,-2]): brind[18]:=4: > bw[19]:= vector([1,1,1,-2,1,1,1,-2]): brind[19]:=3: > bw[20]:= vector([-1,2,-1,-3,2,2,2,3,3]): brind[20]:=4: > bw[21]:= vector([1,1,1,1,-2,-2,1,-2]): brind[21]:=3: > bw[22]:= vector([-1,2,1,1,-3,2,2,-3,-3]): brind[22]:=4: > bw[23]:= vector([-1,2,-1,-1,-1,2,2,2]): brind[23]:=3: > bw[24]:= vector([-1,2,2,-1,-1,2,2,2]): brind[24]:=3: > bw[25]:= vector([-1,2,2,-3,2,3,3,-1,2]): brind[25]:=4: > bw[26]:= vector([1,-2,3,-4,3,-4,2,1,-3,-2]): brind[26]:=5: > bw[27]:= vector([1,1,2,-3,2,-1,-3,-3,2]): brind[27]:=4: > bw[28]:= vector([1,1,2,2,-1,-3,2,-3,2]): brind[28]:=4: > bw[29]:= vector([1,1,-2,1,3,3,2,2,3]): brind[29]:=4: > bw[30]:= vector([1,1,-2,1,1,-2,1,-2]): brind[30]:=3: > bw[31]:= vector([-1,2,-1,2,2,-1,-1,2]): brind[31]:=3: > bw[32]:= vector([1,-2,1,-2,1,-2,1,-2]): brind[32]:=3: > bw[33]:= vector([1,2,1,2,1,2,2,1]): brind[33]:=3: > bw[34]:= vector([1,1,1,2,-1,-1,-1,2]): brind[34]:=3: > bw[35]:= vector([1,-2,-2,1,1,2,2,2]): brind[35]:=3: > bw[36]:=vector([1,1,1,1,1,1,1,1,1]):brind[36]:=2: > bw[37]:=vector([1,2,3,4,4,4,3,-4,2,1,-3,-2]):brind[37]:=5: > bw[38]:=vector([1,-2,1,1,1,1,1,1,2,2]):brind[38]:=3: > bw[39]:=vector([-1,3,2,1,1,2,3,3,3,3,-2]):brind[39]:=4: > bw[40]:=vector([1,1,2,-1,3,-2,3,4,4,3,-4,2]):brind[40]:=5: > bw[41]:=vector([1,1,2,2,1,1,1,1,1,-2]):brind[41]:=3: > bw[42]:=vector([1,1,1,2,3,3,-1,2,2,2,-3]):brind[42]:=4: > bw[43]:=vector([1,-2,3,-1,-1,-4,3,-2,3,3,4,3]): > brind[43]:=5: > bw[44]:=vector([1,1,1,-2,1,1,1,1,2,2]):brind[44]:=3: > bw[45]:=vector([-1,2,1,1,2,2,2,-3,2,3,3]):brind[45]:=4: > bw[46]:=vector([-1,2,-3,2,-1,2,2,2,2,3,2]):brind[46]:=4: > bw[47]:=vector([1,-2,-1,-1,3,2,2,2,4,4,3,-4]): > brind[47]:=5: > bw[48]:=vector([1,1,2,-3,2,-1,3,3,2,2,2]):brind[48]:=4: > bw[49]:=vector([1,4,4,-3,2,-3,2,-3,-1,-4,2,2,3,-2]): > brind[49]:=5: > bw[50]:=vector([1,-2,1,3,-2,4,-3,4,4,3]):brind[50]:=5: > bw[51]:=vector([1,1,-2,1,1,1,2,2,2,2]):brind[51]:=3: > bw[52]:=vector([1,1,1,3,-2,1,-2,-3,-2,1,-2]):brind[52]:=4: > bw[53]:=vector([1,1,-3,2,-1,2,2,3,3,2,2]):brind[53]:=4: > bw[54]:=vector([1,1,2,-1,-3,-4,-3,2,-3,2,4,-3]): > brind[54]:=5: > bw[55]:=vector([1,2,2,-3,2,-1,2,-3,2,2,2]):brind[55]:=4: > bw[56]:=vector([-1,-1,3,-4,3,-2,1,3,4,4,2,2]): > brind[56]:=5: > bw[57]:=vector([1,-2,3,3,3,-2,3,-1,-2,3,-2]):brind[57]:=4: > bw[58]:=vector([1,-2,1,1,2,3,3,3,2,-3,2]):brind[58]:=4: > bw[59]:=vector([1,3,3,-2,1,3,-2,-2,-2]):brind[59]:=4: > bw[60]:=vector([-1,2,-1,-4,-3,2,4,4,3,4,4,2,2,-3]): > brind[60]:=5: > bw[61]:=vector([-1,2,2,2,3,2,-1,2,-1,-3,2]):brind[61]:=4: > bw[62]:=vector([-1,2,-1,-1,-3,2,-1,2,2,3,2]):brind[62]:=4: > bw[63]:=vector([1,1,3,3,-2,-2,1,3,-2]):brind[63]:=4: > bw[64]:=vector([-1,2,-3,2,-1,2,-3,2,2]):brind[64]:=4: > bw[65]:=vector([1,-3,-3,2,-3,-1,2,1,1,-3,2]):brind[65]:=4: > bw[66]:=vector([-1,2,2,-3,2,2,-1,2,3,-1,2]):brind[66]:=4: > bw[67]:=vector([-1,2,3,-1,2,-1,3,3,2,-3,2]):brind[67]:=4: > bw[68]:=vector([-1,-1,-1,2,-1,2,2,3,1,-2,3]):brind[68]:=4: > bw[69]:=vector([1,-2,3,-2,1,-2,3,1,-2]):brind[69]:=4: > bw[70]:=vector([1,3,3,-4,-2,1,2,3,3,2,-3,4,-3,2]): > brind[70]:=5: bw[71]:=vector([-1,2,2,2,-3,2,3,3,-1,2,3]):brind[71]:=4: > bw[72]:=vector([1,-2,3,-2,3,-1,4,-3,-2,4,3,-2]): > brind[72]:=5: > bw[73]:=vector([1,1,2,3,3,2,2,-1,2,-3,2]):brind[73]:=4: > bw[74]:=vector([-1,-3,2,4,3,3,-1,2,2,3,4,-2]): > brind[74]:=5: > bw[75]:=vector([1,3,-2,3,1,-2,1,3,-2]):brind[75]:=4: > bw[76]:=vector([-1,2,2,-4,3,-4,-2,1,-3,2,3,-4,3,2]): > brind[76]:=5: > bw[77]:=vector([1,1,1,3,-2,3,-1,-1,-2]):brind[77]:=4: > bw[78]:=vector([1,2,1,1,2,2,3,-2,1,-2,-3]):brind[78]:=4: > bw[79]:=vector([-1,2,-1,3,-2,3,2,2,-3]):brind[79]:=4: > bw[80]:=vector([1,-2,1,3,2,2,2,3,-2]):brind[80]:=4: > bw[81]:=vector([1,3,2,-1,-3,2,1,3,-2]):brind[81]:=4: > bw[82]:=vector([-1,2,3,-1,2,-1,2,3,2]):brind[82]:=4: > bw[83]:=vector([1,1,-2,3,2,2,-1,-3,2,-3,2]):brind[83]:=4: > bw[84]:=vector([1,1,2,2,3,2,-1,2,2,3,-2]):brind[84]:=4: > > > for sub7 from 1 to 84 do > > # Defining Burau representation > Burau:=matrix(2,2,[0,T,1,1-T]): > Burinv:=matrix(2,2,[1- T^(-1),1,T^(-1),0]): > Burinv:=subs( Rel2, evalm(Burinv)): > > for h from 1 to 6 do # brind-1 do > B[h]:=copyinto(Burau, band([1], brind[sub7]), h,h): > B[-h]:=copyinto(Burinv, band([1], brind[sub7]), h,h): > od: > > # Converting integers to quandle elements: > f:=array[0..p^2-1]: > for jj from 0 to p^2-1 do > jj1:=iquo(jj,p): > jj2:=irem(jj,p): > f[jj]:=jj2+jj1*T: > od: > > S:=0: > > # Constructing all colors on the top of braids: > for sub0 from 1 to (vectdim(bw[sub7])+1) do > Color[sub0]:=array(1..brind[sub7]): > od: > > # Computing colors after braid generators in the word: > num:=p^(2*brind[sub7]) : > for indx from 0 to (num-1) do > > for kk from 1 to brind[sub7] do > inlabel:=iquo(indx,p^(2*(kk-1))) mod (p^2); > Color[1][kk]:=f[inlabel]: > od: > > EXPD:=proc(a) expand(a,T): end: > REMDR:=proc(a) rem(a, Rel0, T) mod p : end: > > for k from 1 to (vectdim(bw[sub7])) do > hlpr:=Color[k] &* B[bw[sub7][k] ]: > hlpr2:=evalm(map(EXPD,hlpr)): > Color[k+1]:=evalm(map(REMDR,hlpr2)); > od: > > # Computing the state-sum expressions: > E:=0: > > arrgh:=evalm(Color[1]-Color[vectdim(bw[sub7])+1]); > arrgh2:=sum(abs(arrgh[dj]),dj=1..brind[sub7]): > > > if arrgh2=0 then > > > > for s from 1 to vectdim(bw[sub7]) do > > if (bw[sub7][s])>0 then > E:=E+ > Sol[ coeff(Color[s][bw[sub7][s]+1], T, 1)*p^3 > +coeff(Color[s][bw[sub7][s]+1], T, 0)*p^2 > +coeff(Color[s][bw[sub7][s]], T, 1)*p > +coeff(Color[s][bw[sub7][s]], T, 0)+1 ] mod q : > else > E:=E- > Sol[ coeff(Color[s][abs(bw[sub7][s])], T, 1)*p^3 > +coeff(Color[s][abs(bw[sub7][s])], T, 0)*p^2 > +coeff(Color[s+1][abs(bw[sub7][s])], T, 1)*p > +coeff(Color[s+1][abs(bw[sub7][s])], T, 0)+1 ] mod q : > fi: > > od: > > # Computing the state-sum polynomial from E: > S:=S+t^E : > > fi: > od: > > print(S); > > od: 9 (2 c[69] + c[78] + c[79]) (c[69] + 2 c[79] + 2 c[78]) 9 + 36 t + 36 t 9 (2 c[69] + c[78] + c[79]) (c[69] + 2 c[78] + 2 c[79]) 9 + 36 t + 36 t 9 9 81 9 9 9 9 9 9 9 9 81 (c[78] + 2 c[69] + c[79]) (2 c[78] + c[69] + 2 c[79]) 9 + 36 t + 36 t 9 9 81 9 9 9 9 9 9 9 9 9 9 (2 c[69] + c[78] + c[79]) (c[69] + 2 c[78] + 2 c[79]) 9 + 36 t + 36 t (2 c[78] + c[69] + 2 c[79]) (c[79] + c[78] + 2 c[69]) 9 + 36 t + 36 t 81 9 (2 c[69] + c[78] + c[79]) (c[69] + 2 c[78] + 2 c[79]) 9 + 36 t + 36 t 9 9 81 9 9 (2 c[69] + c[78] + c[79]) (2 c[79] + 2 c[78] + c[69]) 9 + 36 t + 36 t (2 c[69] + c[79] + c[78]) (2 c[78] + 2 c[79] + c[69]) 9 + 36 t + 36 t 9 9 9 (c[69] + 2 c[79] + 2 c[78]) (c[79] + 2 c[69] + c[78]) 9 + 36 t + 36 t 81 81 9 9 9 9 9 9 9 9 9 9 (c[78] + 2 c[69] + c[79]) (c[69] + 2 c[79] + 2 c[78]) 9 + 36 t + 36 t 9 (c[69] + 2 c[78] + 2 c[79]) (2 c[69] + c[78] + c[79]) 9 + 36 t + 36 t 9 9 9 9 9 9 9 9 9 9 (2 c[69] + c[78] + c[79]) (c[69] + 2 c[78] + 2 c[79]) 9 + 36 t + 36 t (2 c[79] + c[69] + 2 c[78]) (2 c[69] + c[79] + c[78]) 9 + 36 t + 36 t (c[69] + 2 c[78] + 2 c[79]) (c[78] + 2 c[69] + c[79]) 9 + 36 t + 36 t (2 c[78] + c[69] + 2 c[79]) 297 + 216 t (2 c[69] + c[79] + c[78]) + 216 t 9 9 9 9 9 9 81 (2 c[69] + c[78] + c[79]) (c[69] + 2 c[78] + 2 c[79]) 9 + 36 t + 36 t 9 >