# B2 calculation

## 3335 days ago by jimlb

First we will just do $GL_2$ as we know it works in this case so it is just verifying the calculation does what we want it to.

G=GL(2,GF(3));G
 $\newcommand{\Bold}{\mathbf{#1}}\text{GL}_{2}(\Bold{F}_{3})$
M=Mat(GF(3),2,2);M
 $\newcommand{\Bold}{\mathbf{#1}}\mathrm{Mat}_{2\times 2}(\Bold{F}_{3})$
B1=[];

The set $B_1$ contains the matrices from $U_p$.

for z in [0..2]: B1.append(M([[0,z],[0,1]]));
B1;
 $\newcommand{\Bold}{\mathbf{#1}}\left[\left(\begin{array}{rr} 0 & 0 \\ 0 & 1 \end{array}\right), \left(\begin{array}{rr} 0 & 1 \\ 0 & 1 \end{array}\right), \left(\begin{array}{rr} 0 & 2 \\ 0 & 1 \end{array}\right)\right]$

The set $B_2$ is the remaining matrix in this case.

B2=[Matrix(GF(3),[[1,0],[0,0]])];B2
 $\newcommand{\Bold}{\mathbf{#1}}\left[\left(\begin{array}{rr} 1 & 0 \\ 0 & 0 \end{array}\right)\right]$

Here we just take a random element of $GL_2(\mathbb{F}_3)$.  It is important to note whether it is in $K_0(3)$ to match up the results with our expectations.

g=G.random_element();g
 $\newcommand{\Bold}{\mathbf{#1}}\left(\begin{array}{rr} 1 & 1 \\ 2 & 1 \end{array}\right)$

The sets $S_1\subset B_1$ and $S_2\subset B_2$ are the sets that are "hit" by $g$.

S1=[];S2=[]
S1;
 $\newcommand{\Bold}{\mathbf{#1}}\left[\right]$
S2;
 $\newcommand{\Bold}{\mathbf{#1}}\left[\right]$
for h in G: for a in B1: for b in B1: if M(g)*a==b*M(h): if b not in S1: S1.append(b) for c in B2: if M(g)*a == c*M(h): if c not in S2: S2.append(c)
S2;
 $\newcommand{\Bold}{\mathbf{#1}}\left[\left(\begin{array}{rr} 1 & 0 \\ 0 & 0 \end{array}\right)\right]$

Note we get what is expected here.  To get the other element of $B_1$, we would just consider where $B_2$ maps.  This shows our expectation is valid for this case in $GL_2$.

S1;
 $\newcommand{\Bold}{\mathbf{#1}}\left[\left(\begin{array}{rr} 0 & 1 \\ 0 & 1 \end{array}\right), \left(\begin{array}{rr} 0 & 0 \\ 0 & 1 \end{array}\right)\right]$

We now want to do the same procedure with $Sp(4)$. In order to agree with Taylor's conventions (which are necessary to use his cosets), we must define $Sp(4)$ in SAGE and not use the built-in definition. The following function builds Taylor's Sp_4(\mathbb{F}_p)$upon inputting$p$. def Sp4(p): M=Mat(GF(p),4,4); J=M([[0,0,1,0],[0,0,0,1],[-1,0,0,0],[0,-1,0,0]]); Sp4=[]; for g in GL(4,GF(p)): if M(g)*J*M(g).transpose() == J: Sp4.append(M(g)) return Sp4 We check this for$Sp_4(\mathbb{F}_2)$by constructing the group and then checking how many elements it has. G=Sp4(2); len(G)  $\newcommand{\Bold}{\mathbf{#1}}720$ Sp(4,GF(2)).order()  $\newcommand{\Bold}{\mathbf{#1}}720$ Next we define the space of 4 by 4 matrices. M=Mat(GF(2),4,4);M  $\newcommand{\Bold}{\mathbf{#1}}\mathrm{Mat}_{4\times 4}(\Bold{F}_{2})$ We now define the coset representatives$\mathcal{B}_{i}$for$i = 1, \dots, 4$as in Lemma 5.3. B1=[]; for z in GF(2): for x in GF(2): for y in GF(2): B1.append(M([[1,0,x,y],[0,1,y,z],[0,0,1,0],[0,0,0,1]])*M([[2,0,0,0],[0,2,0,0],[0,0,1,0],[0,0,0,1]])); B1;  $\newcommand{\Bold}{\mathbf{#1}}\left[\left(\begin{array}{rrrr} 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right), \left(\begin{array}{rrrr} 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right), \left(\begin{array}{rrrr} 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right), \left(\begin{array}{rrrr} 0 & 0 & 1 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right), \left(\begin{array}{rrrr} 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right), \left(\begin{array}{rrrr} 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right), \left(\begin{array}{rrrr} 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right), \left(\begin{array}{rrrr} 0 & 0 & 1 & 1 \\ 0 & 0 & 1 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right)\right]$ B2=[]; for z in GF(2): for x in GF(2): B2.append(M([[1,0,0,0],[x,1,0,-z],[0,0,1,-x],[0,0,0,1]])*M([[1,0,0,0],[0,2,0,0],[0,0,2,0],[0,0,0,1]])); B2;  $\newcommand{\Bold}{\mathbf{#1}}\left[\left(\begin{array}{rrrr} 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right), \left(\begin{array}{rrrr} 1 & 0 & 0 & 0 \\ 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 1 \end{array}\right), \left(\begin{array}{rrrr} 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right), \left(\begin{array}{rrrr} 1 & 0 & 0 & 0 \\ 1 & 0 & 0 & 1 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 1 \end{array}\right)\right]$ B3=[]; for x in GF(2): B3.append(M([[1,0,x,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]])*M([[2,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,2]])) B3;  $\newcommand{\Bold}{\mathbf{#1}}\left[\left(\begin{array}{rrrr} 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 \end{array}\right), \left(\begin{array}{rrrr} 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 \end{array}\right)\right]$ B4= [M([[1,0,0,0],[0,1,0,0],[0,0,2,0],[0,0,0,2]])];B4  $\newcommand{\Bold}{\mathbf{#1}}\left[\left(\begin{array}{rrrr} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{array}\right)\right]$ We now want to consider the image of the injection$\sigma_{g}: \mathcal{B}_1 \rightarrow \mathcal{B}$induced by some$g \in K_0(1)$. Since our version of$Sp(4)$is now a list, we cannot pick an element randomly. So just put$G[j]$for$j$being any number between$0$and$719$. g=G;g  $\newcommand{\Bold}{\mathbf{#1}}\left(\begin{array}{rrrr} 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 1 \end{array}\right)$ The following function determines the image of$\sigma_{g}$. In particular, one types in coset_partition(G[j]) for$j$an integer you pick between$0$and$719$and the program will output the image of$\sigma_g$. The output is a list of lists, so the first collection of elements is the image intersected with$\mathcal{B}_1\$, etc.

def coset_partition(g): S1=[]; S2=[]; S3=[]; S4=[]; for h in G: for b1 in B1: for b2 in B1: if g*b1 == b2*h: if b2 not in S1: S1.append(b2) for c in B2: if g*b1 == c*h: if c not in S2: S2.append(c) for d in B3: if g*b1 == d*h: if d not in S3: S3.append(d) for e in B4: if g*b1== e*h: if e not in S4: S4.append(e) S=[S1,S2,S3,S4]; return S
coset_partition(G)
 $\newcommand{\Bold}{\mathbf{#1}}\left[\left[\left(\begin{array}{rrrr} 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right), \left(\begin{array}{rrrr} 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right), \left(\begin{array}{rrrr} 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right), \left(\begin{array}{rrrr} 0 & 0 & 1 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right)\right], \left[\left(\begin{array}{rrrr} 1 & 0 & 0 & 0 \\ 1 & 0 & 0 & 1 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 1 \end{array}\right), \left(\begin{array}{rrrr} 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right)\right], \left[\left(\begin{array}{rrrr} 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 \end{array}\right)\right], \left[\left(\begin{array}{rrrr} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{array}\right)\right]\right]$