Package edu.jas.application
Class SolvableIdeal<C extends GcdRingElem<C>>
- java.lang.Object
-
- edu.jas.application.SolvableIdeal<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.- Author:
- Heinz Kredel
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SolvableIdeal.Side
Side variant of ideal.
-
Field Summary
Fields Modifier and Type Field Description protected SolvableGroebnerBaseAbstract<C>
bb
Groebner base engine.protected boolean
isGB
Indicator if list is a Groebner Base.protected boolean
isTopt
Indicator if list has optimized term order.protected PolynomialList<C>
list
The data structure is a PolynomialList.protected SolvableReduction<C>
red
Reduction engine.protected SolvableIdeal.Side
sided
Indicator of side of Groebner Base.protected boolean
testGB
Indicator if test has been performed if this is a Groebner Base.
-
Constructor Summary
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description SolvableIdeal<C>
annihilator(SolvableIdeal<C> H)
Annihilator for ideal modulo this ideal.SolvableIdeal<C>
annihilator(GenSolvablePolynomial<C> h)
Annihilator for element modulo this ideal.int
commonZeroTest()
Ideal common zero test.int
compareTo(SolvableIdeal<C> L)
SolvableIdeal comparison.java.util.List<GenSolvablePolynomial<C>>
constructUnivariate()
Construct univariate polynomials of minimal degree in all variables in zero dimensional ideal(G).GenSolvablePolynomial<C>
constructUnivariate(int i)
Construct univariate polynomial of minimal degree in variable i in zero dimensional ideal(G).boolean
contains(SolvableIdeal<C> B)
Solvable ideal containment.boolean
contains(GenSolvablePolynomial<C> b)
Solvable ideal containment.boolean
contains(java.util.List<GenSolvablePolynomial<C>> B)
Solvable ideal containment.SolvableIdeal<C>
copy()
Clone this.Dimension
dimension()
Ideal dimension.void
doGB()
Do Groebner Base. compute the left Groebner Base for this ideal.SolvableIdeal<C>
eliminate(GenSolvablePolynomialRing<C> R)
Eliminate.boolean
equals(java.lang.Object b)
Comparison with any other object.SolvableIdeal<C>
GB()
Groebner Base.java.util.List<GenSolvablePolynomial<C>>
getList()
Get the List of GenSolvablePolynomials.SolvableIdeal<C>
getONE()
Get the one ideal.GenSolvablePolynomialRing<C>
getRing()
Get the GenSolvablePolynomialRing.SolvableIdeal<C>
getZERO()
Get the zero ideal.int
hashCode()
Hash code for this solvable ideal.SolvableIdeal<C>
infiniteQuotient(SolvableIdeal<C> H)
Infinite Quotient.SolvableIdeal<C>
infiniteQuotient(GenSolvablePolynomial<C> h)
Infinite quotient.int
infiniteQuotientExponent(GenSolvablePolynomial<C> h, SolvableIdeal<C> Q)
Infinite quotient exponent.SolvableIdeal<C>
infiniteQuotientRab(SolvableIdeal<C> H)
Infinite Quotient.SolvableIdeal<C>
infiniteQuotientRab(GenSolvablePolynomial<C> h)
Infinite quotient.SolvableIdeal<C>
intersect(SolvableIdeal<C> B)
Intersection.SolvableIdeal<C>
intersect(GenSolvablePolynomialRing<C> R)
Intersection.SolvableIdeal<C>
intersect(java.util.List<SolvableIdeal<C>> Bl)
Intersection.GenSolvablePolynomial<C>
inverse(GenSolvablePolynomial<C> h)
Inverse for element modulo this ideal.boolean
isAnnihilator(SolvableIdeal<C> H, SolvableIdeal<C> A)
Test for annihilator of ideal modulo this ideal.boolean
isAnnihilator(GenSolvablePolynomial<C> h, SolvableIdeal<C> A)
Test for annihilator of element modulo this ideal.boolean
isGB()
Test if this is a left Groebner base.boolean
isMaximal()
Test if this ideal is maximal.boolean
isONE()
Test if ONE is contained in the ideal.boolean
isRadicalMember(GenSolvablePolynomial<C> h)
Radical membership test.boolean
isRightGB()
Test if this is a right Groebner base.boolean
isTwosidedGB()
Test if this is a twosided Groebner base.boolean
isUnit(GenSolvablePolynomial<C> h)
Test if element is a unit modulo this ideal.boolean
isZERO()
Test if ZERO ideal.SolvableIdeal<C>
leftProduct(GenSolvablePolynomial<C> b)
Left product.GenSolvablePolynomial<C>
normalform(GenSolvablePolynomial<C> h)
Normalform for element.java.util.List<GenSolvablePolynomial<C>>
normalform(java.util.List<GenSolvablePolynomial<C>> L)
Normalform for list of solvable elements.SolvableIdeal<C>
power(int d)
Power.SolvableIdeal<C>
product(SolvableIdeal<C> B)
Product.SolvableIdeal<C>
product(GenSolvablePolynomial<C> b)
Product.SolvableIdeal<C>
quotient(SolvableIdeal<C> H)
Quotient.SolvableIdeal<C>
quotient(GenSolvablePolynomial<C> h)
Quotient.SolvableIdeal<C>
rightGB()
Groebner Base.SolvableIdeal<C>
sum(SolvableIdeal<C> B)
Solvable ideal summation.SolvableIdeal<C>
sum(GenSolvablePolynomial<C> b)
Solvable summation.SolvableIdeal<C>
sum(java.util.List<GenSolvablePolynomial<C>> L)
Solvable summation.java.lang.String
toScript()
Get a scripting compatible string representation.java.lang.String
toString()
String representation of the solvable ideal.SolvableIdeal<C>
twosidedGB()
Groebner Base.java.util.List<java.lang.Long>
univariateDegrees()
Univariate head term degrees.
-
-
-
Field Detail
-
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 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)
Constructor.- Parameters:
ring
- solvable polynomial ringF
- list of solvable polynomials
-
SolvableIdeal
public SolvableIdeal(GenSolvablePolynomialRing<C> ring, java.util.List<GenSolvablePolynomial<C>> F, boolean gb)
Constructor.- Parameters:
ring
- solvable polynomial ringF
- list of solvable polynomialsgb
- 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 ringF
- list of solvable polynomialsgb
- true if F is known to be a Groebner Base, else falsetopt
- true if term order is optimized, else false
-
SolvableIdeal
public SolvableIdeal(GenSolvablePolynomialRing<C> ring, java.util.List<GenSolvablePolynomial<C>> F, SolvableIdeal.Side s)
Constructor.- Parameters:
ring
- solvable polynomial ringF
- list of solvable polynomialss
- side variant of ideal or Groebner Base
-
SolvableIdeal
public SolvableIdeal(GenSolvablePolynomialRing<C> ring, java.util.List<GenSolvablePolynomial<C>> F, boolean gb, SolvableIdeal.Side s)
Constructor.- Parameters:
ring
- solvable polynomial ringF
- list of solvable polynomialsgb
- true if F is known to be a Groebner Base, else falses
- 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 listbb
- Groebner Base enginered
- Reduction engine
-
SolvableIdeal
public SolvableIdeal(PolynomialList<C> list, boolean gb)
Constructor.- Parameters:
list
- solvable polynomial listgb
- 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 listgb
- true if list is known to be a Groebner Base, else falsetopt
- true if term order is optimized, else false
-
SolvableIdeal
public SolvableIdeal(PolynomialList<C> list, boolean gb, SolvableIdeal.Side s)
Constructor.- Parameters:
list
- solvable polynomial listgb
- true if list is known to be a Groebner Base, else falses
- 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 listgb
- true if list is known to be a Groebner Base, else falsetopt
- true if term order is optimized, else falses
- 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 listgb
- true if list is known to be a Groebner Base, else falsebb
- Groebner Base enginered
- Reduction engine
-
SolvableIdeal
public SolvableIdeal(PolynomialList<C> list, boolean gb, SolvableGroebnerBaseAbstract<C> bb)
Constructor.- Parameters:
list
- solvable polynomial listgb
- true if list is known to be a Groebner Base, else falsebb
- Groebner Base engine
-
SolvableIdeal
public SolvableIdeal(PolynomialList<C> list, boolean gb, boolean topt, SolvableGroebnerBaseAbstract<C> bb)
Constructor.- Parameters:
list
- solvable polynomial listgb
- true if list is known to be a Groebner Base, else falsetopt
- true if term order is optimized, else falsebb
- Groebner Base engine
-
SolvableIdeal
public SolvableIdeal(PolynomialList<C> list, boolean gb, boolean topt, SolvableGroebnerBaseAbstract<C> bb, SolvableReduction<C> red)
Constructor.- Parameters:
list
- solvable polynomial listgb
- true if list is known to be a Groebner Base, else falsetopt
- true if term order is optimized, else falsebb
- Groebner Base enginered
- 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 listgb
- true if list is known to be a Groebner Base, else falsetopt
- true if term order is optimized, else falsebb
- Groebner Base enginered
- Reduction engines
- 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
-
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 java.lang.String toString()
String representation of the solvable ideal.- Overrides:
toString
in classjava.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 classjava.lang.Object
- See Also:
Object.equals(java.lang.Object)
-
compareTo
public int compareTo(SolvableIdeal<C> L)
SolvableIdeal comparison.- Specified by:
compareTo
in interfacejava.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 classjava.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 polynomialQ
- 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 GenSolvablePolynomial<C> normalform(GenSolvablePolynomial<C> h)
Normalform for element.- Parameters:
h
- solvable polynomial- Returns:
- left/right/twosided normalform of h with respect to this
-
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 polynomialA
- 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 idealA
- solvable ideal- Returns:
- true, if A is the annihilator of H with respect to this
-
inverse
public GenSolvablePolynomial<C> inverse(GenSolvablePolynomial<C> h)
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 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)
-
-