Ask Your Question

Revision history [back]

The method groebner_basis for ideals in polynomial rings is documented at http://doc.sagemath.org/html/en/reference/polynomial_rings/sage/rings/polynomial/multi_polynomial_ideal.html#sage.rings.polynomial.multi_polynomial_ideal.MPolynomialIdeal.groebner_basis.

This documentation can also be accessed by creating an ideal in a polynomial ring

sage: x, y = QQ['x, y'].gens()
sage: J = ideal(x^5 + y^4 - 1,  x^3 + y^3 - 1)

and typing

sage: J.groebner_basis?

The method groebner_basis takes an optional algorithm argument.

Choices for this argument are - ‘singular:groebner’ - ‘singular:std’ - ‘singular:stdhilb’ - ‘singular:stdfglm’ - ‘singular:slimgb’ - ‘libsingular:groebner’ - ‘libsingular:std’ - ‘libsingular:slimgb’ - ‘libsingular:stdhilb’ - ‘libsingular:stdfglm’ - ‘toy:buchberger’ - ‘toy:buchberger2’ - ‘toy:d_basis’ - ‘macaulay2:gb’ - ‘magma:GroebnerBasis’ - ‘ginv:TQ’ - ‘ginv:TQBlockHigh’ - ‘ginv:TQBlockLow’ - ‘ginv:TQDegree’ - ‘giac:gbasis’

In other words, the algorithm is described by a string of the form '<system>:<command>' where <system> can be one of singular, libsingular, toy, macaulay2, magma, ginv, giac and each system has one or more possible <command> values.

The documentation says that "If only a system is given - e.g. ‘magma’ - the default algorithm is chosen for that system."

This means that - algorithm='magma' will work as algorithm='magma:GroebnerBasis' - algorithm='singular' will work as algorithm='singular:groebner' - algorithm='libsingular' will work as algorithm='libsingular:groebner' - algorithm='macaulay2' will work as algorithm='macaulay2:gb' - algorithm='toy' will work as algorithm='toy:buchberger2' - algorithm='giac' will work as algorithm='giac:gbasis'

One way to figure out which is the default algorithm for each system is to read the code for the method groebner_basis, which you can access by typing

sage: J.groebner_basis??

The method groebner_basis for ideals in polynomial rings is documented at http://doc.sagemath.org/html/en/reference/polynomial_rings/sage/rings/polynomial/multi_polynomial_ideal.html#sage.rings.polynomial.multi_polynomial_ideal.MPolynomialIdeal.groebner_basis.

This documentation can also be accessed by creating an ideal in a polynomial ring

sage: x, y = QQ['x, y'].gens()
sage: J = ideal(x^5 + y^4 - 1,  x^3 + y^3 - 1)

and typing

sage: J.groebner_basis?

The method groebner_basis takes an optional algorithm argument.

Choices for this argument are - ‘singular:groebner’ - ‘singular:std’ - ‘singular:stdhilb’ - ‘singular:stdfglm’ - ‘singular:slimgb’ - ‘libsingular:groebner’ - ‘libsingular:std’ - ‘libsingular:slimgb’ - ‘libsingular:stdhilb’ - ‘libsingular:stdfglm’ - ‘toy:buchberger’ - ‘toy:buchberger2’ - ‘toy:d_basis’ - ‘macaulay2:gb’ - ‘magma:GroebnerBasis’ - ‘ginv:TQ’ - ‘ginv:TQBlockHigh’ - ‘ginv:TQBlockLow’ - ‘ginv:TQDegree’ - are

  • ‘singular:groebner’
  • ‘singular:std’
  • ‘singular:stdhilb’
  • ‘singular:stdfglm’
  • ‘singular:slimgb’
  • ‘libsingular:groebner’
  • ‘libsingular:std’
  • ‘libsingular:slimgb’
  • ‘libsingular:stdhilb’
  • ‘libsingular:stdfglm’
  • ‘toy:buchberger’
  • ‘toy:buchberger2’
  • ‘toy:d_basis’
  • ‘macaulay2:gb’
  • ‘magma:GroebnerBasis’
  • ‘ginv:TQ’
  • ‘ginv:TQBlockHigh’
  • ‘ginv:TQBlockLow’
  • ‘ginv:TQDegree’
  • ‘giac:gbasis’

In other words, the algorithm is described by a string of the form '<system>:<command>' where <system> can be one of singular, libsingular, toy, macaulay2, magma, ginv, giac and each system has one or more possible <command> values.

The documentation says that "If only a system is given - e.g. ‘magma’ - the default algorithm is chosen for that system."

This means that - that

  • algorithm='magma' will work as algorithm='magma:GroebnerBasis' -
  • algorithm='singular' will work as algorithm='singular:groebner' -
  • algorithm='libsingular' will work as algorithm='libsingular:groebner' -
  • algorithm='macaulay2' will work as algorithm='macaulay2:gb' -
  • algorithm='toy' will work as algorithm='toy:buchberger2' -
  • algorithm='giac' will work as algorithm='giac:gbasis'

One way to figure out which is the default algorithm for each system is to read the code for the method groebner_basis, which you can access by typing

sage: J.groebner_basis??