Macaulay2 » Documentation
Packages » A1BrouwerDegrees :: A1BrouwerDegrees
next | previous | forward | backward | up | index | toc

# A1BrouwerDegrees -- a package for working with A1-Brouwer degree computations and quadratic forms

## Description

This package is intended to allow the computation of local and global A1-Brouer degrees in both the stable and unstable settings, and for manipulations of unstable Grothendieck-Witt classes and symmetric bilinear forms including their invariants and decompositions.

Version history:

- V 1.1: this version was developed by N. Borisov, T. Brazelton, F. Espino, T. Hagedorn, Z. Han, J. Lopez Garcia, J. Louwsma, G. Ong, and A. Tawfeek. This version implements computations of local and global A1-Brouwer degrees, as well as Grothendieck-Witt classes and their invariants.
- V 2.0: this version was developed by S. Atherton, S. Dutta, J. Lopez Garcia, J. Louwsma, Y. Luo, G. Ong, and R. Sagayaraj. This version implements the computation of unstable local and global A1-Brouwer degrees, manipulations of the unstable Grothendieck-Witt group, and generalizes several methods in V 1.1 for Grothendieck-Witt class manipulations over fields to the setting of finite étale algebras over fields.

The $\mathbb{A}^{1}$-Brouwer degree and its unstable counterpart are valued in the Grothendieck-Witt ring and unstable Grothendieck-Group of a field $\text{GW}(k)$ and $\text{GW}^{u}(k)$, respectively. These can be computed as follows:

    i1 : R = QQ[x];

    i2 : f = {x^4 - 6*x^2 - 7*x - 6};

    i3 : alpha = getGlobalA1Degree f

    o3 = | -7 -6 0 1 |
         | -6 0  1 0 |
         | 0  1  0 0 |
         | 1  0  0 0 |

    o3 : GrothendieckWittClass

    i4 : K = frac R;

    i5 : q = (x^2 + x - 2)/(3*x + 5);

    i6 : beta = getGlobalUnstableA1Degree(q)

    o6 = (| 11 5 |, 8)
          | 5  3 |

    o6 : UnstableGrothendieckWittClass

Furthermore, we can compute a number of invariants associated to symmetric bilinear forms such as their Witt indices, integral discriminants, and Hasse-Witt invariants at a fixed prime:

    i7 : getWittIndex alpha

    o7 = 2

    i8 : getIntegralDiscriminant alpha

    o8 = 1

    i9 : getHasseWittInvariant(alpha, 3)

    o9 = 1

Finally, we provide methods for verifying if two symmetric bilinear forms or unstable Grothendieck-Witt classes are isomorphic, and for computing simplified representatives of these objects.

    i10 : getSumDecompositionString alpha

    o10 = 2H

    i11 : twoH = makeDiagonalForm(QQ, (1,-1,1,-1))

    o11 = | 1 0  0 0  |
          | 0 -1 0 0  |
          | 0 0  1 0  |
          | 0 0  0 -1 |

    o11 : GrothendieckWittClass

    i12 : isIsomorphicForm(alpha, twoH)

    o12 = true

    i13 : getSumDecomposition beta

    o13 = (| 11 0  |, 8)
           | 0  22 |

    o13 : UnstableGrothendieckWittClass

    i14 : gamma = makeGWuClass(matrix(QQ, {{11, 0},{0,22}}), 8)

    o14 = (| 11 0  |, 8)
           | 0  22 |

    o14 : UnstableGrothendieckWittClass

    i15 : isIsomorphicForm(beta, gamma)

    o15 = true

## Authors

- Stephanie Atherton <satherton@student.otis.edu>
- Nikita Borisov <nborisov@sas.upenn.edu>
- Thomas Brazelton <brazelton@math.harvard.edu>
- Somak Dutta <somakdutta@tamu.edu>
- Frenly Espino <frenly@sas.upenn.edu>
- Tom Hagedorn <hagedorn@tcnj.edu>
- Zhaobo Han <zbtomhan@sas.upenn.edu>
- Jordy Lopez Garcia <jordy.lopez@tamu.edu>
- Joel Louwsma <jlouwsma@niagara.edu>
- Yuyuan Luo <luo.yuyuan@princeton.edu>
- Wern Juin Gabriel Ong <wgabrielong@uni-bonn.de>
- Ruzho Sagayaraj <ruzhomath@tamu.edu>
- Andrew Tawfeek <atawfeek@uw.edu>

## Certification

Version 1.1 of this package was accepted for publication in volume 14 of Journal of Software for Algebra and Geometry on 2024-08-07, in the article $\mathbb{A}^1$-Brouwer degrees in Macaulay2 (DOI: 10.2140/jsag.2024.14.175). That version can be obtained from the journal.

## Version

This documentation describes version 2.0 of A1BrouwerDegrees, released October 13, 2025.

## Citation

If you have used this package in your research, please cite it as follows:

    @misc{A1BrouwerDegreesSource,
      title = {{A1BrouwerDegrees: for working with A1-Brouwer degree computations and quadratic forms. Version~2.0}},
      author = {Stephanie Atherton and Nikita Borisov and Thomas Brazelton and Somak Dutta and Frenly Espino and Tom Hagedorn and Zhaobo Han and Jordy Lopez Garcia and Joel Louwsma and Yuyuan Luo and Wern Juin Gabriel Ong and Ruzho Sagayaraj and Andrew Tawfeek},
      howpublished = {A \emph{Macaulay2} package available at
        \url{https://github.com/Macaulay2/M2/tree/stable/M2/Macaulay2/packages}}
    }

    @article{A1BrouwerDegreesArticle,
      title = {{$\mathbb{A}^1$-Brouwer degrees in \emph{Macaulay2}}},
      author = {Stephanie Atherton and Nikita Borisov and Thomas Brazelton and Somak Dutta and Frenly Espino and Tom Hagedorn and Zhaobo Han and Jordy Lopez Garcia and Joel Louwsma and Yuyuan Luo and Wern Juin Gabriel Ong and Ruzho Sagayaraj and Andrew Tawfeek},
      journal = {Journal of Software for Algebra and Geometry},
      volume = {14},
      year = {2024},
    }

## Exports

- Types
  - GrothendieckWittClass -- a new type intended to capture the isomorphism class of an element of the Grothendieck-Witt ring of a field or finite étale algebras over a field
  - UnstableGrothendieckWittClass -- a new type intended to capture an element of the unstable Grothendieck-Witt group of a field or finite étale algebras over a field
- Functions and commands
  - addGW -- the direct sum of two Grothendieck-Witt classes
  - addGWu -- the direct sum for two unstable Grothendieck-Witt Classes
  - addGWuDivisorial -- the divisorial sum of local degrees of a rational function
  - diagonalizeViaCongruence -- diagonalizes a symmetric matrix via congruence
  - getAlgebra -- returns the algebra over which a stable or unstable Grothendieck-Witt class is defined
  - getAnisotropicDimension -- returns the anisotropic dimension of a symmetric bilinear form
  - getAnisotropicDimensionQQp -- returns the anisotropic dimension of a rational symmetric bilinear form over the p-adic rational numbers
  - getAnisotropicPart -- produces the anisotropic part of a Grothendieck-Witt class
  - getBaseField -- returns the base field of a stable or unstable Grothendieck-Witt class
  - getDiagonalClass -- produces a diagonalized form for any (unstable) Grothendieck-Witt class, with simplified terms on the diagonal
  - getDiagonalEntries -- extracts a list of diagonal entries for a GrothendieckWittClass
  - getGlobalA1Degree -- computes the global $\mathbb{A}^{1}$-Brouwer degree of a list of $n$ polynomials in $n$ variables over a field $k$
  - getGlobalUnstableA1Degree -- computes the global unstable $\mathbb{A}^{1}$-Brouwer degree of a pointed rational function $f/g:\mathbb{P}^{1}_{k}\to\mathbb{P}^{1}_{k}$
  - getGWClass -- returns the Grothendieck-Witt class of the stable part of an unstable Grothendieck-Witt class
  - getHasseWittInvariant -- computes the Hasse-Witt invariant at a prime $p$ for the quadratic form of the Grothendieck-Witt class
  - getHilbertSymbol -- computes the Hilbert symbol of two rational numbers at a prime
  - getHilbertSymbolReal -- computes the Hilbert symbol of two rational numbers over the real numbers
  - getIntegralDiscriminant -- computes the integral discriminant for a rational symmetric bilinear form
  - getLocalA1Degree -- computes a local $\mathbb{A}^{1}$-Brouwer degree of a list of $n$ polynomials in $n$ variables over a field $k$ at a prime ideal in the zero locus
  - getLocalAlgebraBasis -- produces a basis for a local finitely generated algebra over a field or finite étale algebra
  - getLocalUnstableA1Degree -- computes a local unstable $\mathbb{A}^{1}$-Brouwer degree of a pointed rational function $f/g:\mathbb{P}^{1}_{k}\to\mathbb{P}^{1}_{k}$ at a root $p\in\mathbb{P}^{1}_{k}$
  - getMatrix -- returns the Gram matrix of a stable or unstable Grothendieck-Witt class
  - getMultiplicationMatrix -- Computes the matrix over a $k$-basis for multiplication by an element in a finite dimensional $k$-algebra
  - getNorm -- Computes the norm over $k$ for an element in a finite dimensional $k$-algebra
  - getPadicValuation -- p-adic valuation of a rational number
  - getRank -- calculates the rank of a symmetric bilinear form
  - getRelevantPrimes -- outputs a list containing all primes $p$ where the Hasse-Witt invariant of a symmetric bilinear form is nontrivial
  - getScalar -- returns the non-zero scalar of an unstable Grothendieck-Witt class
  - getSignature -- computes the signature of a symmetric bilinear form over the real numbers or rational numbers
  - getSumDecomposition -- produces a simplified diagonal representative of a Grothendieck-Witt class or unstable Grothendieck-Witt class
  - getSumDecompositionString -- produces a simplified string representation of a Grothendieck-Witt class or unstable Grothendieck-Witt class
  - getTrace -- Computes the trace over $k$ for an element in a finite dimensional $k$ -algebra
  - getWittIndex -- returns the Witt index of a symmetric bilinear form
  - isAnisotropic -- determines whether a Grothendieck-Witt class is anisotropic
  - isIsomorphicForm -- determines whether two (unstable) Grothendieck-Witt classes over $\mathbb{C},\mathbb{R},\mathbb{Q}$ or a finite field of characteristic not 2 are isomorphic.
  - isIsotropic -- determines whether a Grothendieck-Witt class is isotropic
  - makeDiagonalForm -- the Grothendieck-Witt class of a diagonal form
  - makeDiagonalUnstableForm -- the unstable Grothendieck-Witt class of a diagonal matrix
  - makeGWClass -- the Grothendieck-Witt class of a symmetric matrix
  - makeGWuClass -- constructor for unstable Grothendieck-Witt classes
  - makeHyperbolicForm -- the Grothendieck-Witt class of a hyperbolic form
  - makeHyperbolicUnstableForm -- the unstable Grothendieck-Witt class of a hyperbolic form
  - makePfisterForm -- the Grothendieck-Witt class of a Pfister form
  - multiplyGW -- the tensor product of two Grothendieck-Witt classes
  - transferGW -- the transfer of Grothendieck-Witt from an étale algebras to a base field
- Methods
  - `addGW(GrothendieckWittClass,GrothendieckWittClass)` -- see addGW -- the direct sum of two Grothendieck-Witt classes
  - `addGWu(UnstableGrothendieckWittClass,UnstableGrothendieckWittClass)` -- see addGWu -- the direct sum for two unstable Grothendieck-Witt Classes
  - `addGWuDivisorial(List,List)` -- see addGWuDivisorial -- the divisorial sum of local degrees of a rational function
  - `diagonalizeViaCongruence(Matrix)` -- see diagonalizeViaCongruence -- diagonalizes a symmetric matrix via congruence
  - `getAlgebra(GrothendieckWittClass)` -- see getAlgebra -- returns the algebra over which a stable or unstable Grothendieck-Witt class is defined
  - `getAlgebra(UnstableGrothendieckWittClass)` -- see getAlgebra -- returns the algebra over which a stable or unstable Grothendieck-Witt class is defined
  - `getAnisotropicDimension(GrothendieckWittClass)` -- see getAnisotropicDimension -- returns the anisotropic dimension of a symmetric bilinear form
  - `getAnisotropicDimension(Matrix)` -- see getAnisotropicDimension -- returns the anisotropic dimension of a symmetric bilinear form
  - `getAnisotropicDimensionQQp(GrothendieckWittClass,ZZ)` -- see getAnisotropicDimensionQQp -- returns the anisotropic dimension of a rational symmetric bilinear form over the p-adic rational numbers
  - `getAnisotropicPart(GrothendieckWittClass)` -- see getAnisotropicPart -- produces the anisotropic part of a Grothendieck-Witt class
  - `getAnisotropicPart(Matrix)` -- see getAnisotropicPart -- produces the anisotropic part of a Grothendieck-Witt class
  - `getBaseField(GrothendieckWittClass)` -- see getBaseField -- returns the base field of a stable or unstable Grothendieck-Witt class
  - `getBaseField(UnstableGrothendieckWittClass)` -- see getBaseField -- returns the base field of a stable or unstable Grothendieck-Witt class
  - `getDiagonalClass(GrothendieckWittClass)` -- see getDiagonalClass -- produces a diagonalized form for any (unstable) Grothendieck-Witt class, with simplified terms on the diagonal
  - `getDiagonalClass(UnstableGrothendieckWittClass)` -- see getDiagonalClass -- produces a diagonalized form for any (unstable) Grothendieck-Witt class, with simplified terms on the diagonal
  - `getDiagonalEntries(GrothendieckWittClass)` -- see getDiagonalEntries -- extracts a list of diagonal entries for a GrothendieckWittClass
  - `getGlobalA1Degree(List)` -- see getGlobalA1Degree -- computes the global $\mathbb{A}^{1}$-Brouwer degree of a list of $n$ polynomials in $n$ variables over a field $k$
  - `getGlobalUnstableA1Degree(RingElement)` -- see getGlobalUnstableA1Degree -- computes the global unstable $\mathbb{A}^{1}$-Brouwer degree of a pointed rational function $f/g:\mathbb{P}^{1}_{k}\to\mathbb{P}^{1}_{k}$
  - `getGlobalUnstableA1Degree(RingElement,RingElement)` -- see getGlobalUnstableA1Degree -- computes the global unstable $\mathbb{A}^{1}$-Brouwer degree of a pointed rational function $f/g:\mathbb{P}^{1}_{k}\to\mathbb{P}^{1}_{k}$
  - `getGWClass(UnstableGrothendieckWittClass)` -- see getGWClass -- returns the Grothendieck-Witt class of the stable part of an unstable Grothendieck-Witt class
  - `getHasseWittInvariant(GrothendieckWittClass,ZZ)` -- see getHasseWittInvariant -- computes the Hasse-Witt invariant at a prime $p$ for the quadratic form of the Grothendieck-Witt class
  - `getHasseWittInvariant(List,ZZ)` -- see getHasseWittInvariant -- computes the Hasse-Witt invariant at a prime $p$ for the quadratic form of the Grothendieck-Witt class
  - `getHilbertSymbol(QQ,QQ,ZZ)` -- see getHilbertSymbol -- computes the Hilbert symbol of two rational numbers at a prime
  - `getHilbertSymbol(QQ,ZZ,ZZ)` -- see getHilbertSymbol -- computes the Hilbert symbol of two rational numbers at a prime
  - `getHilbertSymbol(ZZ,QQ,ZZ)` -- see getHilbertSymbol -- computes the Hilbert symbol of two rational numbers at a prime
  - `getHilbertSymbol(ZZ,ZZ,ZZ)` -- see getHilbertSymbol -- computes the Hilbert symbol of two rational numbers at a prime
  - `getHilbertSymbolReal(QQ,QQ)` -- see getHilbertSymbolReal -- computes the Hilbert symbol of two rational numbers over the real numbers
  - `getHilbertSymbolReal(QQ,ZZ)` -- see getHilbertSymbolReal -- computes the Hilbert symbol of two rational numbers over the real numbers
  - `getHilbertSymbolReal(ZZ,QQ)` -- see getHilbertSymbolReal -- computes the Hilbert symbol of two rational numbers over the real numbers
  - `getHilbertSymbolReal(ZZ,ZZ)` -- see getHilbertSymbolReal -- computes the Hilbert symbol of two rational numbers over the real numbers
  - `getIntegralDiscriminant(GrothendieckWittClass)` -- see getIntegralDiscriminant -- computes the integral discriminant for a rational symmetric bilinear form
  - `getLocalA1Degree(List,Ideal)` -- see getLocalA1Degree -- computes a local $\mathbb{A}^{1}$-Brouwer degree of a list of $n$ polynomials in $n$ variables over a field $k$ at a prime ideal in the zero locus
  - `getLocalAlgebraBasis(List,Ideal)` -- see getLocalAlgebraBasis -- produces a basis for a local finitely generated algebra over a field or finite étale algebra
  - `getLocalUnstableA1Degree(RingElement,Number)` -- see getLocalUnstableA1Degree -- computes a local unstable $\mathbb{A}^{1}$-Brouwer degree of a pointed rational function $f/g:\mathbb{P}^{1}_{k}\to\mathbb{P}^{1}_{k}$ at a root $p\in\mathbb{P}^{1}_{k}$
  - `getLocalUnstableA1Degree(RingElement,RingElement)` -- see getLocalUnstableA1Degree -- computes a local unstable $\mathbb{A}^{1}$-Brouwer degree of a pointed rational function $f/g:\mathbb{P}^{1}_{k}\to\mathbb{P}^{1}_{k}$ at a root $p\in\mathbb{P}^{1}_{k}$
  - `getLocalUnstableA1Degree(RingElement,RingElement,Number)` -- see getLocalUnstableA1Degree -- computes a local unstable $\mathbb{A}^{1}$-Brouwer degree of a pointed rational function $f/g:\mathbb{P}^{1}_{k}\to\mathbb{P}^{1}_{k}$ at a root $p\in\mathbb{P}^{1}_{k}$
  - `getLocalUnstableA1Degree(RingElement,RingElement,RingElement)` -- see getLocalUnstableA1Degree -- computes a local unstable $\mathbb{A}^{1}$-Brouwer degree of a pointed rational function $f/g:\mathbb{P}^{1}_{k}\to\mathbb{P}^{1}_{k}$ at a root $p\in\mathbb{P}^{1}_{k}$
  - `getMatrix(GrothendieckWittClass)` -- see getMatrix -- returns the Gram matrix of a stable or unstable Grothendieck-Witt class
  - `getMatrix(UnstableGrothendieckWittClass)` -- see getMatrix -- returns the Gram matrix of a stable or unstable Grothendieck-Witt class
  - `getMultiplicationMatrix(Ring,Ideal,Thing)` -- see getMultiplicationMatrix -- Computes the matrix over a $k$-basis for multiplication by an element in a finite dimensional $k$-algebra
  - `getMultiplicationMatrix(Ring,Thing)` -- see getMultiplicationMatrix -- Computes the matrix over a $k$-basis for multiplication by an element in a finite dimensional $k$-algebra
  - `getNorm(Ring,Ideal,Thing)` -- see getNorm -- Computes the norm over $k$ for an element in a finite dimensional $k$-algebra
  - `getNorm(Ring,Thing)` -- see getNorm -- Computes the norm over $k$ for an element in a finite dimensional $k$-algebra
  - `getPadicValuation(QQ,ZZ)` -- see getPadicValuation -- p-adic valuation of a rational number
  - `getPadicValuation(ZZ,ZZ)` -- see getPadicValuation -- p-adic valuation of a rational number
  - `getRank(GrothendieckWittClass)` -- see getRank -- calculates the rank of a symmetric bilinear form
  - `getRank(Matrix)` -- see getRank -- calculates the rank of a symmetric bilinear form
  - `getRelevantPrimes(GrothendieckWittClass)` -- see getRelevantPrimes -- outputs a list containing all primes $p$ where the Hasse-Witt invariant of a symmetric bilinear form is nontrivial
  - `getScalar(UnstableGrothendieckWittClass)` -- see getScalar -- returns the non-zero scalar of an unstable Grothendieck-Witt class
  - `getSignature(GrothendieckWittClass)` -- see getSignature -- computes the signature of a symmetric bilinear form over the real numbers or rational numbers
  - `getSumDecomposition(GrothendieckWittClass)` -- see getSumDecomposition -- produces a simplified diagonal representative of a Grothendieck-Witt class or unstable Grothendieck-Witt class
  - `getSumDecomposition(UnstableGrothendieckWittClass)` -- see getSumDecomposition -- produces a simplified diagonal representative of a Grothendieck-Witt class or unstable Grothendieck-Witt class
  - `getSumDecompositionString(GrothendieckWittClass)` -- see getSumDecompositionString -- produces a simplified string representation of a Grothendieck-Witt class or unstable Grothendieck-Witt class
  - `getSumDecompositionString(UnstableGrothendieckWittClass)` -- see getSumDecompositionString -- produces a simplified string representation of a Grothendieck-Witt class or unstable Grothendieck-Witt class
  - `getTrace(Ring,Ideal,Thing)` -- see getTrace -- Computes the trace over $k$ for an element in a finite dimensional $k$ -algebra
  - `getTrace(Ring,Thing)` -- see getTrace -- Computes the trace over $k$ for an element in a finite dimensional $k$ -algebra
  - `getWittIndex(GrothendieckWittClass)` -- see getWittIndex -- returns the Witt index of a symmetric bilinear form
  - `net(GrothendieckWittClass)` -- see GrothendieckWittClass -- a new type intended to capture the isomorphism class of an element of the Grothendieck-Witt ring of a field or finite étale algebras over a field
  - `texMath(GrothendieckWittClass)` -- see GrothendieckWittClass -- a new type intended to capture the isomorphism class of an element of the Grothendieck-Witt ring of a field or finite étale algebras over a field
  - `isAnisotropic(GrothendieckWittClass)` -- see isAnisotropic -- determines whether a Grothendieck-Witt class is anisotropic
  - `isAnisotropic(Matrix)` -- see isAnisotropic -- determines whether a Grothendieck-Witt class is anisotropic
  - `isIsomorphicForm(GrothendieckWittClass,GrothendieckWittClass)` -- see isIsomorphicForm -- determines whether two (unstable) Grothendieck-Witt classes over $\mathbb{C},\mathbb{R},\mathbb{Q}$ or a finite field of characteristic not 2 are isomorphic.
  - `isIsomorphicForm(Matrix,Matrix)` -- see isIsomorphicForm -- determines whether two (unstable) Grothendieck-Witt classes over $\mathbb{C},\mathbb{R},\mathbb{Q}$ or a finite field of characteristic not 2 are isomorphic.
  - `isIsomorphicForm(UnstableGrothendieckWittClass,UnstableGrothendieckWittClass)` -- see isIsomorphicForm -- determines whether two (unstable) Grothendieck-Witt classes over $\mathbb{C},\mathbb{R},\mathbb{Q}$ or a finite field of characteristic not 2 are isomorphic.
  - `isIsotropic(GrothendieckWittClass)` -- see isIsotropic -- determines whether a Grothendieck-Witt class is isotropic
  - `isIsotropic(Matrix)` -- see isIsotropic -- determines whether a Grothendieck-Witt class is isotropic
  - `makeDiagonalForm(InexactFieldFamily,Number)` -- see makeDiagonalForm -- the Grothendieck-Witt class of a diagonal form
  - `makeDiagonalForm(InexactFieldFamily,RingElement)` -- see makeDiagonalForm -- the Grothendieck-Witt class of a diagonal form
  - `makeDiagonalForm(InexactFieldFamily,Sequence)` -- see makeDiagonalForm -- the Grothendieck-Witt class of a diagonal form
  - `makeDiagonalForm(Ring,Number)` -- see makeDiagonalForm -- the Grothendieck-Witt class of a diagonal form
  - `makeDiagonalForm(Ring,RingElement)` -- see makeDiagonalForm -- the Grothendieck-Witt class of a diagonal form
  - `makeDiagonalForm(Ring,Sequence)` -- see makeDiagonalForm -- the Grothendieck-Witt class of a diagonal form
  - `makeDiagonalUnstableForm(InexactFieldFamily,Number)` -- see makeDiagonalUnstableForm -- the unstable Grothendieck-Witt class of a diagonal matrix
  - `makeDiagonalUnstableForm(InexactFieldFamily,RingElement)` -- see makeDiagonalUnstableForm -- the unstable Grothendieck-Witt class of a diagonal matrix
  - `makeDiagonalUnstableForm(InexactFieldFamily,Sequence)` -- see makeDiagonalUnstableForm -- the unstable Grothendieck-Witt class of a diagonal matrix
  - `makeDiagonalUnstableForm(Ring,Number)` -- see makeDiagonalUnstableForm -- the unstable Grothendieck-Witt class of a diagonal matrix
  - `makeDiagonalUnstableForm(Ring,RingElement)` -- see makeDiagonalUnstableForm -- the unstable Grothendieck-Witt class of a diagonal matrix
  - `makeDiagonalUnstableForm(Ring,Sequence)` -- see makeDiagonalUnstableForm -- the unstable Grothendieck-Witt class of a diagonal matrix
  - `makeGWClass(Matrix)` -- see makeGWClass -- the Grothendieck-Witt class of a symmetric matrix
  - `makeGWuClass(GrothendieckWittClass)` -- see makeGWuClass -- constructor for unstable Grothendieck-Witt classes
  - `makeGWuClass(GrothendieckWittClass,Number)` -- see makeGWuClass -- constructor for unstable Grothendieck-Witt classes
  - `makeGWuClass(GrothendieckWittClass,RingElement)` -- see makeGWuClass -- constructor for unstable Grothendieck-Witt classes
  - `makeGWuClass(Matrix)` -- see makeGWuClass -- constructor for unstable Grothendieck-Witt classes
  - `makeGWuClass(Matrix,Number)` -- see makeGWuClass -- constructor for unstable Grothendieck-Witt classes
  - `makeGWuClass(Matrix,RingElement)` -- see makeGWuClass -- constructor for unstable Grothendieck-Witt classes
  - `makeHyperbolicForm(InexactFieldFamily)` -- see makeHyperbolicForm -- the Grothendieck-Witt class of a hyperbolic form
  - `makeHyperbolicForm(InexactFieldFamily,ZZ)` -- see makeHyperbolicForm -- the Grothendieck-Witt class of a hyperbolic form
  - `makeHyperbolicForm(Ring)` -- see makeHyperbolicForm -- the Grothendieck-Witt class of a hyperbolic form
  - `makeHyperbolicForm(Ring,ZZ)` -- see makeHyperbolicForm -- the Grothendieck-Witt class of a hyperbolic form
  - `makeHyperbolicUnstableForm(InexactFieldFamily)` -- see makeHyperbolicUnstableForm -- the unstable Grothendieck-Witt class of a hyperbolic form
  - `makeHyperbolicUnstableForm(InexactFieldFamily,ZZ)` -- see makeHyperbolicUnstableForm -- the unstable Grothendieck-Witt class of a hyperbolic form
  - `makeHyperbolicUnstableForm(Ring)` -- see makeHyperbolicUnstableForm -- the unstable Grothendieck-Witt class of a hyperbolic form
  - `makeHyperbolicUnstableForm(Ring,ZZ)` -- see makeHyperbolicUnstableForm -- the unstable Grothendieck-Witt class of a hyperbolic form
  - `makePfisterForm(InexactFieldFamily,Number)` -- see makePfisterForm -- the Grothendieck-Witt class of a Pfister form
  - `makePfisterForm(InexactFieldFamily,RingElement)` -- see makePfisterForm -- the Grothendieck-Witt class of a Pfister form
  - `makePfisterForm(InexactFieldFamily,Sequence)` -- see makePfisterForm -- the Grothendieck-Witt class of a Pfister form
  - `makePfisterForm(Ring,Number)` -- see makePfisterForm -- the Grothendieck-Witt class of a Pfister form
  - `makePfisterForm(Ring,RingElement)` -- see makePfisterForm -- the Grothendieck-Witt class of a Pfister form
  - `makePfisterForm(Ring,Sequence)` -- see makePfisterForm -- the Grothendieck-Witt class of a Pfister form
  - `multiplyGW(GrothendieckWittClass,GrothendieckWittClass)` -- see multiplyGW -- the tensor product of two Grothendieck-Witt classes
  - `transferGW(GrothendieckWittClass)` -- see transferGW -- the transfer of Grothendieck-Witt from an étale algebras to a base field
  - `net(UnstableGrothendieckWittClass)` -- see UnstableGrothendieckWittClass -- a new type intended to capture an element of the unstable Grothendieck-Witt group of a field or finite étale algebras over a field
  - `texMath(UnstableGrothendieckWittClass)` -- see UnstableGrothendieckWittClass -- a new type intended to capture an element of the unstable Grothendieck-Witt group of a field or finite étale algebras over a field
- Symbols
  - linearTolerance (missing documentation)

## For the programmer

The object A1BrouwerDegrees is a package, defined in A1BrouwerDegrees.m2, with auxiliary files in A1BrouwerDegrees/.

The source of this document is in /build/macaulay2-88fgJW/macaulay2-1.25.11+ds/M2/Macaulay2/packages/A1BrouwerDegrees.m2:260:0.