001 /*
002 * $Id: SolvableGroebnerBase.java 2412 2009-02-07 12:17:54Z kredel $
003 */
004
005 package edu.jas.gb;
006
007
008 import java.util.List;
009
010 import edu.jas.poly.GenSolvablePolynomial;
011
012 import edu.jas.structure.RingElem;
013
014
015 /**
016 * Solvable Groebner Bases interface.
017 * Defines methods for left, right and twosided Groebner bases
018 * and left, right and twosided GB tests.
019 * @param <C> coefficient type
020 * @author Heinz Kredel.
021 */
022
023 public interface SolvableGroebnerBase<C extends RingElem<C>> {
024
025
026 /**
027 * Left Groebner base test.
028 * @param F solvable polynomial list.
029 * @return true, if F is a left Groebner base, else false.
030 */
031 public boolean isLeftGB(List<GenSolvablePolynomial<C>> F);
032
033
034 /**
035 * Left Groebner base test.
036 * @param modv number of module variables.
037 * @param F solvable polynomial list.
038 * @return true, if F is a left Groebner base, else false.
039 */
040 public boolean isLeftGB(int modv, List<GenSolvablePolynomial<C>> F);
041
042
043 /**
044 * Twosided Groebner base test.
045 * @param Fp solvable polynomial list.
046 * @return true, if Fp is a two-sided Groebner base, else false.
047 */
048 public boolean isTwosidedGB(List<GenSolvablePolynomial<C>> Fp);
049
050
051 /**
052 * Twosided Groebner base test.
053 * @param modv number of module variables.
054 * @param Fp solvable polynomial list.
055 * @return true, if Fp is a two-sided Groebner base, else false.
056 */
057 public boolean isTwosidedGB(int modv,
058 List<GenSolvablePolynomial<C>> Fp);
059
060
061 /**
062 * Right Groebner base test.
063 * @param F solvable polynomial list.
064 * @return true, if F is a right Groebner base, else false.
065 */
066 public boolean isRightGB(List<GenSolvablePolynomial<C>> F);
067
068
069 /**
070 * Right Groebner base test.
071 * @param modv number of module variables.
072 * @param F solvable polynomial list.
073 * @return true, if F is a right Groebner base, else false.
074 */
075 public boolean isRightGB(int modv, List<GenSolvablePolynomial<C>> F);
076
077
078 /**
079 * Left Groebner base using pairlist class.
080 * @param F solvable polynomial list.
081 * @return leftGB(F) a left Groebner base of F.
082 */
083 public List<GenSolvablePolynomial<C>>
084 leftGB(List<GenSolvablePolynomial<C>> F);
085
086
087 /**
088 * Left Groebner base using pairlist class.
089 * @param modv number of module variables.
090 * @param F solvable polynomial list.
091 * @return leftGB(F) a left Groebner base of F.
092 */
093 public List<GenSolvablePolynomial<C>>
094 leftGB(int modv,
095 List<GenSolvablePolynomial<C>> F);
096
097
098 /**
099 * Solvable Extended Groebner base using critical pair class.
100 * @param F solvable polynomial list.
101 * @return a container for an extended left Groebner base of F.
102 */
103 public SolvableExtendedGB<C>
104 extLeftGB( List<GenSolvablePolynomial<C>> F );
105
106
107 /**
108 * Solvable Extended Groebner base using critical pair class.
109 * @param modv module variable number.
110 * @param F solvable polynomial list.
111 * @return a container for an extended left Groebner base of F.
112 */
113 public SolvableExtendedGB<C>
114 extLeftGB( int modv,
115 List<GenSolvablePolynomial<C>> F );
116
117
118 /**
119 * Left minimal ordered groebner basis.
120 * @param Gp a left Groebner base.
121 * @return leftGBmi(F) a minimal left Groebner base of Gp.
122 */
123 public List<GenSolvablePolynomial<C>>
124 leftMinimalGB(List<GenSolvablePolynomial<C>> Gp);
125
126
127 /**
128 * Twosided Groebner base using pairlist class.
129 * @param Fp solvable polynomial list.
130 * @return tsGB(Fp) a twosided Groebner base of Fp.
131 */
132 public List<GenSolvablePolynomial<C>>
133 twosidedGB(List<GenSolvablePolynomial<C>> Fp);
134
135 /**
136 * Twosided Groebner base using pairlist class.
137 * @param modv number of module variables.
138 * @param Fp solvable polynomial list.
139 * @return tsGB(Fp) a twosided Groebner base of Fp.
140 */
141 public List<GenSolvablePolynomial<C>>
142 twosidedGB(int modv,
143 List<GenSolvablePolynomial<C>> Fp);
144
145
146 /**
147 * Right Groebner base using opposite ring left GB.
148 * @param F solvable polynomial list.
149 * @return rightGB(F) a right Groebner base of F.
150 */
151 public List<GenSolvablePolynomial<C>>
152 rightGB(List<GenSolvablePolynomial<C>> F);
153
154
155 /**
156 * Right Groebner base using opposite ring left GB.
157 * @param modv number of module variables.
158 * @param F solvable polynomial list.
159 * @return rightGB(F) a right Groebner base of F.
160 */
161 public List<GenSolvablePolynomial<C>>
162 rightGB(int modv,
163 List<GenSolvablePolynomial<C>> F);
164
165
166 /**
167 * Test if left reduction matrix.
168 * @param exgb an SolvableExtendedGB container.
169 * @return true, if exgb contains a left reduction matrix, else false.
170 */
171 public boolean
172 isLeftReductionMatrix(SolvableExtendedGB<C> exgb);
173
174
175 /**
176 * Test if left reduction matrix.
177 * @param F a solvable polynomial list.
178 * @param G a left Groebner base.
179 * @param Mf a possible left reduction matrix.
180 * @param Mg a possible left reduction matrix.
181 * @return true, if Mg and Mf are left reduction matrices, else false.
182 */
183 public boolean
184 isLeftReductionMatrix(List<GenSolvablePolynomial<C>> F,
185 List<GenSolvablePolynomial<C>> G,
186 List<List<GenSolvablePolynomial<C>>> Mf,
187 List<List<GenSolvablePolynomial<C>>> Mg);
188
189 }