next | previous | forward | backward | up | index | toc

# gwIsomorphic -- determines whether two Grothendieck Witt classes are isomorphic over CC, RR, QQ, or a finite field.

## Synopsis

• Usage:
gwIsomorphic(alpha,beta)
• Inputs:
• alpha, , denoted by $\alpha$
• beta, , denoted by $\beta$
• Outputs:
• , returns true or false depending on whether two Grothendieck Witt classes are equal in the Grothendieck-Witt ring

## Description

Given two matrices representing symmetric bilinear forms over a field $k$, it is a fundamental question to ask when they are representing the same symmetric bilinear form, i.e. when they are equal in the Grothendieck-Witt ring $\text{GW}(k)$.

Sylvester's Law of Inertia proves that any symmetric bilinear form can be diagonalized into a block sum of rank one symmetric bilinear forms. Since the rank one forms $\langle a \rangle \colon k \times k \to k$, $(x,y) \mapsto axy$ and $\langle ab^2 \rangle \colon k \times k \to k$, $(x,y) \mapsto ab^2xy$ differ by a change of basis in the ground field, it follows they are isomorphic (provided that $a,b\ne 0$). Thus after diagonalizing a form, it suffices to consider the square class of each entry appearing along the diagonal. Consider the following example over the complex numbers:

 i1 : alpha = gwClass(matrix(CC,{{2,3,1},{3,-1,0},{1,0,0}})) o1 = GrothendieckWittClass{cache => CacheTable{}} matrix => | 2 3 1 | | 3 -1 0 | | 1 0 0 | o1 : GrothendieckWittClass i2 : beta = gwClass(matrix(CC,{{2,4,-1},{4,5,7},{-1,7,9}})) o2 = GrothendieckWittClass{cache => CacheTable{}} matrix => | 2 4 -1 | | 4 5 7 | | -1 7 9 | o2 : GrothendieckWittClass i3 : gwIsomorphic(alpha,beta) o3 = true

The two forms are isomorphic since they can be diagonalized, after which they can be rewritten as the identity matrix after a change of basis, since every nonzero element is a square class over $\mathbb{C}$ (the same is true for any quadratically closed field). Thus we have that the rank of a form completely determines it over the complex numbers. That is, it provides an isomorphism $\text{GW}(\mathbb{C}) \to \mathbb{Z}$.

Over the reals, the story is a bit different. Since there are two classes over the reals, $\mathbb{R}^\times / \left(\mathbb{R}^\times\right)^2 \cong \left\{\pm 1\right\}$ we have a further invariant which classifies symmetric bilinear forms, called the signature. This is computed as first diagonalizing, then taking the number of positive entries appearing on the diagonal minus the number of negative entries appearing on the diagonal.

 i4 : gamma = gwClass(matrix(RR,{{1,0,0},{0,-1,0},{0,0,1}})); i5 : signature(gamma) o5 = 1

Rank and signature completely classify symmetric bilinear forms over the reals.

 i6 : delta = gwClass(matrix(RR,{{0,0,1},{0,1,0},{1,0,0}})); i7 : gwIsomorphic(gamma,delta) o7 = true

Over finite fields, rank is still an invariant of a form, however signature no longer makes sense as the field is not totally ordered. Instead we consider the discriminant of the non-degenerate symmetric bilinear form, which is the determinant of any Gram matrix representing the form. The discriminant is well-defined once we consider its target as landing in square classes of the field. $\text{GW}(\mathbb{F}_q) \to \mathbb{F}_q^\times / \left(\mathbb{F}_q^\times\right)^2$. Over finite fields we look to compare both rank and discriminant of a form.

 i8 : alphaF = gwClass(matrix(GF(7),{{1,2,2},{2,0,1},{2,1,5}})) o8 = GrothendieckWittClass{cache => CacheTable{}} matrix => | 1 2 2 | | 2 0 1 | | 2 1 -2 | o8 : GrothendieckWittClass i9 : betaF = gwClass(matrix(GF(7),{{2,5,1},{5,6,1},{1,1,3}})) o9 = GrothendieckWittClass{cache => CacheTable{}} matrix => | 2 -2 1 | | -2 -1 1 | | 1 1 3 | o9 : GrothendieckWittClass i10 : gammaF = gwClass(matrix(GF(7),{{0,2,4},{2,3,3},{4,3,1}})) o10 = GrothendieckWittClass{cache => CacheTable{}} matrix => | 0 2 -3 | | 2 3 3 | | -3 3 1 | o10 : GrothendieckWittClass i11 : det(alphaF.matrix) o11 = 1 o11 : GF 7 i12 : det(betaF.matrix) o12 = -2 o12 : GF 7 i13 : det(gammaF.matrix) o13 = 3 o13 : GF 7

We see that $\text{disc}(\alpha)$ is a square, while the discriminants of $\beta$ and $\gamma$ are not. Therefore we see that $\beta \cong \gamma$ but neither of them are isomorphic to $\alpha$.

 i14 : gwIsomorphic(alphaF,betaF) o14 = false i15 : gwIsomorphic(alphaF,gammaF) o15 = false i16 : gwIsomorphic(betaF,gammaF) o16 = true

Over the rationals, further invariants must be considered. We first check if the rank, discriminant, and signature (when considered as a real form) all agree. If so, we must further check whether the Hasse-Witt invariants agree at all primes. This is an instance of the Hasse-Minkowski principle which states that quadratic forms are isomorphic over a global field if and they are isomorphic over all its completions (see [S73, IV Theorem 7] or [L05, VI.3.3]).

The Hasse-Witt invariant of a diagonal form $\langle a_1,\ldots,a_n\rangle$ over a field $K$ is defined to be the product $\prod_{i<j} \left( \phi(a_i,a_j) \right)$ where $\phi \colon K \times K \to \left\{\pm 1\right\}$ is any symbol (see e.g. [MH73, III.5.4] for a definition). It is a classical result of Hilbert that over a local field of characteristic not equal to two, there is one and only symbol, $(-,-)_p$ called the Hilbert symbol ([S73, Chapter III]) computed as follows:

$(a,b)_p = \begin{cases} 1 & z^2 = ax^2 + by^2 \text{ has a nonzero solution in } K^3 \\ -1 & \text{otherwise.} \end{cases}$

Consider the following example, where we observe that $z^2 = 2x^2 + y^2$ does admit nonzero solutions mod 7, in particular $(x,y,z) = (1,0,3)$:

 i17 : HilbertSymbol(2,1,7) o17 = 1

The Hasse invariant will be 1 for almost all primes. In particular after diagonalizing a form $\beta \cong \left\langle a_1,\ldots,a_n\right\rangle$ then the Hasse invariant at a prime $p$ will be 1 automatically if $p\nmid a_i$ for all $i$. Thus we only have finitely many Hasse invariants to compare for any pair of symmetric bilinear forms.

 i18 : alphaQ = gwClass(matrix(QQ,{{1,4,7},{4,3,2},{7,2,-1}})) o18 = GrothendieckWittClass{cache => CacheTable{}} matrix => | 1 4 7 | | 4 3 2 | | 7 2 -1 | o18 : GrothendieckWittClass i19 : betaQ = gwClass(matrix(QQ,{{0,0,1},{0,2,7},{1,7,3}})) o19 = GrothendieckWittClass{cache => CacheTable{}} matrix => | 0 0 1 | | 0 2 7 | | 1 7 3 | o19 : GrothendieckWittClass i20 : gwIsomorphic(alphaQ,betaQ) o20 = false

Citations:

• [S73] J.P. Serre, A course in arithmetic, Springer-Verlag, 1973.
• [L05] T.Y. Lam, Introduction to quadratic forms over fields, American Mathematical Society, 2005.
• [MH73] Milnor and Husemoller, Symmetric bilinear forms, Springer-Verlag, 1973.