Class SolvableIdeal<C extends GcdRingElem<C>>

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Comparable<SolvableIdeal<C>>

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

      • logger

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

        private static final boolean debug
      • isGB

        protected boolean isGB
        Indicator if list is a 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.
    • Constructor Detail

      • SolvableIdeal

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

        public SolvableIdeal​(GenSolvablePolynomialRing<C> ring,
                             java.util.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,
                             java.util.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

        public SolvableIdeal​(GenSolvablePolynomialRing<C> ring,
                             java.util.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,
                             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)
        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 Detail

      • copy

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

        public java.util.List<GenSolvablePolynomial<C>> getList()
        Get the List of GenSolvablePolynomials.
        Returns:
        (cast) list.list
      • 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 java.lang.String toString()
        String representation of the solvable ideal.
        Overrides:
        toString in class java.lang.Object
        See Also:
        Object.toString()
      • toScript

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

        public boolean equals​(java.lang.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 java.lang.Object
        See Also:
        Object.equals(java.lang.Object)
      • compareTo

        public int compareTo​(SolvableIdeal<C> L)
        SolvableIdeal comparison.
        Specified by:
        compareTo in interface java.lang.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 java.lang.Object
        See Also:
        Object.hashCode()
      • 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​(java.util.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

        public SolvableIdeal<C> sum​(GenSolvablePolynomial<C> b)
        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

        public SolvableIdeal<C> sum​(java.util.List<GenSolvablePolynomial<C>> L)
        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​(java.util.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

        public java.util.List<GenSolvablePolynomial<C>> normalform​(java.util.List<GenSolvablePolynomial<C>> L)
        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
      • 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 java.util.List<java.lang.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 java.util.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)