Class GroebnerMethods


  • public final class GroebnerMethods
    extends Object
    Utility methods based on Groebner bases
    • Method Detail

      • eliminate

        public static <Poly extends AMultivariatePolynomialList<Poly> eliminate​(List<Poly> ideal,
                                                                                  int variable)
        Eliminates specified variables from the given ideal.
      • eliminate

        public static <Poly extends AMultivariatePolynomialList<Poly> eliminate​(List<Poly> ideal,
                                                                                  int... variables)
        Eliminates specified variables from the given ideal.
      • probablyAlgebraicallyDependentQ

        public static <Poly extends AMultivariatePolynomial> boolean probablyAlgebraicallyDependentQ​(List<Poly> sys)
        Returns true if a given set of polynomials is probably algebraically dependent or false otherwise (which means that the given set is certainly independent). The method applies two criteria: it tests for lead set (LEX) independence and does a probabilistic Jacobian test.
      • algebraicallyDependentQ

        public static <Poly extends AMultivariatePolynomial> boolean algebraicallyDependentQ​(List<Poly> sys)
        Returns true if a given set of polynomials is algebraically dependent or false otherwise.
      • algebraicRelations

        public static <Poly extends AMultivariatePolynomialList<Poly> algebraicRelations​(List<Poly> polys)
        Gives a list of algebraic relations (annihilating polynomials) for the given list of polynomials
      • JacobianMatrix

        public static <Term extends AMonomial<Term>,​Poly extends AMultivariatePolynomial<Term,​Poly>> Poly[][] JacobianMatrix​(List<Poly> sys)
        Creates a Jacobian matrix of a given list of polynomials
      • NullstellensatzCertificate

        public static <Poly extends AMultivariatePolynomialList<Poly> NullstellensatzCertificate​(List<Poly> polynomials)
        Computes Nullstellensatz certificate for a given list of polynomials assuming that they have no common zeros (or equivalently assuming that the ideal formed by the list is trivial). The method doesn't perform explicit check that the polynomials have no common zero, so if they are the method will fail.
        Parameters:
        polynomials - list of polynomials
        Returns:
        polynomials S_i such that S_1 * f_1 + ... + S_n * f_n = 1 or null if no solution with moderate degree bounds exist (either since polynomials have a common root or because the degree bound on the solutions is so big that the system is intractable for computer)
      • NullstellensatzCertificate

        public static <Poly extends AMultivariatePolynomialList<Poly> NullstellensatzCertificate​(List<Poly> polynomials,
                                                                                                   boolean boundTotalDeg)
        Computes Nullstellensatz certificate for a given list of polynomials assuming that they have no common zeros (or equivalently assuming that the ideal formed by the list is trivial). The method doesn't perform explicit check that the polynomials have no common zero, so if they are the method will fail.
        Parameters:
        polynomials - list of polynomials
        Returns:
        polynomials S_i such that S_1 * f_1 + ... + S_n * f_n = 1 or null if no solution with moderate degree bounds exist (either since polynomials have a common root or because the degree bound on the solutions is so big that the system is intractable for computer)
      • NullstellensatzSolver

        public static <Poly extends AMultivariatePolynomialList<Poly> NullstellensatzSolver​(List<Poly> polynomials,
                                                                                              Poly rhs,
                                                                                              boolean boundTotalDeg)
        Tries to find solution of the equation S_1 * f_1 + ... + S_n * f_n = g for given f_i and g and unknown S_i by transforming to a system of linear equations with unknown coefficients of S_i.
        Parameters:
        polynomials - list of polynomials
        rhs - right hand side of the equation
        boundTotalDeg - whether to perform evaluations by increasing total degree of unknown polys or by increasing individual degrees of vars
        Returns:
        polynomials S_i such that S_1 * f_1 + ... + S_n * f_n = g or null if no solution with moderate degree bounds exists
      • LeinartasDecomposition

        public static <Poly extends AMultivariatePolynomialList<Rational<Poly>> LeinartasDecomposition​(Rational<Poly> fraction)
        Computes Leinartas's decomposition of given rational expression (see https://arxiv.org/abs/1206.4740)