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

# GrothendieckWittClass -- a new type, intended to capture the isomorphism class of an element of the Grothendieck-Witt ring of a base field

## Description

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 will produce a congruent Gram matrix, 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 gwClass method.

 i1 : beta = gwClass(matrix(QQ,{{0,1},{1,0}})) o1 = GrothendieckWittClass{cache => CacheTable{}} matrix => | 0 1 | | 1 0 | o1 : GrothendieckWittClass i2 : class beta o2 = GrothendieckWittClass o2 : Type

The underlying matrix representative of a form can be recovered via the matrix command, and its underlying field can be recovered using baseField.

 i3 : beta.matrix o3 = | 0 1 | | 1 0 | 2 2 o3 : Matrix QQ <-- QQ i4 : baseField(beta) o4 = QQ o4 : Ring

For computational purposes, it is often desirable to diagonalize a Gram matrix. Any symmetric bilinear form admits a diagonal Gram matrix representative by Sylvester's law of inertia, and this is implemented via the diagonalClass method.

 i5 : diagonalClass(beta) o5 = GrothendieckWittClass{cache => CacheTable{}} matrix => | 2 0 | | 0 -2 | o5 : GrothendieckWittClass

Once a form has been diagonalized, it is recorded in the cache for GrothendieckWittClass and can therefore be quickly recovered.

 i6 : beta.cache.diagonalClass o6 = GrothendieckWittClass{cache => CacheTable{}} matrix => | 2 0 | | 0 -2 | o6 : GrothendieckWittClass

• gwClass -- the Grothendieck Witt class of a symmetric matrix
• diagonalClass -- produces a diagonalized form for any Grothendieck-Witt class, with simplified terms on the diagonal
• baseField -- the base field of a Grothendieck Witt class

## Functions and methods returning a Grothendieck Witt Class :

• anisotropicPart(GrothendieckWittClass) -- see anisotropicPart -- returns the anisotropic part of a Grothendieck Witt class
• diagonalClass(GrothendieckWittClass) -- see diagonalClass -- produces a diagonalized form for any Grothendieck-Witt class, with simplified terms on the diagonal
• diagonalForm(InexactFieldFamily,QQ) -- see diagonalForm -- the Grothendieck-Witt class of a diagonal form
• diagonalForm(InexactFieldFamily,RingElement) -- see diagonalForm -- the Grothendieck-Witt class of a diagonal form
• diagonalForm(InexactFieldFamily,Sequence) -- see diagonalForm -- the Grothendieck-Witt class of a diagonal form
• diagonalForm(InexactFieldFamily,ZZ) -- see diagonalForm -- the Grothendieck-Witt class of a diagonal form
• diagonalForm(Ring,QQ) -- see diagonalForm -- the Grothendieck-Witt class of a diagonal form
• diagonalForm(Ring,RingElement) -- see diagonalForm -- the Grothendieck-Witt class of a diagonal form
• diagonalForm(Ring,Sequence) -- see diagonalForm -- the Grothendieck-Witt class of a diagonal form
• diagonalForm(Ring,ZZ) -- see diagonalForm -- the Grothendieck-Witt class of a diagonal form
• globalA1Degree(List) -- see globalA1Degree -- computes a global A1-Brouwer degree of a list of n polynomials in n variables over a field k
• gwAdd(GrothendieckWittClass,GrothendieckWittClass) -- see gwAdd -- the direct sum of two Grothendieck-Witt classes
• gwClass(Matrix) -- see gwClass -- the Grothendieck Witt class of a symmetric matrix
• gwMultiply(GrothendieckWittClass,GrothendieckWittClass) -- see gwMultiply -- the tensor product of two Grothendieck-Witt classes
• hyperbolicForm(InexactFieldFamily) -- see hyperbolicForm -- the Grothendieck-Witt class of a hyperbolic form
• hyperbolicForm(InexactFieldFamily,ZZ) -- see hyperbolicForm -- the Grothendieck-Witt class of a hyperbolic form
• hyperbolicForm(Ring) -- see hyperbolicForm -- the Grothendieck-Witt class of a hyperbolic form
• hyperbolicForm(Ring,ZZ) -- see hyperbolicForm -- the Grothendieck-Witt class of a hyperbolic form
• localA1Degree(List,Ideal) -- see localA1Degree -- computes a local A1-Brouwer degree of a list of n polynomials in n variables over a field k at a prime ideal in the zero locus
• PfisterForm(InexactFieldFamily,QQ) -- see PfisterForm -- the Grothendieck-Witt class of a Pfister form
• PfisterForm(InexactFieldFamily,RingElement) -- see PfisterForm -- the Grothendieck-Witt class of a Pfister form
• PfisterForm(InexactFieldFamily,Sequence) -- see PfisterForm -- the Grothendieck-Witt class of a Pfister form
• PfisterForm(InexactFieldFamily,ZZ) -- see PfisterForm -- the Grothendieck-Witt class of a Pfister form
• PfisterForm(Ring,QQ) -- see PfisterForm -- the Grothendieck-Witt class of a Pfister form
• PfisterForm(Ring,RingElement) -- see PfisterForm -- the Grothendieck-Witt class of a Pfister form
• PfisterForm(Ring,Sequence) -- see PfisterForm -- the Grothendieck-Witt class of a Pfister form
• PfisterForm(Ring,ZZ) -- see PfisterForm -- the Grothendieck-Witt class of a Pfister form
• sumDecomposition(GrothendieckWittClass) -- see sumDecomposition -- produces a simplified diagonal representative of a Grothendieck Witt class

## Methods that use a Grothendieck Witt Class :

• anisotropicDimension(GrothendieckWittClass) -- see anisotropicDimension -- returns the anisotropic dimension of a symmetric bilinear form
• anisotropicDimensionQp(GrothendieckWittClass,ZZ) -- see anisotropicDimensionQp -- returns the anisotropic dimension of a rational symmetric bilinear form over the p-adics
• baseField(GrothendieckWittClass) -- see baseField -- the base field of a Grothendieck Witt class
• diagonalEntries(GrothendieckWittClass) -- see diagonalEntries -- extracts a list of diagonal entries for a GrothendieckWittClass
• matrix(GrothendieckWittClass) -- see gwClass -- the Grothendieck Witt class of a symmetric matrix
• gwIsomorphic(GrothendieckWittClass,GrothendieckWittClass) -- see gwIsomorphic -- determines whether two Grothendieck Witt classes are isomorphic over CC, RR, QQ, or a finite field.
• HasseWittInvariant(GrothendieckWittClass,ZZ) -- see HasseWittInvariant -- outputs the Hasse-Witt invariant for a prime p for the quadratic form of the Grothendieck-Witt class
• integralDiscriminant(GrothendieckWittClass) -- see integralDiscriminant -- outputs an integral discriminant for a rational symmetric bilinear form
• isAnisotropic(GrothendieckWittClass) -- see isAnisotropic -- determines whether a Grothendieck-Witt class is anisotropic
• isIsotropic(GrothendieckWittClass) -- see isIsotropic -- determines whether a Grothendieck-Witt class is isotropic
• relevantPrimes(GrothendieckWittClass) -- see relevantPrimes -- outputs a list of primes at which the Hasse-Witt invariants of a symmetric bilinear form may be non-trivial
• signature(GrothendieckWittClass) -- see signature -- outputs the signature of a symmetric bilinear form over the real or rational numbers
• sumDecompositionString(GrothendieckWittClass) -- see sumDecompositionString -- produces a simplified diagonal representative of a Grothendieck Witt class
• WittIndex(GrothendieckWittClass) -- see WittIndex -- returns the Witt index of a symmetric bilinear form

## For the programmer

The object GrothendieckWittClass is a type, with ancestor classes HashTable < Thing.