Package edu.jas.gb

Class SolvableGroebnerBaseAbstract<C extends RingElem<C>>

java.lang.Object
edu.jas.gb.SolvableGroebnerBaseAbstract<C>
Type Parameters:
C - coefficient type
All Implemented Interfaces:
SolvableGroebnerBase<C>, Serializable
Direct Known Subclasses:
SGBProxy, SolvableGroebnerBaseParallel, SolvableGroebnerBasePseudoRecSeq, SolvableGroebnerBasePseudoSeq, SolvableGroebnerBaseSeq, SolvableGroebnerBaseSeqPairParallel

public abstract class SolvableGroebnerBaseAbstract<C extends RingElem<C>> extends Object implements SolvableGroebnerBase<C>
Solvable Groebner Bases abstract class. Implements common left, right and twosided Groebner bases and left, right and twosided GB tests.
See Also:
  • Field Details

  • Constructor Details

    • SolvableGroebnerBaseAbstract

      public SolvableGroebnerBaseAbstract()
      Constructor.
    • SolvableGroebnerBaseAbstract

      public SolvableGroebnerBaseAbstract(SolvableReduction<C> sred)
      Constructor.
      Parameters:
      sred - Solvable reduction engine
    • SolvableGroebnerBaseAbstract

      public SolvableGroebnerBaseAbstract(PairList<C> pl)
      Constructor.
      Parameters:
      pl - pair selection strategy
    • SolvableGroebnerBaseAbstract

      public SolvableGroebnerBaseAbstract(SolvableReduction<C> sred, PairList<C> pl)
      Constructor.
      Parameters:
      sred - Solvable reduction engine
      pl - pair selection strategy
  • Method Details

    • normalizeZerosOnes

      public List<GenSolvablePolynomial<C>> normalizeZerosOnes(List<GenSolvablePolynomial<C>> A)
      Normalize polynomial list.
      Parameters:
      A - list of polynomials.
      Returns:
      list of polynomials with zeros removed and ones/units reduced.
    • isLeftGB

      public boolean isLeftGB(List<GenSolvablePolynomial<C>> F)
      Left Groebner base test.
      Specified by:
      isLeftGB in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      F - solvable polynomial list.
      Returns:
      true, if F is a left Groebner base, else false.
    • isLeftGB

      public boolean isLeftGB(List<GenSolvablePolynomial<C>> F, boolean b)
      Left Groebner base test.
      Parameters:
      F - solvable polynomial list.
      b - true for simple test, false for GB test.
      Returns:
      true, if F is a Groebner base, else false.
    • isLeftGB

      public boolean isLeftGB(int modv, List<GenSolvablePolynomial<C>> F)
      Left Groebner base test.
      Specified by:
      isLeftGB in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      modv - module variable number.
      F - solvable polynomial list.
      Returns:
      true, if F is a Groebner base, else false.
    • isLeftGB

      public boolean isLeftGB(int modv, List<GenSolvablePolynomial<C>> F, boolean b)
      Left Groebner base test.
      Parameters:
      modv - module variable number.
      F - solvable polynomial list.
      b - true for simple test, false for GB test.
      Returns:
      true, if F is a Groebner base, else false.
    • isLeftGBsimple

      public boolean isLeftGBsimple(int modv, List<GenSolvablePolynomial<C>> F)
      Left Groebner base test.
      Parameters:
      modv - number of module variables.
      F - solvable polynomial list.
      Returns:
      true, if F is a left Groebner base, else false.
    • isLeftGBidem

      public boolean isLeftGBidem(int modv, List<GenSolvablePolynomial<C>> F)
      Left Groebner base idempotence test.
      Parameters:
      modv - module variable number.
      F - solvable polynomial list.
      Returns:
      true, if F is equal to GB(F), else false.
    • isTwosidedGB

      public boolean isTwosidedGB(List<GenSolvablePolynomial<C>> Fp)
      Twosided Groebner base test.
      Specified by:
      isTwosidedGB in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      Fp - solvable polynomial list.
      Returns:
      true, if Fp is a two-sided Groebner base, else false.
    • isTwosidedGB

      public boolean isTwosidedGB(int modv, List<GenSolvablePolynomial<C>> Fp)
      Twosided Groebner base test.
      Specified by:
      isTwosidedGB in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      modv - number of module variables.
      Fp - solvable polynomial list.
      Returns:
      true, if Fp is a two-sided Groebner base, else false.
    • isTwosidedGBidem

      public boolean isTwosidedGBidem(List<GenSolvablePolynomial<C>> F)
      Twosided Groebner base idempotence test.
      Parameters:
      F - solvable polynomial list.
      Returns:
      true, if F is equal to GB(F), else false.
    • isTwosidedGBidem

      public boolean isTwosidedGBidem(int modv, List<GenSolvablePolynomial<C>> F)
      Twosided Groebner base idempotence test.
      Parameters:
      modv - module variable number.
      F - solvable polynomial list.
      Returns:
      true, if F is equal to GB(F), else false.
    • isRightGB

      public boolean isRightGB(List<GenSolvablePolynomial<C>> F)
      Right Groebner base test.
      Specified by:
      isRightGB in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      F - solvable polynomial list.
      Returns:
      true, if F is a right Groebner base, else false.
    • isRightGB

      public boolean isRightGB(int modv, List<GenSolvablePolynomial<C>> F)
      Right Groebner base test.
      Specified by:
      isRightGB in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      modv - number of module variables.
      F - solvable polynomial list.
      Returns:
      true, if F is a right Groebner base, else false.
    • isRightGBidem

      public boolean isRightGBidem(List<GenSolvablePolynomial<C>> F)
      Right Groebner base idempotence test.
      Parameters:
      F - solvable polynomial list.
      Returns:
      true, if F is equal to GB(F), else false.
    • isRightGBidem

      public boolean isRightGBidem(int modv, List<GenSolvablePolynomial<C>> F)
      Right Groebner base idempotence test.
      Parameters:
      modv - module variable number.
      F - solvable polynomial list.
      Returns:
      true, if F is equal to GB(F), else false.
    • leftGB

      Left Groebner base using pairlist class.
      Specified by:
      leftGB in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      F - solvable polynomial list.
      Returns:
      leftGB(F) a left Groebner base of F.
    • extLeftGB

      public SolvableExtendedGB<C> extLeftGB(List<GenSolvablePolynomial<C>> F)
      Solvable Extended Groebner base using critical pair class.
      Specified by:
      extLeftGB in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      F - solvable polynomial list.
      Returns:
      a container for an extended left Groebner base of F.
    • extLeftGB

      public SolvableExtendedGB<C> extLeftGB(int modv, List<GenSolvablePolynomial<C>> F)
      Solvable Extended Groebner base using critical pair class.
      Specified by:
      extLeftGB in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      modv - module variable number.
      F - polynomial list.
      Returns:
      a container for an extended left Groebner base G of F together with back-and-forth transformations.
    • leftMinimalGB

      public List<GenSolvablePolynomial<C>> leftMinimalGB(List<GenSolvablePolynomial<C>> Gp)
      Left minimal ordered groebner basis.
      Specified by:
      leftMinimalGB in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      Gp - a left Groebner base.
      Returns:
      leftGBmi(F) a minimal left Groebner base of Gp.
    • rightMinimalGB

      public List<GenSolvablePolynomial<C>> rightMinimalGB(List<GenSolvablePolynomial<C>> Gp)
      Right minimal ordered groebner basis.
      Parameters:
      Gp - a right Groebner base.
      Returns:
      rightGBmi(F) a minimal right Groebner base of Gp.
    • twosidedGB

      Twosided Groebner base using pairlist class.
      Specified by:
      twosidedGB in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      Fp - solvable polynomial list.
      Returns:
      tsGB(Fp) a twosided Groebner base of Fp.
    • rightGB

      Right Groebner base using opposite ring left GB.
      Specified by:
      rightGB in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      F - solvable polynomial list.
      Returns:
      rightGB(F) a right Groebner base of F.
    • rightGB

      public List<GenSolvablePolynomial<C>> rightGB(int modv, List<GenSolvablePolynomial<C>> F)
      Right Groebner base using opposite ring left GB.
      Specified by:
      rightGB in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      modv - number of module variables.
      F - solvable polynomial list.
      Returns:
      rightGB(F) a right Groebner base of F.
    • extRightGB

      public SolvableExtendedGB<C> extRightGB(List<GenSolvablePolynomial<C>> F)
      Solvable Extended Groebner base using critical pair class.
      Parameters:
      F - solvable polynomial list.
      Returns:
      a container for an extended right Groebner base of F.
    • extRightGB

      public SolvableExtendedGB<C> extRightGB(int modv, List<GenSolvablePolynomial<C>> F)
      Solvable Extended Groebner base using critical pair class.
      Parameters:
      modv - module variable number.
      F - polynomial list.
      Returns:
      a container for an extended right Groebner base G of F together with back-and-forth transformations.
    • isLeftGB

      public boolean isLeftGB(ModuleList<C> M)
      Module left Groebner base test.
      Specified by:
      isLeftGB in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      M - a module basis.
      Returns:
      true, if M is a left Groebner base, else false.
    • isLeftGB

      public boolean isLeftGB(ModuleList<C> M, boolean top)
      Module left Groebner base test.
      Parameters:
      M - a module basis.
      top - true for TOP term order, false for POT term order.
      Returns:
      true, if M is a left Groebner base, else false.
    • leftGB

      public ModuleList<C> leftGB(ModuleList<C> M)
      Left Groebner base using pairlist class.
      Specified by:
      leftGB in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      M - a module basis.
      Returns:
      leftGB(M) a left Groebner base for M.
    • leftGB

      public ModuleList<C> leftGB(ModuleList<C> M, boolean top)
      Left Groebner base using pairlist class.
      Parameters:
      M - a module basis.
      top - true for TOP term order, false for POT term order.
      Returns:
      leftGB(M) a left Groebner base for M.
    • isTwosidedGB

      public boolean isTwosidedGB(ModuleList<C> M)
      Module twosided Groebner base test.
      Specified by:
      isTwosidedGB in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      M - a module basis.
      Returns:
      true, if M is a twosided Groebner base, else false.
    • isTwosidedGB

      public boolean isTwosidedGB(ModuleList<C> M, boolean top)
      Module twosided Groebner base test.
      Parameters:
      M - a module basis.
      top - true for TOP term order, false for POT term order.
      Returns:
      true, if M is a twosided Groebner base, else false.
    • twosidedGB

      public ModuleList<C> twosidedGB(ModuleList<C> M)
      Twosided Groebner base using pairlist class.
      Specified by:
      twosidedGB in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      M - a module basis.
      Returns:
      twosidedGB(M) a twosided Groebner base for M.
    • twosidedGB

      public ModuleList<C> twosidedGB(ModuleList<C> M, boolean top)
      Twosided Groebner base using pairlist class.
      Parameters:
      M - a module basis.
      top - true for TOP term order, false for POT term order.
      Returns:
      tsGB(M) a twosided Groebner base for M.
    • isRightGB

      public boolean isRightGB(ModuleList<C> M)
      Module right Groebner base test.
      Specified by:
      isRightGB in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      M - a module basis.
      Returns:
      true, if M is a right Groebner base, else false.
    • isRightGB

      public boolean isRightGB(ModuleList<C> M, boolean top)
      Module right Groebner base test.
      Parameters:
      M - a module basis.
      top - true for TOP term order, false for POT term order.
      Returns:
      true, if M is a right Groebner base, else false.
    • rightGB

      public ModuleList<C> rightGB(ModuleList<C> M)
      Right Groebner base using pairlist class.
      Specified by:
      rightGB in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      M - a module basis.
      Returns:
      rightGB(M) a right Groebner base for M.
    • isLeftReductionMatrix

      public boolean isLeftReductionMatrix(SolvableExtendedGB<C> exgb)
      Test if left reduction matrix.
      Specified by:
      isLeftReductionMatrix in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      exgb - an SolvableExtendedGB container.
      Returns:
      true, if exgb contains a left reduction matrix, else false.
    • isLeftReductionMatrix

      public boolean isLeftReductionMatrix(List<GenSolvablePolynomial<C>> F, List<GenSolvablePolynomial<C>> G, List<List<GenSolvablePolynomial<C>>> Mf, List<List<GenSolvablePolynomial<C>>> Mg)
      Test if left reduction matrix.
      Specified by:
      isLeftReductionMatrix in interface SolvableGroebnerBase<C extends RingElem<C>>
      Parameters:
      F - a solvable polynomial list.
      G - a left Groebner base.
      Mf - a possible left reduction matrix.
      Mg - a possible left reduction matrix.
      Returns:
      true, if Mg and Mf are left reduction matrices, else false.
    • commonZeroTest

      public int commonZeroTest(List<GenSolvablePolynomial<C>> A)
      Ideal common zero test.
      Returns:
      -1, 0 or 1 if dimension(this) &eq; -1, 0 or ≥ 1.
    • univariateDegrees

      public List<Long> univariateDegrees(List<GenSolvablePolynomial<C>> A)
      Univariate head term degrees.
      Parameters:
      A - list of solvable polynomials.
      Returns:
      a list of the degrees of univariate head terms.
    • constructUnivariate

      public GenSolvablePolynomial<C> constructUnivariate(int i, List<GenSolvablePolynomial<C>> G)
      Construct univariate solvable polynomial of minimal degree in variable i of a zero dimensional ideal(G).
      Parameters:
      i - variable index.
      G - list of solvable polynomials, a monic reduced left Gröbner base of a zero dimensional ideal.
      Returns:
      univariate solvable polynomial of minimal degree in variable i in ideal_left(G)
    • constructUnivariate

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

      public void terminate()
      Cleanup and terminate ThreadPool.
    • cancel

      public int cancel()
      Cancel ThreadPool.