I need someone with a keen eye for errors. I am trying to use the Weyl character formula for Sp(4,C) on certain matrices coming from 2x2 quaternion matrices. Summing these traces in my case should give an integer output (since they are supposed to represent dimensions of spaces of modular forms)...however I am not getting integers.

In particular I have a quaternion algebra (which for now is just Hamiltons quaternions) and a maximal order. The units of this maximal order (which form the list A) are being used to create 2x2 diagonal and anti diagonal matrices, forming a group G. In order to apply Weyl's character formula I am using a homomorphism into Sp(4,C) to get 4x4 complex symplectic matrices. The commands quat1, quat2, quat3, quat4 and Mat do this below (the maths is correct, we do actually get a symplectic matrix so there is nothing to worry about on that side of things). The set Gamma1 below is the 4x4 version of G lying inside Sp(4,C).

In order to use the Weyl character formula I must plug two non-conjugate eigenvalues from each element of Gamma1 into a certain rational function which I define by the use of P and Weyl. This part of the program is correct since I used it in a previous sheet for other dimension calculations.

I then get the dimension by summing these values and dividing by the number of elements in Gamma1. However I am getting rational number outputs when I should be getting integers. Can anyone see the errors?

**MY CODE:**

with(LinearAlgebra):

with(linalg):

quat1:= proc(a::list); a[1] + a[2]*I; end proc:

quat2:= proc(a::list); a[1] - a[2]*I; end proc:

quat3:= proc(a::list); a[3] + a[4]*I; end proc:

quat4:= proc(a::list); -a[3] + a[4]*I; end proc:

Mat:=proc(a::list,b::list,c::list,d::list); Matrix([[quat1(a), quat1(b), quat3(a), quat3(b)],[quat1(c), quat1(d), quat3(c), quat3(d)],[quat4(a), quat4(b), quat2(a), quat2(b)],[quat4(c), quat4(d), quat2(c), quat2(d)]]); end proc:

A:=[[1,0,0,0],[-1,0,0,0],[0,1,0,0],[0,-1,0,0],[0,0,1,0],[0,0,-1,0],[0,0,0,1],[0,0,0,-1], [1/2,1/2,1/2,1/2],[1/2,1/2,1/2,-1/2],[1/2,1/2,-1/2,1/2],[1/2,1/2,-1/2,-1/2],[1/2,-1/2,1/2,1/2],[1/2,-1/2,1/2,-1/2],[1/2,-1/2,-1/2,1/2],[1/2,-1/2,-1/2,-1/2],[-1/2,1/2,1/2,1/2],[-1/2,1/2,1/2,-1/2], [-1/2,1/2,-1/2,1/2],[-1/2,1/2,-1/2,-1/2],[-1/2,-1/2,1/2,1/2],[-1/2,-1/2,1/2,-1/2],[-1/2,-1/2,-1/2,1/2],[-1/2,-1/2,-1/2,-1/2]]:

Gamma1:= [seq(seq(Mat(A[i],[0,0,0,0],[0,0,0,0],A[j]),i=1..24),j=1..24), seq(seq(Mat([0,0,0,0],A[i],A[j],[0,0,0,0]),i=1..24),j=1..24)]:

EV:=[seq(Eigenvalues(Gamma1[i]), i=1..1152)]:

Q1:= proc(i); if (conjugate(EV[i][1]) - EV[i][3] = 0) then EV[i][4] else EV[i][3] end if; end proc:

Q2:= proc(i); if (conjugate(EV[i][1]) - EV[i][2] = 0) then Q1(i) else EV[i][2] end if; end proc:

Weyl:= proc(m::integer,n::integer); simplify((a^(2*m+2*n+4)*b^(m+2*n+3) - a^(2*m+2*n+4)*b^(m+1) - b^(m+2*n+3) + b^(m+1) - a^(m+2*n+3)*b^(2*m+2*n+4) + a^(m+1)*b^(2*m+2*n+4) + a^(m+2*n+3) - a^(m+1))/((a^2-1)*(b^2-1)*(a*b-1)*(a-b))); end proc:

P:=proc(x,y,m,n); subs(a=x,b=y,b=y,Weyl(m,n)/(a^(m+n)*b^(m+n))); end proc:

dim:= proc(m::integer,n::integer); simplify(expand(sum(P(EV[j][1], Q2(j),m,n),j=1..1152)))/1152; end proc: