Class SolvableIdeal<C extends GcdRingElem<C>>

java.lang.Object
edu.jas.application.SolvableIdeal<C>
All Implemented Interfaces:
Serializable, Comparable<SolvableIdeal<C>>

public class SolvableIdeal<C extends GcdRingElem<C>> extends Object implements Comparable<SolvableIdeal<C>>, Serializable
Solvable Ideal implements some methods for ideal arithmetic, for example sum, intersection, quotient. Note: only left ideals at the moment.
See Also:
  • Field Details

    • logger

      private static final org.apache.logging.log4j.Logger logger
    • debug

      private static final boolean debug
    • list

      protected PolynomialList<C extends GcdRingElem<C>> list
      The data structure is a PolynomialList.
    • isGB

      protected boolean isGB
      Indicator if list is a Groebner Base.
    • sided

      protected SolvableIdeal.Side sided
      Indicator of side of Groebner Base.
    • testGB

      protected boolean testGB
      Indicator if test has been performed if this is a Groebner Base.
    • isTopt

      protected boolean isTopt
      Indicator if list has optimized term order.
    • bb

      protected final SolvableGroebnerBaseAbstract<C extends GcdRingElem<C>> bb
      Groebner base engine.
    • red

      protected final SolvableReduction<C extends GcdRingElem<C>> red
      Reduction engine.
  • Constructor Details

    • SolvableIdeal

      public SolvableIdeal(GenSolvablePolynomialRing<C> ring)
      Constructor.
      Parameters:
      ring - solvable polynomial ring
    • SolvableIdeal

      public SolvableIdeal(GenSolvablePolynomialRing<C> ring, List<GenSolvablePolynomial<C>> F)
      Constructor.
      Parameters:
      ring - solvable polynomial ring
      F - list of solvable polynomials
    • SolvableIdeal

      public SolvableIdeal(GenSolvablePolynomialRing<C> ring, List<GenSolvablePolynomial<C>> F, boolean gb)
      Constructor.
      Parameters:
      ring - solvable polynomial ring
      F - list of solvable polynomials
      gb - true if F is known to be a Groebner Base, else false
    • SolvableIdeal

      public SolvableIdeal(GenSolvablePolynomialRing<C> ring, List<GenSolvablePolynomial<C>> F, boolean gb, boolean topt)
      Constructor.
      Parameters:
      ring - solvable polynomial ring
      F - list of solvable polynomials
      gb - true if F is known to be a Groebner Base, else false
      topt - true if term order is optimized, else false
    • SolvableIdeal

      Constructor.
      Parameters:
      ring - solvable polynomial ring
      F - list of solvable polynomials
      s - side variant of ideal or Groebner Base
    • SolvableIdeal

      public SolvableIdeal(GenSolvablePolynomialRing<C> ring, List<GenSolvablePolynomial<C>> F, boolean gb, SolvableIdeal.Side s)
      Constructor.
      Parameters:
      ring - solvable polynomial ring
      F - list of solvable polynomials
      gb - true if F is known to be a Groebner Base, else false
      s - side variant of ideal or Groebner Base
    • SolvableIdeal

      public SolvableIdeal(PolynomialList<C> list)
      Constructor.
      Parameters:
      list - solvable polynomial list
    • SolvableIdeal

      public SolvableIdeal(PolynomialList<C> list, SolvableGroebnerBaseAbstract<C> bb, SolvableReduction<C> red)
      Constructor.
      Parameters:
      list - solvable polynomial list
      bb - Groebner Base engine
      red - Reduction engine
    • SolvableIdeal

      public SolvableIdeal(PolynomialList<C> list, boolean gb)
      Constructor.
      Parameters:
      list - solvable polynomial list
      gb - true if list is known to be a Groebner Base, else false
    • SolvableIdeal

      public SolvableIdeal(PolynomialList<C> list, boolean gb, boolean topt)
      Constructor.
      Parameters:
      list - solvable polynomial list
      gb - true if list is known to be a Groebner Base, else false
      topt - true if term order is optimized, else false
    • SolvableIdeal

      public SolvableIdeal(PolynomialList<C> list, boolean gb, SolvableIdeal.Side s)
      Constructor.
      Parameters:
      list - solvable polynomial list
      gb - true if list is known to be a Groebner Base, else false
      s - side variant of ideal or Groebner Base
    • SolvableIdeal

      public SolvableIdeal(PolynomialList<C> list, boolean gb, boolean topt, SolvableIdeal.Side s)
      Constructor.
      Parameters:
      list - solvable polynomial list
      gb - true if list is known to be a Groebner Base, else false
      topt - true if term order is optimized, else false
      s - side variant of ideal or Groebner Base
    • SolvableIdeal

      public SolvableIdeal(PolynomialList<C> list, boolean gb, SolvableGroebnerBaseAbstract<C> bb, SolvableReduction<C> red)
      Constructor.
      Parameters:
      list - solvable polynomial list
      gb - true if list is known to be a Groebner Base, else false
      bb - Groebner Base engine
      red - Reduction engine
    • SolvableIdeal

      public SolvableIdeal(PolynomialList<C> list, boolean gb, SolvableGroebnerBaseAbstract<C> bb)
      Constructor.
      Parameters:
      list - solvable polynomial list
      gb - true if list is known to be a Groebner Base, else false
      bb - Groebner Base engine
    • SolvableIdeal

      public SolvableIdeal(PolynomialList<C> list, boolean gb, boolean topt, SolvableGroebnerBaseAbstract<C> bb)
      Constructor.
      Parameters:
      list - solvable polynomial list
      gb - true if list is known to be a Groebner Base, else false
      topt - true if term order is optimized, else false
      bb - Groebner Base engine
    • SolvableIdeal

      public SolvableIdeal(PolynomialList<C> list, boolean gb, boolean topt, SolvableGroebnerBaseAbstract<C> bb, SolvableReduction<C> red)
      Constructor.
      Parameters:
      list - solvable polynomial list
      gb - true if list is known to be a Groebner Base, else false
      topt - true if term order is optimized, else false
      bb - Groebner Base engine
      red - Reduction engine
    • SolvableIdeal

      public SolvableIdeal(PolynomialList<C> list, boolean gb, boolean topt, SolvableGroebnerBaseAbstract<C> bb, SolvableReduction<C> red, SolvableIdeal.Side s)
      Constructor.
      Parameters:
      list - solvable polynomial list
      gb - true if list is known to be a Groebner Base, else false
      topt - true if term order is optimized, else false
      bb - Groebner Base engine
      red - Reduction engine
      s - side variant of ideal or Groebner Base
  • Method Details

    • copy

      public SolvableIdeal<C> copy()
      Clone this.
      Returns:
      a copy of this.
    • getList

      public List<GenSolvablePolynomial<C>> getList()
      Get the List of GenSolvablePolynomials.
      Returns:
      (cast) list.list
    • getRing

      public GenSolvablePolynomialRing<C> getRing()
      Get the GenSolvablePolynomialRing.
      Returns:
      (cast) list.ring
    • getZERO

      public SolvableIdeal<C> getZERO()
      Get the zero ideal.
      Returns:
      ideal(0)
    • getONE

      public SolvableIdeal<C> getONE()
      Get the one ideal.
      Returns:
      ideal(1)
    • toString

      public String toString()
      String representation of the solvable ideal.
      Overrides:
      toString in class Object
      See Also:
    • toScript

      public String toScript()
      Get a scripting compatible string representation.
      Returns:
      script compatible representation for this Element.
      See Also:
    • equals

      public boolean equals(Object b)
      Comparison with any other object. Note: If not both ideals are Groebner Bases, then false may be returned even the ideals are equal.
      Overrides:
      equals in class Object
      See Also:
    • compareTo

      public int compareTo(SolvableIdeal<C> L)
      SolvableIdeal comparison.
      Specified by:
      compareTo in interface Comparable<C extends GcdRingElem<C>>
      Parameters:
      L - other solvable ideal.
      Returns:
      compareTo() of polynomial lists.
    • hashCode

      public int hashCode()
      Hash code for this solvable ideal.
      Overrides:
      hashCode in class Object
      See Also:
    • isZERO

      public boolean isZERO()
      Test if ZERO ideal.
      Returns:
      true, if this is the 0 ideal, else false
    • isONE

      public boolean isONE()
      Test if ONE is contained in the ideal. To test for a proper ideal use ! id.isONE().
      Returns:
      true, if this is the 1 ideal, else false
    • isGB

      public boolean isGB()
      Test if this is a left Groebner base.
      Returns:
      true, if this is a left/right/twosided Groebner base, else false
    • doGB

      public void doGB()
      Do Groebner Base. compute the left Groebner Base for this ideal.
    • GB

      public SolvableIdeal<C> GB()
      Groebner Base. Get a left Groebner Base for this ideal.
      Returns:
      leftGB(this)
    • isTwosidedGB

      public boolean isTwosidedGB()
      Test if this is a twosided Groebner base.
      Returns:
      true, if this is a twosided Groebner base, else false
    • twosidedGB

      public SolvableIdeal<C> twosidedGB()
      Groebner Base. Get a twosided Groebner Base for this ideal.
      Returns:
      twosidedGB(this)
    • isRightGB

      public boolean isRightGB()
      Test if this is a right Groebner base.
      Returns:
      true, if this is a right Groebner base, else false
    • rightGB

      public SolvableIdeal<C> rightGB()
      Groebner Base. Get a right Groebner Base for this ideal.
      Returns:
      rightGB(this)
    • contains

      public boolean contains(SolvableIdeal<C> B)
      Solvable ideal containment. Test if B is contained in this ideal. Note: this is eventually modified to become a Groebner Base.
      Parameters:
      B - solvable ideal
      Returns:
      true, if B is contained in this, else false
    • contains

      public boolean contains(GenSolvablePolynomial<C> b)
      Solvable ideal containment. Test if b is contained in this left/right/twosided ideal. Note: this is eventually modified to become a Groebner Base.
      Parameters:
      b - solvable polynomial
      Returns:
      true, if b is contained in this, else false
    • contains

      public boolean contains(List<GenSolvablePolynomial<C>> B)
      Solvable ideal containment. Test if each b in B is contained in this left/right/twosided ideal. Note: this is eventually modified to become a Groebner Base.
      Parameters:
      B - list of solvable polynomials
      Returns:
      true, if each b in B is contained in this, else false
    • sum

      public SolvableIdeal<C> sum(SolvableIdeal<C> B)
      Solvable ideal summation. Generators for the sum of ideals. Note: if both ideals are Groebner bases, a Groebner base is returned.
      Parameters:
      B - solvable ideal
      Returns:
      ideal(this+B)
    • sum

      Solvable summation. Generators for the sum of ideal and a polynomial. Note: if this ideal is a Groebner base, a Groebner base is returned.
      Parameters:
      b - solvable polynomial
      Returns:
      ideal(this+{b})
    • sum

      Solvable summation. Generators for the sum of this ideal and a list of polynomials. Note: if this ideal is a Groebner base, a Groebner base is returned.
      Parameters:
      L - list of solvable polynomials
      Returns:
      ideal(this+L)
    • product

      public SolvableIdeal<C> product(SolvableIdeal<C> B)
      Product. Generators for the product of ideals. Note: if both ideals are Groebner bases, a Groebner base is returned.
      Parameters:
      B - solvable ideal
      Returns:
      ideal(this*B)
    • product

      public SolvableIdeal<C> product(GenSolvablePolynomial<C> b)
      Product. Generators for the product of this by a polynomial.
      Parameters:
      b - solvable polynomial
      Returns:
      ideal(this*b)
    • leftProduct

      public SolvableIdeal<C> leftProduct(GenSolvablePolynomial<C> b)
      Left product. Generators for the product of a polynomial by this.
      Parameters:
      b - solvable polynomial
      Returns:
      ideal(b*this)
    • intersect

      public SolvableIdeal<C> intersect(List<SolvableIdeal<C>> Bl)
      Intersection. Generators for the intersection of ideals. Using an iterative algorithm.
      Parameters:
      Bl - list of solvable ideals
      Returns:
      ideal(cap_i B_i), a Groebner base
    • intersect

      public SolvableIdeal<C> intersect(SolvableIdeal<C> B)
      Intersection. Generators for the intersection of ideals.
      Parameters:
      B - solvable ideal
      Returns:
      ideal(this \cap B), a Groebner base
    • intersect

      public SolvableIdeal<C> intersect(GenSolvablePolynomialRing<C> R)
      Intersection. Generators for the intersection of a ideal with a polynomial ring. The polynomial ring R must be a contraction of this ideal and the TermOrder must be an elimination order.
      Parameters:
      R - solvable polynomial ring
      Returns:
      ideal(this \cap R)
    • eliminate

      public SolvableIdeal<C> eliminate(GenSolvablePolynomialRing<C> R)
      Eliminate. Generators for the intersection of this ideal with a solvable polynomial ring. The solvable polynomial ring of this ideal must be a contraction of R and the TermOrder must be an elimination order.
      Parameters:
      R - solvable polynomial ring
      Returns:
      ideal(this \cap R)
    • quotient

      public SolvableIdeal<C> quotient(GenSolvablePolynomial<C> h)
      Quotient. Generators for the solvable ideal quotient.
      Parameters:
      h - solvable polynomial
      Returns:
      ideal(this : h), a Groebner base
    • quotient

      public SolvableIdeal<C> quotient(SolvableIdeal<C> H)
      Quotient. Generators for the solvable ideal quotient.
      Parameters:
      H - solvable ideal
      Returns:
      ideal(this : H), a Groebner base
    • infiniteQuotientRab

      public SolvableIdeal<C> infiniteQuotientRab(GenSolvablePolynomial<C> h)
      Infinite quotient. Generators for the infinite solvable ideal quotient.
      Parameters:
      h - solvable polynomial
      Returns:
      ideal(this : hs), a Groebner base
    • infiniteQuotientExponent

      public int infiniteQuotientExponent(GenSolvablePolynomial<C> h, SolvableIdeal<C> Q)
      Infinite quotient exponent.
      Parameters:
      h - solvable polynomial
      Q - quotient this : h^\infinity
      Returns:
      s with Q = this : hs
    • infiniteQuotient

      public SolvableIdeal<C> infiniteQuotient(GenSolvablePolynomial<C> h)
      Infinite quotient. Generators for the infinite solvable ideal quotient.
      Parameters:
      h - solvable polynomial
      Returns:
      ideal(this : hs), a Groebner base
    • isRadicalMember

      public boolean isRadicalMember(GenSolvablePolynomial<C> h)
      Radical membership test.
      Parameters:
      h - solvable polynomial
      Returns:
      true if h is contained in the radical of ideal(this), else false.
    • infiniteQuotient

      public SolvableIdeal<C> infiniteQuotient(SolvableIdeal<C> H)
      Infinite Quotient. Generators for the solvable ideal infinite quotient.
      Parameters:
      H - solvable ideal
      Returns:
      ideal(this : Hs), a Groebner base
    • infiniteQuotientRab

      public SolvableIdeal<C> infiniteQuotientRab(SolvableIdeal<C> H)
      Infinite Quotient. Generators for the solvable ideal infinite quotient.
      Parameters:
      H - solvable ideal
      Returns:
      ideal(this : Hs), a Groebner base
    • power

      public SolvableIdeal<C> power(int d)
      Power. Generators for the power of this solvable ideal. Note: if this ideal is a Groebner base, a Groebner base is returned.
      Parameters:
      d - integer
      Returns:
      ideal(this^d)
    • normalform

      Normalform for element.
      Parameters:
      h - solvable polynomial
      Returns:
      left/right/twosided normalform of h with respect to this
    • normalform

      Normalform for list of solvable elements.
      Parameters:
      L - solvable polynomial list
      Returns:
      list of left normalforms of the elements of L with respect to this
    • annihilator

      public SolvableIdeal<C> annihilator(GenSolvablePolynomial<C> h)
      Annihilator for element modulo this ideal.
      Parameters:
      h - solvable polynomial
      Returns:
      annihilator of h with respect to this
    • isAnnihilator

      public boolean isAnnihilator(GenSolvablePolynomial<C> h, SolvableIdeal<C> A)
      Test for annihilator of element modulo this ideal.
      Parameters:
      h - solvable polynomial
      A - solvable ideal
      Returns:
      true, if A is the annihilator of h with respect to this
    • annihilator

      public SolvableIdeal<C> annihilator(SolvableIdeal<C> H)
      Annihilator for ideal modulo this ideal.
      Parameters:
      H - solvable ideal
      Returns:
      annihilator of H with respect to this
    • isAnnihilator

      public boolean isAnnihilator(SolvableIdeal<C> H, SolvableIdeal<C> A)
      Test for annihilator of ideal modulo this ideal.
      Parameters:
      H - solvable ideal
      A - solvable ideal
      Returns:
      true, if A is the annihilator of H with respect to this
    • inverse

      Inverse for element modulo this ideal.
      Parameters:
      h - solvable polynomial
      Returns:
      inverse of h with respect to this, if defined
    • isUnit

      public boolean isUnit(GenSolvablePolynomial<C> h)
      Test if element is a unit modulo this ideal.
      Parameters:
      h - solvable polynomial
      Returns:
      true if h is a unit with respect to this, else false
    • commonZeroTest

      public int commonZeroTest()
      Ideal common zero test.
      Returns:
      -1, 0 or 1 if dimension(this) &eq; -1, 0 or ≥ 1.
    • isMaximal

      public boolean isMaximal()
      Test if this ideal is maximal.
      Returns:
      true, if this is certainly maximal and not one, false, if this is one, has dimension ≥ 1 or it is not jet determined if it is maximal.
    • univariateDegrees

      public List<Long> univariateDegrees()
      Univariate head term degrees.
      Returns:
      a list of the degrees of univariate head terms.
    • dimension

      public Dimension dimension()
      Ideal dimension.
      Returns:
      a dimension container (dim,maxIndep,list(maxIndep),vars).
    • constructUnivariate

      public List<GenSolvablePolynomial<C>> constructUnivariate()
      Construct univariate polynomials of minimal degree in all variables in zero dimensional ideal(G).
      Returns:
      list of univariate solvable polynomial of minimal degree in each variable in ideal(G)
    • constructUnivariate

      public GenSolvablePolynomial<C> constructUnivariate(int i)
      Construct univariate polynomial of minimal degree in variable i in zero dimensional ideal(G).
      Parameters:
      i - variable index.
      Returns:
      univariate solvable polynomial of minimal degree in variable i in ideal(G)