Expand description
Groebner Basis Computation
Provides Groebner basis algorithms for polynomial ideals.
This module re-exports from algebra::groebner while providing
a unified interface through the polynomial module.
§Overview
Groebner bases are a fundamental tool in computational algebraic geometry and polynomial system solving. They provide canonical generators for polynomial ideals, enabling:
- Ideal membership testing
- Polynomial system solving
- Elimination of variables
- Geometric theorem proving
§Algorithms
- Buchberger’s Algorithm: Classic algorithm for Groebner basis computation
- Efficient Buchberger: Optimized variant with pair selection strategies
§Example
use mathhook_core::core::polynomial::groebner::{GroebnerBasis, MonomialOrder};
use mathhook_core::core::Expression;
use mathhook_core::symbol;
let x = symbol!(x);
let y = symbol!(y);
// f1 = x - y
let f1 = Expression::add(vec![
Expression::symbol(x.clone()),
Expression::mul(vec![Expression::integer(-1), Expression::symbol(y.clone())]),
]);
// f2 = y^2 - 1
let f2 = Expression::add(vec![
Expression::pow(Expression::symbol(y.clone()), Expression::integer(2)),
Expression::integer(-1),
]);
let mut gb = GroebnerBasis::new(
vec![f1, f2],
vec![x.clone(), y.clone()],
MonomialOrder::Lex
);
gb.compute();
// The basis should have at least 2 polynomials
assert!(gb.basis.len() >= 2);Re-exports§
pub use crate::algebra::groebner::buchberger_algorithm;pub use crate::algebra::groebner::efficient_buchberger_algorithm;pub use crate::algebra::groebner::expression_to_sparse_polynomial;pub use crate::algebra::groebner::poly_reduce;pub use crate::algebra::groebner::poly_reduce_completely;pub use crate::algebra::groebner::s_polynomial;pub use crate::algebra::groebner::sparse_polynomial_to_expression;pub use crate::algebra::groebner::GroebnerBasis;pub use crate::algebra::groebner::Monomial;pub use crate::algebra::groebner::MonomialOrder;pub use crate::algebra::groebner::MonomialOrdering;pub use crate::algebra::groebner::SparsePolynomial;