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    }