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