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 }