Groebner.jl is a Julia package for computing Groebner bases over fields.
For documentation and more please check out https://sumiya11.github.io/Groebner.jl. For a simple example, see below.
You can install Groebner.jl using the Julia package manager. From the Julia REPL, type
import Pkg; Pkg.add("Groebner")
Groebner.jl works with polynomials from AbstractAlgebra.jl, DynamicPolynomials.jl, and Nemo.jl. For example, let's create a ring of polynomials in 3 variables
using AbstractAlgebra
R, (x1, x2, x3) = QQ["x1", "x2", "x3"]
Then, we can define a simple polynomial system
system = [
x1 + x2 + x3,
x1*x2 + x1*x3 + x2*x3,
x1*x2*x3 - 1
]
And compute the Groebner basis by passing the system to groebner
using Groebner
G = groebner(system)
# result
3-element Vector{AbstractAlgebra.Generic.MPoly{Rational{BigInt}}}:
x1 + x2 + x3
x2^2 + x2*x3 + x3^2
x3^3 - 1
This library is maintained by Alexander Demin ([email protected]).
We would like to acknowledge Jérémy Berthomieu, Christian Eder, and Mohab Safey El Din as this library is inspired by their work "msolve: A Library for Solving Polynomial Systems". We are also grateful to The Max Planck Institute for Informatics and The MAX team at l'X for providing computational resources.
Special thanks goes to Vladimir Kuznetsov for providing the sources of his F4 implementation.
If you find Groebner.jl useful in your work, you can cite this paper
@misc{groebnerjl2023,
title = {Groebner.jl: A package for Gr\"obner bases computations in Julia},
author = {Alexander Demin and Shashi Gowda},
year = {2023},
eprint = {2304.06935},
url = {https://arxiv.org/abs/2304.06935}
}