001/* 002 * $Id$ 003 */ 004 005package edu.jas.gb; 006 007import java.util.List; 008 009import java.io.Serializable; 010 011import edu.jas.structure.RingElem; 012 013import edu.jas.poly.GenPolynomial; 014import edu.jas.poly.ModuleList; 015 016 017/** 018 * Groebner Bases interface. 019 * Defines methods for Groebner bases and GB test. 020 * @param <C> coefficient type 021 * @author Heinz Kredel 022 * 023 * @see edu.jas.application.GBAlgorithmBuilder 024 * @see edu.jas.gbufd.GBFactory 025 */ 026 027public interface GroebnerBase<C extends RingElem<C>> 028 extends Serializable { 029 030 031 /** 032 * Groebner base test. 033 * @param F polynomial list. 034 * @return true, if F is a Groebner base, else false. 035 */ 036 public boolean isGB(List<GenPolynomial<C>> F); 037 038 039 /** 040 * Groebner base test. 041 * @param modv module variable number. 042 * @param F polynomial list. 043 * @return true, if F is a Groebner base, else false. 044 */ 045 public boolean isGB(int modv, List<GenPolynomial<C>> F); 046 047 048 /** 049 * Groebner base using pairlist class. 050 * @param F polynomial list. 051 * @return GB(F) a Groebner base of F. 052 */ 053 public List<GenPolynomial<C>> GB( List<GenPolynomial<C>> F ); 054 055 056 /** 057 * Groebner base using pairlist class. 058 * @param modv module variable number. 059 * @param F polynomial list. 060 * @return GB(F) a Groebner base of F. 061 */ 062 public List<GenPolynomial<C>> GB( int modv, List<GenPolynomial<C>> F ); 063 064 065 /** 066 * isGB. 067 * @param M a module basis. 068 * @return true, if M is a Groebner base, else false. 069 */ 070 public boolean isGB(ModuleList<C> M); 071 072 073 /** 074 * GB. 075 * @param M a module basis. 076 * @return GB(M), a Groebner base of M. 077 */ 078 public ModuleList<C> GB(ModuleList<C> M); 079 080 081 /** 082 * Extended Groebner base using critical pair class. 083 * @param F polynomial list. 084 * @return a container for a Groebner base G of F together with back-and-forth transformations. 085 */ 086 public ExtendedGB<C> extGB(List<GenPolynomial<C>> F); 087 088 089 /** 090 * Extended Groebner base using critical pair class. 091 * @param modv module variable number. 092 * @param F polynomial list. 093 * @return a container for a Groebner base G of F together with back-and-forth transformations. 094 */ 095 public ExtendedGB<C> extGB(int modv, List<GenPolynomial<C>> F); 096 097 098 /** 099 * Minimal ordered groebner basis. 100 * @param Gp a Groebner base. 101 * @return a reduced Groebner base of Gp. 102 */ 103 public List<GenPolynomial<C>> minimalGB(List<GenPolynomial<C>> Gp); 104 105 106 /** 107 * Test if reduction matrix. 108 * @param exgb an ExtendedGB container. 109 * @return true, if exgb contains a reduction matrix, else false. 110 */ 111 public boolean isReductionMatrix(ExtendedGB<C> exgb); 112 113 114 /** 115 * Test if reduction matrix. 116 * @param F a polynomial list. 117 * @param G a Groebner base. 118 * @param Mf a possible reduction matrix. 119 * @param Mg a possible reduction matrix. 120 * @return true, if Mg and Mf are reduction matrices, else false. 121 */ 122 public boolean isReductionMatrix(List<GenPolynomial<C>> F, List<GenPolynomial<C>> G, 123 List<List<GenPolynomial<C>>> Mf, List<List<GenPolynomial<C>>> Mg); 124 125}