Class GroebnerMethods

java.lang.Object
cc.redberry.rings.poly.multivar.GroebnerMethods

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

    • eliminate

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

      public static <Poly extends AMultivariatePolynomial> List<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 AMultivariatePolynomial> List<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 AMultivariatePolynomial> List<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 AMultivariatePolynomial> List<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 AMultivariatePolynomial> List<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 AMultivariatePolynomial> List<Rational<Poly>> LeinartasDecomposition​(Rational<Poly> fraction)
      Computes Leinartas's decomposition of given rational expression (see https://arxiv.org/abs/1206.4740)