Worksheet: Irreducible representations of knot groups into SL(n,C)

by Leila Ben Abdelghani and Michael Heusener

 

This worksheet present the calculations of Example 3.6 and Example 4.2.

Definition of the knot groups.

First, we define the knot group G31 of the trefoil knot, and the groups G820 and G810 of the knots 8_20 and 8_10 respectively.

{{{id=212| F2. = FreeGroup(2) /// }}} {{{id=213| G31 = F2/ [S*T*S*T^-1*S^-1*T^-1] /// }}} {{{id=1| F3. = FreeGroup(); /// }}} {{{id=216| B3. = BraidGroup(); /// }}}

Recall that x1 * x2 * x3 = s(x1) * s(x2) * s(x3) holds in F3 for all braid automorphisms s in B3. Therefore the relation x3 = s(x3) follows from x1 = s(x1) and x2 = s(x2). 

{{{id=215| s810 = s1^-1*s2^2*s1^-2*s2^3; G810 = F3 / [x1*s810*x1^-1,x2*s810*x2^-1 ]; /// }}}

This is a presentation with only three generators and two relations which are quite long:

{{{id=217| G810.relations() /// }}} {{{id=98| s820 = s1^3*s2*s1^-3*s2; G820 = F3 / [x1*s820*x1^-1,x2*s820*x2^-1 ]; /// }}}

Here are the two relations of the knot group G820.

{{{id=260| G820.relations() /// }}} {{{id=221| factor(s820.alexander_polynomial()); factor(s810.alexander_polynomial()); /// }}}

We will do our calculations over the cyclotomic field k=QQ(alpha) where alpha^2-alpha+1 = 0.

Also we define the polynomial ring R = k[x,y,z] over k.

{{{id=117| k. = CyclotomicField(6); R. = PolynomialRing(k,3); /// }}}

First for the trefoil knot:

{{{id=226| A = matrix(k,2,[alpha,0,0,1]); B = matrix(k,2,[alpha,1,0,1]) /// }}}

The map S-> A and T->B defines a representation of G31 into GL(2,k):

{{{id=227| G31.relations()[0](A,B) /// }}}

This presentation cannot be upgraded:

{{{id=229| AA = matrix(R,3,[alpha,0,x,0,1,1,0,0,1]);BB = matrix(R,3,[alpha,1,y,0,1,1,0,0,1]); AA , BB; /// }}}

The relation S*T*S*T^-1*S^-1*T^-1 will never map onto the identity matrix.

{{{id=233| G31.relations()[0](AA,BB) /// }}}

Now the same procedure for G820 and G810.

{{{id=116| A1 = matrix(k,3,[alpha,0,0,0,1,1,0,0,1]);A2 = matrix(k,3,[alpha,1,0,0,1,1,0,0,1]);A3 = matrix(k,3,[alpha,1,alpha+1,0,1,1,0,0,1]); /// }}} {{{id=204| A1, A2, A3; /// }}}

The map xi -> Ai, i=1,2,3, defines a representation of G820 into GL(3,k):

{{{id=173| G820.relations()[0](A1,A2,A3), G820.relations()[1](A1,A2,A3); /// }}}

Now we will see by calculation that the representation h=[A1, A2, A3 ] cannot be upgraded: 

{{{id=172| AA1 = matrix(R,4,[alpha,0,0,x,0,1,1,0,0,0,1,1,0,0,0,1]); AA2 = matrix(R,4,[alpha,1,0,y,0,1,1,0,0,0,1,1,0,0,0,1]); AA3 = matrix(R,4,[alpha,1,alpha+1,z,0,1,1,0,0,0,1,1,0,0,0,1]); AA1;AA2;AA3 /// }}}

It is impossible to upgrade since the image of the first relation would never be the identity matrix.

{{{id=115| G820.relations()[0](AA1,AA2,AA3) /// }}}

The same procedure for the knot 8_10:

{{{id=251| B1 = matrix(k,4,[alpha,0,0,0,0,1,1,0,0,0,1,1,0,0,0,1]); B2 = matrix(k,4,[alpha,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1]); B3 = matrix(k,4,[alpha,0,alpha-2,alpha+3,0,1,1,0,0,0,1,1,0,0,0,1]); B1,B2,B3; /// }}}

The map xi -> Bi, i=1,2,3, defines a representation of G810 into GL(4,k):

{{{id=253| for r in G810.relations(): r(B1,B2,B3) /// }}} {{{id=255| BB1 = matrix(R,5,[alpha,0,0,0,x,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1]); BB2 = matrix(R,5,[alpha,1,0,0,y,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1]); BB3 = matrix(R,5,[alpha,0,alpha-2,alpha+3,z,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1]); BB1,BB2,BB3; /// }}}

For all possible promotions the relations never map simultaneously to the identity matrix since alpha*(8*alpha-6) = 2*alpha-8\neq 5*(alpha -1).

{{{id=257| G810.relations()[0](BB1,BB2,BB3);G810.relations()[1](BB1,BB2,BB3); /// }}} {{{id=270| alpha*(8*alpha-6) == 5*alpha - 5; /// }}}

Now we present the cohomological calculations:

For A in GL(n,k) The procedure Adgl(A) calcultes the matrix of the map Ad(A) : gl(n,k) -> gl(n,k) with respect to the cannonical basis of gl(n,k).

{{{id=120| def Adgl(A): if A.nrows() != A.ncols(): return "No square matrix" n = A.nrows() k = A.base_ring() if A.det()==0: return "matrix is not invetible" Mn = Mat(k,n) M = matrix(k,n^2,1,(A*(Mn.gen(0))*A.inverse()).list()) for i in range(1,n^2): M = M.augment(vector((A*(Mn.gen(i))*A.inverse()).list())) return M; /// }}}

For a matrix A in M(n,k) the command "A[:i,:i]" returns the principal submatrix of A which is formed by the first i rows and columns A[:i,:i] \in M(i,k).

{{{id=183| A1[:2,:2] /// }}} {{{id=121| Adgl(A1[:2,:2]); /// }}}

Let G be a finitely presented group which is defined by generators and relation (as G31 for example).

Let h  be a linear representation of G given by the image of the generators i.e. h=[A1,...,Am] if the presentation of G has m generators (as h = [A,B] for G31 for example).

The procedure Z1Ad(G,h) returns a matrix such that the right kernel of the matrix is a basis of Z^1(G; gl(n)_{Ad h}).

{{{id=130| def Z1Ad(G,h): H = [] for i in h: H = H + [Adgl(i)] Z1 = G.alexander_matrix(H) Z1 = block_matrix(len(G.relations()),G.ngens(),Z1.list()) return Z1; /// }}}

This procedure returns a matrix B1. The column vectors of B1 form a basis of B^1(G; gl(n)_{Ad h}).

{{{id=131| def B1Ad(G,h): n = (h[0]).nrows() B1 = Adgl(h[0])- matrix.identity(n^2) for i in range(1,len(h)): B1 = B1.stack(Adgl(h[i])-matrix.identity(n^2)) return B1; /// }}}

So, Z1Ad(G,h)*B1Ad(G,h) is a zero matrix.

{{{id=248| Z1Ad(G31,[A,B])*B1Ad(G31,[A,B]) /// }}}

We can do another test: we calculate the basis of Z1Ad(G31,[A,B]) and check that Z1Ad(G31,[A,B]) contains B1Ad(G31,[A,B]).

{{{id=239| Z131 = Z1Ad(G31,[A,B]).right_kernel(); Z131; /// }}} {{{id=246| B131 = span([vector(B1Ad(G31,[A,B])[:,0].list()),vector(B1Ad(G31,[A,B])[:,1].list()),vector(B1Ad(G31,[A,B])[:,2].list()),vector(B1Ad(G31,[A,B])[:,3].list())],k); B131 /// }}} {{{id=261| B131.is_subspace(Z131); /// }}}

We are interested in H^1(G; gl_{Ad h}), and dim_H1Ad(G,h) calculates the dim H^1(G; gl_{Ad h}).

Recall that if h is a representation into SL(n), then H^1(G; sl_{Ad h}) = H^1(G; gl_{Ad h}) -1.

{{{id=135| def dim_H1Ad(G,h): Z1 = Z1Ad(G,h) return Z1.ncols() - (Z1Ad(G,h).rank()) - (B1Ad(G,h).rank()) /// }}}

This is just a test that the coboundaries are in the space of cocycles.

We ask if Z1Ad(G820,h)*B1Ad(G820,h) and Z1Ad(G820,h)*B1Ad(G820,h) are zero matrices.

This takes a moment. If you want to see the result please remove the comment sign "#".

{{{id=133| #Z1Ad(G820,[A1,A2,A3])*B1Ad(G820,[A1,A2,A3])== matrix(k, len(G820.relations())*(A1.ncols())^2, (A1.ncols())^2, 0); /// }}} {{{id=262| #Z1Ad(G810,[B1,B2,B3])*B1Ad(G810,[B1,B2,B3])== matrix(k, len(G810.relations())*(B1.ncols())^2, (B1.ncols())^2, 0); /// }}}

Here we calculate the dimension of H^1(G820, gl(2)_{Ad h}) for the 2x2 matrices h=[A1[:2,:2],A2[:2,:2],A3[:2,:2]]

{{{id=136| dim_H1Ad(G820,[A1[:2,:2],A2[:2,:2],A3[:2,:2]]) /// }}}

So the dimension of  H^1(G820, sl(2)_{Ad h}) = 2 and Proposition 4.1 does not apply.


The dimension of H^1(G820, gl(3)_{Ad h}) for the 3x3 matrices h=[A1, A2, A3] is also 3.

Hence H^1(G820, sl(3)_{Ad h}) = 2 and Proposition 4.1 applies.

{{{id=142| dim_H1Ad(G820,[A1,A2,A3]); /// }}}

The dimension of H^1(G810, gl(2)_{Ad h}) for the 2x2 matrices h=[B1[:2,:2], B2[:2,:2], B3[:2,:2]] is 3.

Hence H^1(G810, sl(2)_{Ad h}) = 2 and Proposition 4.1 does not apply.

{{{id=147| dim_H1Ad(G810,[B1[0:2,0:2],B2[0:2,0:2],B3[0:2,0:2]]) /// }}}

The dimension of H^1(G810, gl(3)_{Ad h}) for the 3x3 matrices h=[B1[:3,:3], B2[:3,:3], B3[:3,:3]] is 4.

Hence H^1(G810, sl(3)_{Ad h}) = 3 and Proposition 4.1 does not apply.

{{{id=146| dim_H1Ad(G810,[B1[0:3,0:3],B2[0:3,0:3],B3[0:3,0:3]]) /// }}}

The dimension of H^1(G810, gl(4)_{Ad h}) for the 4x4 matrices h=[B1, B2, B3] is also 4.

Hence H^1(G810, sl(4)_{Ad h}) = 3 and Proposition 4.1 does apply.

{{{id=148| dim_H1Ad(G810,[B1,B2,B3]) /// }}}

 

The surjections G820 -> G31, and G810 -> G31

Now, we verify by calculation that there are homomorphisms of G810 and G820 onto G31 which map meridians to meridians.

MathSage can not define a homomorphism between finitely presented groups.

We will check that the map x1,x3 -> T ; x2 -> S defines a homomorphism of G810 onto G31, and the map x1 -> S ; x2,x3 -> T defines a homomorphism of G820 onto G31.


Let H = F(x_1,...,x_n) / N be a finite presentation, w = [w_1,..,w_m] a list of elements w_j in F, and h = [h_1,...,h_n] a list of elements of H where n = rank(F).

The procedure hom(w,h,H) returns a list of elements [v_1,...,v_m] in H where  v_i = w_i (h_1,...,h_n) if w_i = w_i(x_1,...x_n).

{{{id=159| def hom(w,h,H): def cyc_per(t): L=[] n = len(t) for i in range(n): temp=tuple([]) for j in range(n): temp = temp + tuple([t[(i+j)%n]]) L = L + [temp] return L if type(H) == type(FreeGroup(1)): K = H else: N = [] for r in H.relations(): N = N + [H(p) for p in cyc_per(r.Tietze()) ] + [H(p) for p in cyc_per((r^-1).Tietze())] K = H.free_group() / N im = [] for wi in w: imwi = tuple([]) for j in range(len(wi.Tietze())): if wi.Tietze()[j] >0 : imwi = imwi + h[wi.Tietze()[j]-1].Tietze() else: imwi = imwi + (h[abs(wi.Tietze()[j])-1]^-1).Tietze() im = im + [imwi] im_w = [] if type(H) == type(FreeGroup(1)): for i in im: im_w = im_w + [K(i)] else: RWS = K.rewriting_system() for i in im: im_w = im_w + [RWS.reduce(K(i))] return im_w /// }}} {{{id=211| for r in G810.relations(): print( r ) /// (x2*x3*x2*(x3^-1*x2^-1)^2*x1^-1*(x2*x3)^2*x2^-1*x3^-1*x2^-1*x1*x2*x3)^2*x2*x3*(x2^-1*x3^-1)^2*x2^-1*x1^-1*x2*x3*x2*(x3^-1*x2^-1)^2*x1*(x2*x3)^2*x2^-1*x3^-1*x2^-1*x1^-1 x2*x3*x2*(x3^-1*x2^-1)^2*x1^-1*(x2*x3)^2*x2^-1*x3^-1*x2^-1*x1*(x2*x3)^2*x2*((x3^-1*x2^-1)^2*x1^-1*x2*x3*x2*(x3^-1*x2^-1)^2*x1*(x2*x3)^2*x2^-1)^2*x3^-1*x2^-1*x1*(x2*x3)^2*x2*(x3^-1*x2^-1)^2*x1^-1*(x2*x3)^2*x2^-1*x3^-1*x2^-1*x1*(x2*x3)^2*(x2^-1*x3^-1)^2*x2^-1*x1^-1*x2*x3*x2*(x3^-1*x2^-1)^2*x1*(x2*x3)^2*x2^-1*x3^-1*x2^-2 }}} {{{id=208| hom(G810.relations(),[T,S,T],G31) /// }}}

Therefore, the map x_1 -> T, x_2 -> S, and x_3 -> T defines epimorphisms of G810 onto G31.

{{{id=209| hom(G820.relations(),[S,T,T],G31) /// }}}

Therefore, the map x_1 -> S, x_2 -> T, and x_3 -> T defines epimorphisms of G810 onto G31.

{{{id=271| /// }}} {{{id=272| /// }}}