001 /*
002 * $Id: GroebnerBase.java 3187 2010-06-16 22:07:38Z kredel $
003 */
004
005 package edu.jas.gb;
006
007 import java.util.List;
008
009 import java.io.Serializable;
010
011 import edu.jas.structure.RingElem;
012
013 import edu.jas.poly.GenPolynomial;
014
015
016 /**
017 * Groebner Bases interface.
018 * Defines methods for Groebner bases and GB test.
019 * @param <C> coefficient type
020 * @author Heinz Kredel
021 */
022
023 public interface GroebnerBase<C extends RingElem<C>>
024 extends Serializable {
025
026
027 /**
028 * Groebner base test.
029 * @param F polynomial list.
030 * @return true, if F is a Groebner base, else false.
031 */
032 public boolean isGB(List<GenPolynomial<C>> F);
033
034
035 /**
036 * Groebner base test.
037 * @param modv module variable number.
038 * @param F polynomial list.
039 * @return true, if F is a Groebner base, else false.
040 */
041 public boolean isGB(int modv, List<GenPolynomial<C>> F);
042
043
044 /**
045 * Groebner base using pairlist class.
046 * @param F polynomial list.
047 * @return GB(F) a Groebner base of F.
048 */
049 public List<GenPolynomial<C>>
050 GB( List<GenPolynomial<C>> F );
051
052
053 /**
054 * Groebner base using pairlist class.
055 * @param modv module variable number.
056 * @param F polynomial list.
057 * @return GB(F) a Groebner base of F.
058 */
059 public List<GenPolynomial<C>>
060 GB( int modv,
061 List<GenPolynomial<C>> F );
062
063
064 /**
065 * Extended Groebner base using critical pair class.
066 * @param F polynomial list.
067 * @return a container for a Groebner base G of F together with back-and-forth transformations.
068 */
069 public ExtendedGB<C>
070 extGB( List<GenPolynomial<C>> F );
071
072
073 /**
074 * Extended Groebner base using critical pair class.
075 * @param modv module variable number.
076 * @param F polynomial list.
077 * @return a container for a Groebner base G of F together with back-and-forth transformations.
078 */
079 public ExtendedGB<C>
080 extGB( int modv,
081 List<GenPolynomial<C>> F );
082
083
084 /**
085 * Minimal ordered groebner basis.
086 * @param Gp a Groebner base.
087 * @return a reduced Groebner base of Gp.
088 */
089 public List<GenPolynomial<C>>
090 minimalGB(List<GenPolynomial<C>> Gp);
091
092
093 /**
094 * Test if reduction matrix.
095 * @param exgb an ExtendedGB container.
096 * @return true, if exgb contains a reduction matrix, else false.
097 */
098 public boolean
099 isReductionMatrix(ExtendedGB<C> exgb);
100
101
102 /**
103 * Test if reduction matrix.
104 * @param F a polynomial list.
105 * @param G a Groebner base.
106 * @param Mf a possible reduction matrix.
107 * @param Mg a possible reduction matrix.
108 * @return true, if Mg and Mf are reduction matrices, else false.
109 */
110 public boolean
111 isReductionMatrix(List<GenPolynomial<C>> F,
112 List<GenPolynomial<C>> G,
113 List<List<GenPolynomial<C>>> Mf,
114 List<List<GenPolynomial<C>>> Mg);
115
116 }