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 }