Macaulay2 » Documentation
Packages » A1BrouwerDegrees :: GrothendieckWittClass
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


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

See also

Functions and methods returning a Grothendieck Witt Class :

Methods that use a Grothendieck Witt Class :

For the programmer

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