Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
108 views
unlisted
ubuntu2204
Kernel: SageMath 9.8

The group SL2(F3)\mathbf{SL}_2(\mathbf{F}_3) (the binary tetrahedral group) is not the group of units in a ring of characteristic 4.

# Creates R = Z_C[G]. # # G is the group (GAP) # L is a list of labels for elements of G; the order # should match G.Elements() # C is the ring characteristic # verbose should be set to true if you want to print # the operation table to check your labels def TableRing(G, L, C, verbose=False): OrdG = int(G.Order()) T = gap.EmptySCTable(OrdG,0) GE = G.Elements() GD = {g: i for i, g in enumerate(GE)} if verbose: print("Group multiplication:") print("---------------------") for i in [1..OrdG]: for j in [1..OrdG]: if verbose: print(L[i-1], "*", L[j-1], "=", L[GD[GE[i]*GE[j]]]) gap.SetEntrySCTable(T,i,j,[1, GD[GE[i]*GE[j]]+1]) O = [C]*OrdG return gap.RingByStructureConstants(O, T, L)
# SL(2,3) is not realizable in characteristic 4. G = gap.SmallGroup(24,3) # To check that L is correct, change "False" to "True" in R = TableRing(...) below and inspect the result. # # The element c below has order 3. L = libgap(["1", "c", "i", "j", "-1", "c^2", "ci", "cj", "-c", "k", "-i", "-j", "c^2i", "c^2j", "-c^2", "ck", "-ci", "-cj", "-k", "c^2k", "-c^2i", "-c^2j", "-ck", "-c^2k"]) C = 4 R = TableRing(G, L, C, False) Gens = gap.GeneratorsOfRing(R)
# These computations take place in Z_4[G]. In a ring of char 4 that realizes G, # several relations are forced, as we shall see. # # Below, x = 1 + c + i. x = Gens[1] + Gens[3] + Gens[2] print("x =", x) print("x^24 =", x^(24)) print("x^2 =", x^2) print("x^3 =", x^3) print("(i+j+k-1)^2 =", (Gens[3] + Gens[4] + Gens[10] + Gens[5])^2) print("(i+j+k)^2 =", (Gens[3] + Gens[4] + Gens[10])^2)
x = 1+c+i x^24 = 1 x^2 = 1+2*c+2*i+-1+c^2+ci+cj x^3 = 2*1-c-i--1-c^2-ci-cj+2*-c+-i+c^2i+c^2j+c^2k+-ck (i+j+k-1)^2 = 1+i+j--1+k--i--j--k (i+j+k)^2 = i+j--1+k+-i+-j+-k

Suppose R=Z4[G]/IR = \mathbf{Z}_4[G]/I has characteristic 4 and realizes G=SL2(F3).G = \mathbf{SL}_2(\mathbf{F}_3). In what follows, we make use of the computations in the above cell which occur in Z4[G]. \mathbf{Z}_4[G].

Working mod II, we know that 1+i2=01 + i^2 = 0 since i2i^2 is the unique element of order 2 in GG. Since (i+j+k)2=1,(i + j + k)^2 = 1, we have that i+j+k±1I.i + j + k \pm 1 \in I. For any rGr \in G, (1+2r)2=1(1 + 2r)^2 = 1, so either 2r=02r = 0 or 2r=22r = 2 mod II. But since rr is a unit and 202 \neq 0 in R,R, we must have 2r=22r = 2 mod II for all rGr \in G. Using all this, and the above computation of x3,x^3, we see that x3=2ci+1c2cicj2ci+c2i+c2j+c2kck=32i3cc(i+j+k)+c2(i+j+k1)=1+(c2c)(i+j+k1)\begin{aligned} x^3 &= 2 - c - i + 1 - c^2 -ci-cj-2c-i+c^2i+c^2j+c^2k-ck\\ &= 3 - 2i - 3c -c(i+j+k)+c^2(i+j+k-1) \\ &= 1+ (c^2-c)(i+j+k-1)\end{aligned} If i+j+k+1I,i + j + k + 1 \in I, we obtain x3=1+2(c2c)=1+22=1x^3 = 1 + 2(c^2 - c) = 1 +2 - 2 = 1 so x3=1x^3 = 1 and xx has order 1 or 3. If i+j+k1I,i + j + k -1 \in I, then xx again has order 1 or 3. We check all cases below and we see that GG is never realized. (The below computations show that the natrual map GRG \longrightarrow R cannot be injective, a contradiction.)

GE = G.Elements() print("i + j + k + 1 cases:") for l in [1..24]: if int(GE[l].Order()) == 3 or int(GE[l].Order()) == 1: print("------------") print("x =", Gens[l]) I = gap.Ideal(R, [Gens[1]+Gens[5], Gens[1]+Gens[3]+Gens[4]+Gens[10], x + Gens[5]*Gens[l]]) S = R/I; print("S has order", S.Size(), "and characteristic", S.Characteristic()) #print("2 is in I:", Gens[1] + Gens[1] in I) U = gap.Units(S); print("S* =", U.StructureDescription()) print("------------") print() print("i + j + k - 1 cases:") for l in [1..24]: if int(GE[l].Order()) == 3 or int(GE[l].Order()) == 1: print("------------") print("x =", Gens[l]) I = gap.Ideal(R, [Gens[1]+Gens[5], Gens[5]+Gens[3]+Gens[4]+Gens[10], x + Gens[5]*Gens[l]]) S = R/I; print("S has order", S.Size(), "and characteristic", S.Characteristic()) #print("2 is in I:", Gens[1] + Gens[1] in I) U = gap.Units(S); print("S^* =", U.StructureDescription()) print("------------")
i + j + k + 1 cases: ------------ x = 1 S has order 2 and characteristic 2 S* = 1 ------------ ------------ x = c S has order 8 and characteristic 2 S* = C3 ------------ ------------ x = c^2 S has order 2 and characteristic 2 S* = 1 ------------ ------------ x = ci S has order 32 and characteristic 2 S* = A4 ------------ ------------ x = cj S has order 32 and characteristic 2 S* = A4 ------------ ------------ x = ck S has order 32 and characteristic 2 S* = A4 ------------ ------------ x = -c^2i S has order 2 and characteristic 2 S* = 1 ------------ ------------ x = -c^2j S has order 2 and characteristic 2 S* = 1 ------------ ------------ x = -c^2k S has order 2 and characteristic 2 S* = 1 ------------ i + j + k - 1 cases: ------------ x = 1 S has order 2 and characteristic 2 S^* = 1 ------------ ------------ x = c S has order 8 and characteristic 2 S^* = C3 ------------ ------------ x = c^2 S has order 2 and characteristic 2 S^* = 1 ------------ ------------ x = ci S has order 32 and characteristic 2 S^* = A4 ------------ ------------ x = cj S has order 32 and characteristic 2 S^* = A4 ------------ ------------ x = ck S has order 32 and characteristic 2 S^* = A4 ------------ ------------ x = -c^2i S has order 2 and characteristic 2 S^* = 1 ------------ ------------ x = -c^2j S has order 2 and characteristic 2 S^* = 1 ------------ ------------ x = -c^2k S has order 2 and characteristic 2 S^* = 1 ------------