001/*
002 * $Id: ModSolvableGroebnerBase.java 3445 2010-12-25 17:24:04Z kredel $
003 */
004
005package edu.jas.gbmod;
006
007import java.util.List;
008
009import edu.jas.poly.GenSolvablePolynomial;
010import edu.jas.poly.ModuleList;
011import 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
022public 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}