A GrothendieckWittClass object is a type of HashTable encoding the isomorphism class of a non-degenerate symmetric bilinear form $V \times V \to k$ over a field $k$.
Given any basis $e_1,\ldots,e_n$ for $V$ as a $k$-vector space, we can encode the symmetric bilinear form $\beta$ by how it acts on basis elements. That is, we can produce a matrix $\left(\beta(e_i,e_j)\right)_{i,j}$. This is called a Gram matrix for the symmetric bilinear form. A change of basis produces a congruent Gram matrix, so thus a matrix represents a symmetric bilinear form uniquely up to matrix congruence.
A GrothendieckWittClass object can be built from a symmetric matrix over a field using the makeGWClass method.
|
|
The underlying matrix representative of a form can be recovered via the getMatrix command or the matrix command, and its underlying field can be recovered using getBaseField.
|
|
For computational purposes, it is often desirable to diagonalize a Gram matrix. Any symmetric bilinear form admits a diagonal Gram matrix representative, and this is implemented via the getDiagonalClass method.
|
Once a form has been diagonalized, it is recorded in the cache for GrothendieckWittClass and can therefore be quickly recovered.
|
We additionally have the following methods which can be applied to Grothendieck-Witt classes:
and Boolean methods for Grothendieck-Witt classes:
Forms can be created via the following methods:
The object GrothendieckWittClass is a type, with ancestor classes HashTable < Thing.