001 /*
002 * $Id: ModSolvableGroebnerBase.java 3445 2010-12-25 17:24:04Z kredel $
003 */
004
005 package edu.jas.gbmod;
006
007 import java.util.List;
008
009 import edu.jas.poly.GenSolvablePolynomial;
010 import edu.jas.poly.ModuleList;
011 import edu.jas.structure.RingElem;
012
013
014
015 /**
016 * Module solvable Groebner Bases interface.
017 * Defines modull solvabe Groebner bases and GB test.
018 * @param <C> coefficient type
019 * @author Heinz Kredel
020 */
021
022 public interface ModSolvableGroebnerBase<C extends RingElem<C>> {
023
024
025 /**
026 * Module left Groebner base test.
027 * @param modv number of modul variables.
028 * @param F a module basis.
029 * @return true, if F is a left Groebner base, else false.
030 */
031 public boolean
032 isLeftGB(int modv, List<GenSolvablePolynomial<C>> F);
033
034
035 /**
036 * Module left Groebner base test.
037 * @param M a module basis.
038 * @return true, if M is a left Groebner base, else false.
039 */
040 public boolean
041 isLeftGB(ModuleList<C> M);
042
043
044 /**
045 * Left Groebner base using pairlist class.
046 * @param modv number of modul variables.
047 * @param F a module basis.
048 * @return leftGB(F) a left Groebner base for F.
049 */
050 public List<GenSolvablePolynomial<C>>
051 leftGB(int modv, List<GenSolvablePolynomial<C>> F);
052
053
054 /**
055 * Left Groebner base using pairlist class.
056 * @param M a module basis.
057 * @return leftGB(M) a left Groebner base for M.
058 */
059 public ModuleList<C>
060 leftGB(ModuleList<C> M);
061
062
063 /**
064 * Module twosided Groebner base test.
065 * @param modv number of modul variables.
066 * @param F a module basis.
067 * @return true, if F is a twosided Groebner base, else false.
068 */
069 public boolean
070 isTwosidedGB(int modv, List<GenSolvablePolynomial<C>> F);
071
072
073 /**
074 * Module twosided Groebner base test.
075 * @param M a module basis.
076 * @return true, if M is a twosided Groebner base, else false.
077 */
078 public boolean
079 isTwosidedGB(ModuleList<C> M);
080
081
082 /**
083 * Twosided Groebner base using pairlist class.
084 * @param modv number of modul variables.
085 * @param F a module basis.
086 * @return tsGB(F) a twosided Groebner base for F.
087 */
088 public List<GenSolvablePolynomial<C>>
089 twosidedGB(int modv, List<GenSolvablePolynomial<C>> F);
090
091
092 /**
093 * Twosided Groebner base using pairlist class.
094 * @param M a module basis.
095 * @return tsGB(M) a twosided Groebner base for M.
096 */
097 public ModuleList<C>
098 twosidedGB(ModuleList<C> M);
099
100
101 /**
102 * Module right Groebner base test.
103 * @param modv number of modul variables.
104 * @param F a module basis.
105 * @return true, if F is a right Groebner base, else false.
106 */
107 public boolean
108 isRightGB(int modv, List<GenSolvablePolynomial<C>> F);
109
110
111 /**
112 * Module right Groebner base test.
113 * @param M a module basis.
114 * @return true, if M is a right Groebner base, else false.
115 */
116 public boolean
117 isRightGB(ModuleList<C> M);
118
119
120 /**
121 * Right Groebner base using pairlist class.
122 * @param modv number of modul variables.
123 * @param F a module basis.
124 * @return rightGB(F) a right Groebner base for F.
125 */
126 public List<GenSolvablePolynomial<C>>
127 rightGB(int modv, List<GenSolvablePolynomial<C>> F);
128
129
130 /**
131 * Right Groebner base using pairlist class.
132 * @param M a module basis.
133 * @return rightGB(M) a right Groebner base for M.
134 */
135 public ModuleList<C>
136 rightGB(ModuleList<C> M);
137
138 }