Class Ideal<C extends GcdRingElem<C>>
java.lang.Object
edu.jas.application.Ideal<C>
- All Implemented Interfaces:
Serializable, Comparable<Ideal<C>>
public class Ideal<C extends GcdRingElem<C>>
extends Object
implements Comparable<Ideal<C>>, Serializable
Ideal implements some methods for ideal arithmetic, for example intersection,
quotient and zero and positive dimensional ideal decomposition.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final GroebnerBaseAbstract<C> Groebner base engine.private static final booleanprotected final SquarefreeAbstract<C> Squarefree decomposition engine.protected booleanIndicator if list is a Groebner Base.protected booleanIndicator if list has optimized term order.protected PolynomialList<C> The data structure is a PolynomialList.private static final org.apache.logging.log4j.LoggerReduction engine.protected booleanIndicator if test has been performed if this is a Groebner Base. -
Constructor Summary
ConstructorsConstructorDescriptionIdeal(GenPolynomialRing<C> ring) Constructor.Ideal(GenPolynomialRing<C> ring, List<GenPolynomial<C>> F) Constructor.Ideal(GenPolynomialRing<C> ring, List<GenPolynomial<C>> F, boolean gb) Constructor.Ideal(GenPolynomialRing<C> ring, List<GenPolynomial<C>> F, boolean gb, boolean topt) Constructor.Ideal(PolynomialList<C> list) Constructor.Ideal(PolynomialList<C> list, boolean gb) Constructor.Ideal(PolynomialList<C> list, boolean gb, boolean topt) Constructor.Ideal(PolynomialList<C> list, boolean gb, boolean topt, GroebnerBaseAbstract<C> bb) Constructor.Ideal(PolynomialList<C> list, boolean gb, boolean topt, GroebnerBaseAbstract<C> bb, Reduction<C> red) Constructor.Ideal(PolynomialList<C> list, boolean gb, GroebnerBaseAbstract<C> bb) Constructor.Ideal(PolynomialList<C> list, boolean gb, GroebnerBaseAbstract<C> bb, Reduction<C> red) Constructor.Ideal(PolynomialList<C> list, GroebnerBaseAbstract<C> bb, Reduction<C> red) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionannihilator(Ideal<C> H) Annihilator for ideal modulo this ideal.Annihilator for element modulo this ideal.intIdeal common zero test.intIdeal list comparison.Construct univariate polynomials of minimal degree in all variables in zero dimensional ideal(G).constructUnivariate(int i) Construct univariate polynomial of minimal degree in variable i in zero dimensional ideal(G).protected booleanSet containment.booleanIdeal containment.booleancontains(GenPolynomial<C> b) Ideal containment.booleancontains(List<GenPolynomial<C>> B) Ideal containment.protected booleancontainsHT(Set<Integer> H, List<GenPolynomial<C>> G) Ideal head term containment test.static <C extends GcdRingElem<C>>
IdealWithUniv<C> contraction(IdealWithUniv<Quotient<C>> eid) Ideal contraction.copy()Clone this.Ideal irreducible decomposition.Ideal dimension.Ideal dimension.voiddoGB()Do Groebner Base.voidOptimize the term order.Eliminate.Eliminate.booleanComparison with any other object.extension(GenPolynomialRing<C> efac) Ideal extension.extension(QuotientRing<C> qfac) Ideal extension.Ideal extension.GB()Groebner Base.getList()Get the List of GenPolynomials.getONE()Get the one ideal.getRing()Get the GenPolynomialRing.getZERO()Get the zero ideal.inthashCode()Hash code for this ideal.infiniteQuotient(Ideal<C> H) Infinite Quotient.Infinite quotient.intinfiniteQuotientExponent(GenPolynomial<C> h, Ideal<C> Q) Infinite quotient exponent.Infinite quotient.Infinite Quotient.Infinite quotient.Intersection.Intersection.Intersection.inverse(GenPolynomial<C> h) Inverse for element modulo this ideal.booleanisAnnihilator(Ideal<C> H, Ideal<C> A) Test for annihilator of ideal modulo this ideal.booleanisAnnihilator(GenPolynomial<C> h, Ideal<C> A) Test for annihilator of element modulo this ideal.booleanTest for ideal decomposition.booleanisGB()Test if this is a Groebner base.booleanTest if this ideal is maximal.booleanisNormalPositionFor(int i, int j) Test if this ideal is in normal position for variables i and j.booleanisONE()Test if ONE is contained in the ideal.booleanTest for primary ideal decomposition.booleanisRadical(IdealWithUniv<C> ru) Test for radical ideal.booleanRadical membership test.booleanisUnit(GenPolynomial<C> h) Test if element is a unit modulo this ideal.booleanisZERO()Test if ZERO ideal.booleanTest for zero dimensional ideal decomposition.booleanTest for Zero dimensional radical.normalform(GenPolynomial<C> h) Normalform for element.normalform(List<GenPolynomial<C>> L) Normalform for list of elements.normalPositionFor(int i, int j, List<GenPolynomial<C>> og) Compute normal position for variables i and j.(package private) IdealWithUniv<C> normalPositionForChar0(int i, int j, List<GenPolynomial<C>> og) Compute normal position for variables i and j, characteristic zero.(package private) IdealWithUniv<C> normalPositionForCharP(int i, int j, List<GenPolynomial<C>> og) Compute normal position for variables i and j, positive characteristic.int[]Normal position index, separate for polynomials with more than 2 variables.int[]Normal position index, separate multiple univariate polynomials.permContraction(IdealWithUniv<Quotient<C>> eideal) Ideal contraction and permutation.static <C extends GcdRingElem<C>>
IdealWithUniv<C> permutation(GenPolynomialRing<C> oring, IdealWithUniv<C> Cont) Ideal permutation.power(int d) Power.Ideal primary decomposition.primaryIdeal(Ideal<C> P) Zero dimensional ideal associated primary ideal.Ideal prime decomposition.Product.product(GenPolynomial<C> b) Product.Quotient.quotient(GenPolynomial<C> h) Quotient.radical()Ideal radical.Ideal radical decomposition.Radical approximation.Summation.sum(GenPolynomial<C> b) Summation.sum(List<GenPolynomial<C>> L) Summation.toScript()Get a scripting compatible string representation.toString()String representation of the ideal.Univariate head term degrees.Zero dimensional ideal irreducible decomposition.zeroDimDecompositionExtension(List<GenPolynomial<C>> upol, List<GenPolynomial<C>> og) Zero dimensional ideal irreducible decomposition extension.zeroDimElimination(List<IdealWithUniv<C>> pdec) Zero dimensional ideal elimination to original ring.Zero dimensional ideal primary decomposition.Zero dimensional ideal primary decomposition.Zero dimensional ideal prime decomposition.Zero dimensional ideal prime decomposition, with field extension.Zero dimensional radical decomposition.Zero dimensional ideal decomposition for real roots.
-
Field Details
-
logger
private static final org.apache.logging.log4j.Logger logger -
debug
private static final boolean debug -
list
The data structure is a PolynomialList. -
isGB
protected boolean isGBIndicator if list is a Groebner Base. -
testGB
protected boolean testGBIndicator if test has been performed if this is a Groebner Base. -
isTopt
protected boolean isToptIndicator if list has optimized term order. -
bb
Groebner base engine. -
red
Reduction engine. -
engine
Squarefree decomposition engine.
-
-
Constructor Details
-
Ideal
-
Ideal
Constructor.- Parameters:
ring- polynomial ringF- list of polynomials
-
Ideal
Constructor.- Parameters:
ring- polynomial ringF- list of polynomialsgb- true if F is known to be a Groebner Base, else false
-
Ideal
Constructor.- Parameters:
ring- polynomial ringF- list of polynomialsgb- true if F is known to be a Groebner Base, else falsetopt- true if term order is optimized, else false
-
Ideal
-
Ideal
Constructor.- Parameters:
list- polynomial listbb- Groebner Base enginered- Reduction engine
-
Ideal
Constructor.- Parameters:
list- polynomial listgb- true if list is known to be a Groebner Base, else false
-
Ideal
Constructor.- Parameters:
list- polynomial listgb- true if list is known to be a Groebner Base, else falsetopt- true if term order is optimized, else false
-
Ideal
Constructor.- Parameters:
list- polynomial listgb- true if list is known to be a Groebner Base, else falsebb- Groebner Base enginered- Reduction engine
-
Ideal
Constructor.- Parameters:
list- polynomial listgb- true if list is known to be a Groebner Base, else falsebb- Groebner Base engine
-
Ideal
Constructor.- Parameters:
list- 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
-
Ideal
public Ideal(PolynomialList<C> list, boolean gb, boolean topt, GroebnerBaseAbstract<C> bb, Reduction<C> red) Constructor.- Parameters:
list- 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
-
-
Method Details
-
copy
-
getList
-
getRing
-
getZERO
-
getONE
-
toString
-
toScript
Get a scripting compatible string representation.- Returns:
- script compatible representation for this Element.
- See Also:
-
equals
-
compareTo
Ideal list comparison.- Specified by:
compareToin interfaceComparable<C extends GcdRingElem<C>>- Parameters:
L- other Ideal.- Returns:
- compareTo() of polynomial lists.
-
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
-
doToptimize
public void doToptimize()Optimize the term order. -
isGB
public boolean isGB()Test if this is a Groebner base.- Returns:
- true, if this is a Groebner base, else false
-
doGB
public void doGB()Do Groebner Base. compute the Groebner Base for this ideal. -
GB
-
contains
-
contains
Ideal containment. Test if b is contained in this ideal. Note: this is eventually modified to become a Groebner Base.- Parameters:
b- polynomial- Returns:
- true, if b is contained in this, else false
-
contains
Ideal containment. Test if each b in B is contained in this ideal. Note: this is eventually modified to become a Groebner Base.- Parameters:
B- list of polynomials- Returns:
- true, if each b in B is contained in this, else false
-
sum
-
sum
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- polynomial- Returns:
- ideal(this+{b})
-
sum
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 polynomials- Returns:
- ideal(this+L)
-
product
-
product
Product. Generators for the product this ideal by a polynomial. Note: if this ideal is a Groebner base, a Groebner base is returned.- Parameters:
b- polynomial- Returns:
- ideal(this*b)
-
intersect
-
intersect
-
intersect
Intersection. Generators for the intersection of a ideal with a polynomial ring. The polynomial ring of this ideal must be a contraction of R and the TermOrder must be an elimination order.- Parameters:
R- polynomial ring- Returns:
- ideal(this \cap R)
-
eliminate
Eliminate. Generators for the intersection of a ideal with a polynomial ring. The polynomial rings must have variable names.- Parameters:
R- polynomial ring- Returns:
- ideal(this \cap R)
-
eliminate
-
quotient
Quotient. Generators for the ideal quotient.- Parameters:
h- polynomial- Returns:
- ideal(this : h), a Groebner base
-
quotient
-
infiniteQuotientRab
Infinite quotient. Generators for the infinite ideal quotient.- Parameters:
h- polynomial- Returns:
- ideal(this : hs), a Groebner base
-
infiniteQuotientExponent
Infinite quotient exponent.- Parameters:
h- polynomialQ- quotient this : h^\infinity- Returns:
- s with Q = this : hs
-
infiniteQuotient
Infinite quotient. Generators for the infinite ideal quotient.- Parameters:
h- polynomial- Returns:
- ideal(this : hs), a Groebner base
-
isRadicalMember
Radical membership test.- Parameters:
h- polynomial- Returns:
- true if h is contained in the radical of ideal(this), else false.
-
infiniteQuotientOld
Infinite quotient. Generators for the infinite ideal quotient.- Parameters:
h- polynomial- Returns:
- ideal(this : hs), a Groebner base
-
infiniteQuotient
-
infiniteQuotientRab
-
power
-
normalform
Normalform for element.- Parameters:
h- polynomial- Returns:
- normalform of h with respect to this
-
normalform
Normalform for list of elements.- Parameters:
L- polynomial list- Returns:
- list of normalforms of the elements of L with respect to this
-
annihilator
Annihilator for element modulo this ideal.- Parameters:
h- polynomial- Returns:
- annihilator of h with respect to this
-
isAnnihilator
Test for annihilator of element modulo this ideal.- Parameters:
h- polynomialA- ideal- Returns:
- true, if A is the annihilator of h with respect to this
-
annihilator
-
isAnnihilator
-
inverse
Inverse for element modulo this ideal.- Parameters:
h- polynomial- Returns:
- inverse of h with respect to this, if defined
-
isUnit
Test if element is a unit modulo this ideal.- Parameters:
h- polynomial- Returns:
- true if h is a unit with respect to this, else false
-
squarefree
-
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, else false.
-
univariateDegrees
-
dimension
Ideal dimension.- Returns:
- a dimension container (dim,maxIndep,list(maxIndep),vars).
-
dimension
Ideal dimension.- Parameters:
S- is a set of independent variables.U- is a set of variables of unknown status.M- is a list of maximal sets of independent variables.- Returns:
- a list of maximal sets of independent variables, eventually containing S.
-
containsHT
Ideal head term containment test.- Parameters:
H- index set.G- list of polynomials.- Returns:
- true, if the variables of the head terms of each polynomial in G are contained in H, else false.
-
contains
-
constructUnivariate
Construct univariate polynomials of minimal degree in all variables in zero dimensional ideal(G).- Returns:
- list of univariate polynomial of minimal degree in each variable in ideal(G)
-
constructUnivariate
Construct univariate polynomial of minimal degree in variable i in zero dimensional ideal(G).- Parameters:
i- variable index.- Returns:
- univariate polynomial of minimal degree in variable i in ideal(G)
-
zeroDimRadicalDecomposition
Zero dimensional radical decomposition. See Seidenbergs lemma 92, and BWK lemma 8.13.- Returns:
- intersection of radical ideals G_i with ideal(this) subseteq cap_i( ideal(G_i) )
-
isZeroDimRadical
public boolean isZeroDimRadical()Test for Zero dimensional radical. See Seidenbergs lemma 92, and BWK lemma 8.13.- Returns:
- true if this is an zero dimensional radical ideal, else false
-
isRadical
Test for radical ideal.- Parameters:
ru- ideal with univariate polynomials- Returns:
- true if ru is a radical ideal, else false
-
zeroDimDecomposition
Zero dimensional ideal irreducible decomposition. See algorithm DIRGZD of BGK 1986 and also PREDEC of the Gröbner bases book 1993.- Returns:
- intersection H, of ideals G_i with ideal(this) subseteq cap_i( ideal(G_i) ) and each ideal G_i has only irreducible minimal univariate polynomials and the G_i are pairwise co-prime.
-
zeroDimDecompositionExtension
public List<IdealWithUniv<C>> zeroDimDecompositionExtension(List<GenPolynomial<C>> upol, List<GenPolynomial<C>> og) Zero dimensional ideal irreducible decomposition extension. One step decomposition via a minimal univariate polynomial in the lowest variable, used after each normalPosition step.- Parameters:
upol- list of univariate polynomialsog- list of other generators for the ideal- Returns:
- intersection of ideals G_i with ideal(this) subseteq cap_i( ideal(G_i) ) and all minimal univariate polynomials of all G_i are irreducible
-
isZeroDimDecomposition
Test for zero dimensional ideal decomposition.- Parameters:
L- intersection of ideals G_i with ideal(G) subseteq cap_i( ideal(G_i) ) and all minimal univariate polynomials of all G_i are irreducible- Returns:
- true if L is a zero dimensional irreducible decomposition of this, else false
-
normalPositionFor
Compute normal position for variables i and j.- Parameters:
i- first variable indexj- second variable indexog- other generators for the ideal- Returns:
- this + (z - x_j - t x_i) in the ring C[z, x_1, ..., x_r]
-
normalPositionForChar0
Compute normal position for variables i and j, characteristic zero.- Parameters:
i- first variable indexj- second variable indexog- other generators for the ideal- Returns:
- this + (z - x_j - t x_i) in the ring C[z, x_1, ..., x_r]
-
normalPositionForCharP
Compute normal position for variables i and j, positive characteristic.- Parameters:
i- first variable indexj- second variable indexog- other generators for the ideal- Returns:
- this + (z - x_j - t x_i) in the ring C[z, x_1, ..., x_r]
-
isNormalPositionFor
public boolean isNormalPositionFor(int i, int j) Test if this ideal is in normal position for variables i and j.- Parameters:
i- first variable indexj- second variable index- Returns:
- true if this is in normal position with respect to i and j
-
normalPositionIndex2Vars
public int[] normalPositionIndex2Vars()Normal position index, separate for polynomials with more than 2 variables. See also mas.masring.DIPDEC0#DIGISR- Returns:
- (i,j) for non-normal variables
-
normalPositionIndexUnivars
public int[] normalPositionIndexUnivars()Normal position index, separate multiple univariate polynomials. See also mas.masring.DIPDEC0#DIGISM- Returns:
- (i,j) for non-normal variables
-
zeroDimRootDecomposition
Zero dimensional ideal decomposition for real roots. See algorithm mas.masring.DIPDEC0#DINTSR.- Returns:
- intersection of ideals G_i with ideal(this) subseteq cap_i( ideal(G_i) ) and each G_i contains at most bi-variate polynomials and all univariate minimal polynomials are irreducible
-
zeroDimPrimeDecomposition
Zero dimensional ideal prime decomposition. See algorithm mas.masring.DIPDEC0#DINTSS.- Returns:
- intersection of ideals G_i with ideal(this) subseteq cap_i( ideal(G_i) ) and each G_i is a prime ideal
-
zeroDimPrimeDecompositionFE
Zero dimensional ideal prime decomposition, with field extension. See algorithm mas.masring.DIPDEC0#DINTSS.- Returns:
- intersection of ideals G_i with ideal(this) subseteq cap_i( ideal(G_i) ) and each G_i is a prime ideal with eventually containing field extension variables
-
-
zeroDimPrimaryDecomposition
Zero dimensional ideal primary decomposition.- Returns:
- list of primary components of primary ideals G_i (pairwise co-prime) with ideal(this) = cap_i( ideal(G_i) ) together with the associated primes
-
zeroDimElimination
Zero dimensional ideal elimination to original ring.- Parameters:
pdec- list of prime ideals G_i- Returns:
- intersection of pairwise co-prime prime ideals G_i in the ring of this with ideal(this) = cap_i( ideal(G_i) )
-
zeroDimPrimaryDecomposition
Zero dimensional ideal primary decomposition.- Parameters:
pdec- list of prime ideals G_i with no field extensions- Returns:
- list of primary components of primary ideals G_i (pairwise co-prime) with ideal(this) = cap_i( ideal(G_i) ) together with the associated primes
-
isPrimaryDecomposition
Test for primary ideal decomposition.- Parameters:
L- list of primary components G_i- Returns:
- true if ideal(this) == cap_i( ideal(G_i) )
-
extension
Ideal extension.- Parameters:
vars- list of variables for a polynomial ring for extension- Returns:
- ideal G, with coefficients in QuotientRing(GenPolynomialRing
(vars))
-
extension
Ideal extension.- Parameters:
efac- polynomial ring for extension- Returns:
- ideal G, with coefficients in QuotientRing(efac)
-
extension
Ideal extension.- Parameters:
qfac- quotient polynomial ring for extension- Returns:
- ideal G, with coefficients in qfac
-
permContraction
Ideal contraction and permutation.- Parameters:
eideal- extension ideal of this.- Returns:
- contraction ideal of eideal in this polynomial ring
-
contraction
public static <C extends GcdRingElem<C>> IdealWithUniv<C> contraction(IdealWithUniv<Quotient<C>> eid) Ideal contraction.- Parameters:
eid- extension ideal of this.- Returns:
- contraction ideal of eid in distributed polynomial ring
-
permutation
public static <C extends GcdRingElem<C>> IdealWithUniv<C> permutation(GenPolynomialRing<C> oring, IdealWithUniv<C> Cont) Ideal permutation.- Parameters:
oring- polynomial ring to which variables are back permuted.Cont- ideal to be permuted- Returns:
- permutation of cont in polynomial ring oring
-
radical
-
radicalDecomposition
Ideal radical decomposition.- Returns:
- intersection of ideals G_i with radical(this) eq cap_i( ideal(G_i) ) and each G_i is a radical ideal and the G_i are pairwise co-prime
-
decomposition
Ideal irreducible decomposition.- Returns:
- intersection of ideals G_i with ideal(this) subseteq cap_i( ideal(G_i) ) and each G_i is an ideal with irreducible univariate polynomials (after extension to a zero dimensional ideal) and the G_i are pairwise co-prime
-
primeDecomposition
Ideal prime decomposition.- Returns:
- intersection of ideals G_i with ideal(this) subseteq cap_i( ideal(G_i) ) and each G_i is a prime ideal and the G_i are pairwise co-prime
-
isDecomposition
Test for ideal decomposition.- Parameters:
L- intersection of ideals G_i with ideal(G) eq cap_i(ideal(G_i) )- Returns:
- true if L is a decomposition of this, else false
-
primaryDecomposition
Ideal primary decomposition.- Returns:
- list of primary components of primary ideals G_i (pairwise co-prime) with ideal(this) = cap_i( ideal(G_i) ) together with the associated primes
-