# Gröbner Bases

- [Introduction](introduction.md)

- [Representation and Monomial Orders](order.md)

  - [Lexicographical: lex](order.md#lexicographical-lex)

  - [Graded Lexicographical: glex](order.md#graded-lexicographical-glex)

  - [Graded Reverse Lexicographical: grevlex](order.md#graded-reverse-lexicographical-grevlex)

  - [Graded Reverse Lexicographical (Weighted): grevlexw](order.md#graded-reverse-lexicographical-weighted-grevlexw)

  - [Elimination (k): elim](order.md#elimination-k-elim)

  - [Elimination List: elim](order.md#elimination-list-elim)

  - [Inverse Block: invblock](order.md#inverse-block-invblock)

  - [Univariate: univ](order.md#univariate-univ)

  - [Weight: weight](order.md#weight-weight)

- [Polynomial Rings and Ideals](creation.md)

  - [Creation of Polynomial Rings and Accessing their Monomial Orders](creation.md#creation-of-polynomial-rings-and-accessing-their-monomial-orders)

    - [`PolynomialRing(R, n): Rng, RngIntElt → RngMPol`](creation.md#function-gb-polynomialring)

    - [`PolynomialAlgebra(R, n): Rng, RngIntElt → RngMPol`](creation.md#function-gb-polynomialalgebra)

    - [`PolynomialRing(R, n, order): Rng, RngIntElt, MonStgElt, ... → RngMPol`](creation.md#function-polynomialring-rng-rngintelt-monstgelt)

    - [`PolynomialAlgebra(R, n, order): Rng, RngIntElt, MonStgElt, ... → RngMPol`](creation.md#function-polynomialalgebra-rng-rngintelt-monstgelt)

    - [`PolynomialRing(R, n, T): Rng, RngIntElt, Tup → RngMPol`](creation.md#function-gb-polynomialringtup)

    - [`PolynomialAlgebra(R, n, T): Rng, RngIntElt, Tup → RngMPol`](creation.md#function-polynomialalgebra-rng-rngintelt-tup)

    - [`MonomialOrder(P): RngMPol → Tup`](creation.md#function-gb-monomialorder)

    - [`MonomialOrderWeightVectors(P): RngMPol → [ [ FldRatElt ] ]`](creation.md#function-gb-monomialorderweightvectors)

    - [`SetSparseMonomialMinRank(R): RngIntElt`](creation.md#function-setsparsemonomialminrank-rngintelt)

    - [`GetSparseMonomialMinRank() → RngIntElt`](creation.md#function-getsparsemonomialminrank)

    - [`Example: Order`](creation.md#example-ex-7d923a)

  - [Creation of Graded Polynomial Rings](creation.md#creation-of-graded-polynomial-rings)

    - [`PolynomialRing(R, Q): Rng, [ RngIntElt ] → RngMPol`](creation.md#function-polynomialring-rng-rngintelt)

    - [`PolynomialAlgebra(R, Q): Rng, [ RngIntElt ] → RngMPol`](creation.md#function-polynomialalgebra-rng-rngintelt)

    - [`Grading(P): RngMPol → [ RngIntElt ]`](creation.md#function-grading-rngmpol)

    - [`VariableWeights(P): RngMPol → [ RngIntElt ]`](creation.md#function-variableweights-rngmpol)

    - [`HomogeneousWeightsSearch(S): [ RngMPol ] → BoolElt, [ RngIntElt ]`](creation.md#function-homogeneousweightssearch-rngmpol)

  - [Element Operations Using the Grading](creation.md#element-operations-using-the-grading)

    - [`Degree(f): RngMPolElt → RngIntElt`](creation.md#function-degree-rngmpolelt)

    - [`WeightedDegree(f): RngMPolElt → RngIntElt`](creation.md#function-weighteddegree-rngmpolelt)

    - [`LeadingWeightedDegree(f): RngMPolElt → RngIntElt`](creation.md#function-leadingweighteddegree-rngmpolelt)

    - [`IsHomogeneous(f): RngMPolElt → BoolElt`](creation.md#function-ishomogeneous-rngmpolelt)

    - [`HomogeneousComponent(f, d): RngMPolElt, RngIntElt → RngMPolElt`](creation.md#function-homogeneouscomponent-rngmpolelt-rngintelt)

    - [`HomogeneousComponents(f): RngMPolElt → [ RngMPolElt ]`](creation.md#function-homogeneouscomponents-rngmpolelt)

    - [`MonomialsOfDegree(P, d): RngMPolElt, RngIntElt → {\@ RngMPolElt \@}`](creation.md#function-gb-monomialsofdegree)

    - [`MonomialsOfWeightedDegree(P, d): RngMPolElt, RngIntElt → {\@ RngMPolElt \@}`](creation.md#function-gb-monomialsofweighteddegree)

    - [`Example: Graded`](creation.md#example-ex-fffb08)

  - [Creation of Ideals and Accessing their Bases](creation.md#creation-of-ideals-and-accessing-their-bases)

    - [`ideal<P | L>: RngMPol, List → RngMPol`](creation.md#constructor-gb-ideal)

    - [`Ideal(B): [ RngMPolElt ] → RngMPol`](creation.md#function-gb-ideal)

    - [`Ideal(B): { RngMPolElt } → RngMPol`](creation.md#function-ideal-rngmpolelt)

    - [`Ideal(f): RngMPolElt → RngMPol`](creation.md#function-gb-idealofelt)

    - [`IdealWithFixedBasis(B): [ RngMPolElt ] → RngMPol`](creation.md#function-gb-idealwithfixedbasis)

    - [`Basis(I): RngMPol → [ RngMPolElt ]`](creation.md#function-basis-rngmpol)

    - [`BasisElement(I, i): RngMPol, RngIntElt → RngMPolElt`](creation.md#function-basiselement-rngmpol-rngintelt)

- [Gröbner Bases](groebner.md)

  - [Gröbner Bases over Fields](groebner.md#grobner-bases-over-fields)

  - [Gröbner Bases over Euclidean Rings](groebner.md#grobner-bases-over-euclidean-rings)

  - [Construction of Gröbner Bases](groebner.md#construction-of-grobner-bases)

    - [`Groebner(I: parameters): RngMPol`](groebner.md#function-gb-groebner)

    - [`GroebnerBasis(I: parameters): RngMPol → [ RngMPolElt ], [ RngIntElt ]`](groebner.md#function-gb-groebnerbasis)

    - [`GroebnerBasis(S: parameters): [ RngMPolElt ] → [ RngMPolElt ], [ RngIntElt ], []`](groebner.md#function-groebnerbasis-rngmpolelt)

    - [`GroebnerBasis(S: parameters): { RngMPolElt } → [ RngMPolElt ]`](groebner.md#function-groebnerbasis-rngmpolelt-2)

    - [`GroebnerBasisUnreduced(S: parameters): [ RngMPolElt ] → [ RngMPolElt ]`](groebner.md#function-groebnerbasisunreduced-rngmpolelt)

    - [`GroebnerBasisUnreduced(S: parameters): { RngMPolElt } → [ RngMPolElt ]`](groebner.md#function-groebnerbasisunreduced-rngmpolelt-2)

    - [`GroebnerBasis(S, d: parameters): [ RngMPol ], RngInt → RngMPolElt`](groebner.md#function-dpoly-gb-deg)

    - [`SetGBGlobalModular(f): BoolElt`](groebner.md#function-setgbglobalmodular)

    - [`SetFaugereModular(f): BoolElt`](groebner.md#function-setfaugeremodular)

  - [The Dense Variant of the $F_4$ algorithm](groebner.md#the-dense-variant-of-the-f-4-algorithm)

  - [Related Functions](groebner.md#related-functions)

    - [`HasGroebnerBasis(I): RngMPol → BoolElt`](groebner.md#function-hasgroebnerbasis-rngmpol)

    - [`EasyIdeal(I): RngMPol → RngMPol, [ RngIntElt ]`](groebner.md#function-easyideal)

    - [`EasyBasis(I): RngMPol → [ RngMPolElt ]`](groebner.md#function-easybasis)

    - [`SmallBasis(I): RngMPol → [ RngMPolElt ]`](groebner.md#function-smallbasis-rngmpol)

    - [`MarkGroebner(I): RngMPol`](groebner.md#function-markgroebner-rngmpol)

    - [`IsGroebner(S): { RngMPolElt } → BoolElt`](groebner.md#function-isgroebner-rngmpolelt)

    - [`IsGroebner(S): [ RngMPolElt ] → BoolElt`](groebner.md#function-isgroebner-rngmpolelt-2)

    - [`Coordinates(I, f): RngMPol, RngMPolElt → [ RngMPolElt ]`](groebner.md#function-gb-coordinates)

    - [`CoordinateMatrix(I): RngMPol → Matrix`](groebner.md#function-gb-coordinatematrix)

    - [`NormalForm(f, I): RngMPolElt, RngMPol → RngMPolElt`](groebner.md#function-normalform-rngmpolelt-rngmpol)

    - [`NormalForm(f, S): RngMPolElt, [ RngMPolElt ] → RngMPolElt, [ RngMPolElt ]`](groebner.md#function-normalform-rngmpolelt-rngmpolelt)

    - [`SPolynomial(f, g): RngMPolElt, RngMPolElt → RngMPolElt`](groebner.md#function-spolynomial-rngmpolelt-rngmpolelt)

    - [`Reduce(S): [ RngMPolElt ] → [ RngMPolElt ]`](groebner.md#function-gb-reduce)

    - [`Reduce(S): { RngMPolElt } → [ RngMPolElt ]`](groebner.md#function-reduce-rngmpolelt)

    - [`ReduceGroebnerBasis(S): [ RngMPolElt ] → [ RngMPolElt ]`](groebner.md#function-reducegroebnerbasis-rngmpolelt)

    - [`ReduceGroebnerBasis(S): { RngMPolElt } → [ RngMPolElt ]`](groebner.md#function-reducegroebnerbasis-rngmpolelt-2)

  - [Gröbner Bases of Boolean Polynomial Rings](groebner.md#grobner-bases-of-boolean-polynomial-rings)

    - [`BooleanPolynomialRing(n): RngIntElt → RngMPolBool`](groebner.md#function-gb-booleanpolynomialring)

    - [`BooleanPolynomialRing(n, order): RngIntElt, MonStgElt → RngMPolBool`](groebner.md#function-booleanpolynomialring-rngintelt-monstgelt)

    - [`BooleanPolynomialRing(B, Q): RngMPolBool, [RngIntElt] → RngMPolBoolElt`](groebner.md#function-booleanpolynomialring-rngmpolbool-rngintelt)

  - [Construction of Input Systems](groebner.md#construction-of-input-systems)

    - [`MinRankSystem(K, n, k, r): FldFin, RngIntElt, RngIntElt, RngIntElt → [ RngMPolBool ]`](groebner.md#function-minranksystem-fldfin-rngintelt-rngintelt-rngintelt)

    - [`HFESystem(q, n, D): RngIntElt, RngIntElt, RngIntElt → [ RngMPolBool ]`](groebner.md#function-hfesystem-rngintelt-rngintelt-rngintelt)

  - [Verbosity](groebner.md#verbosity)

    - [`SetVerbose("Groebner", v): MonStgElt, RngIntElt`](groebner.md#function-setverbose-monstgelt-rngintelt)

    - [`SetVerbose("Buchberger", v): MonStgElt, RngIntElt`](groebner.md#function-setverbose-monstgelt-rngintelt-2)

    - [`SetVerbose("Faugere", v): MonStgElt, RngIntElt`](groebner.md#function-setverbose-monstgelt-rngintelt-3)

    - [`SetVerbose("FGLM", v): MonStgElt, RngIntElt`](groebner.md#function-setverbose-monstgelt-rngintelt-4)

    - [`SetVerbose("GroebnerWalk", v): MonStgElt, RngIntElt`](groebner.md#function-setverbose-monstgelt-rngintelt-5)

    - [`Example: Cyclic6`](groebner.md#example-ex-a7ca30)

    - [`Example: Runge Kutta2`](groebner.md#example-ex-a39450)

    - [`Example: Solve Over GF2`](groebner.md#example-ex-5d686d)

    - [`Example: G Bover Z`](groebner.md#example-ex-daf567)

    - [`Example: Finding Primes`](groebner.md#example-ex-9e862d)

    - [`Example: Quadratic Order GB`](groebner.md#example-ex-6747d7)

    - [`Example: Coordinates`](groebner.md#example-ex-51a96f)

    - [`Example: Valuation Ring`](groebner.md#example-ex-eaa5db)

  - [Degree-$d$ Gröbner Bases](groebner.md#degree-d-grobner-bases)

    - [`GroebnerBasis(S, d : parameters): [ RngMPolElt ], RngInt → RngMPolElt`](groebner.md#function-groebnerbasis-rngmpolelt-rngint)

    - [`Example: Degree D`](groebner.md#example-ex-054264)

- [Changing Coefficient Ring](change-ring.md)

  - [`ChangeRing(I, S): RngMPol, Rng → RngMPol`](change-ring.md#function-gb-changering)

  - [`Example: Change Ring`](change-ring.md#example-ex-d2d66e)

- [Changing Monomial Order](change-order.md)

  - [`ChangeOrder(I, Q): RngMPol, RngMPol → RngMPol, Map`](change-order.md#function-gb-changeorder)

  - [`ChangeOrder(I, order): RngMPol, ... → RngMPol, Map`](change-order.md#function-changeorder-rngmpol)

  - [`ChangeOrder(I, T): RngMPol, Tup → RngMPol`](change-order.md#function-gb-changeordertup)

  - [`Example: Change Order`](change-order.md#example-ex-6f12cc)

- [Hilbert-driven Gröbner Basis Construction](hilbert-groebner.md)

  - [`HilbertGroebnerBasis(S, H): [ RngMPolElt ], FldFunRatUElt → BoolElt, [ RngMPolElt ]`](hilbert-groebner.md#function-hilbertgroebnerbasis-rngmpolelt-fldfunratuelt)

  - [`HilbertGroebnerBasis(S, N): [ RngMPolElt ], RngUPolElt → BoolElt, [ RngMPolElt ]`](hilbert-groebner.md#function-hilbertgroebnerbasis-rngmpolelt-rngupolelt)

  - [`SetVerbose("HilbertGroebner", v): MonStgElt, RngIntElt`](hilbert-groebner.md#function-setverbose-monstgelt-rngintelt-6)

  - [`Example: Hilbert Groebner`](hilbert-groebner.md#example-ex-0965e4)

- [SAT solver](sat.md)

  - [`SAT(B): [ RngMPolBoolElt ] → BoolElt, [ FldFinElt ]`](sat.md#function-sat-rngmpolboolelt)

  - [`SAT(B): [ RngMPolElt ] → BoolElt, [ FldFinElt ]`](sat.md#function-sat-rngmpolelt)

  - [`Example: SAT`](sat.md#example-ex-a37e10)
