001/* 002 * $Id: GroebnerBase.java 4179 2012-09-09 10:45:58Z kredel $ 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; 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 * @see edu.jas.application.GBAlgorithmBuilder 023 * @see edu.jas.gbufd.GBFactory 024 */ 025 026public interface GroebnerBase<C extends RingElem<C>> 027 extends Serializable { 028 029 030 /** 031 * Groebner base test. 032 * @param F polynomial list. 033 * @return true, if F is a Groebner base, else false. 034 */ 035 public boolean isGB(List<GenPolynomial<C>> F); 036 037 038 /** 039 * Groebner base test. 040 * @param modv module variable number. 041 * @param F polynomial list. 042 * @return true, if F is a Groebner base, else false. 043 */ 044 public boolean isGB(int modv, List<GenPolynomial<C>> F); 045 046 047 /** 048 * Groebner base using pairlist class. 049 * @param F polynomial list. 050 * @return GB(F) a Groebner base of F. 051 */ 052 public List<GenPolynomial<C>> 053 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>> 063 GB( int modv, 064 List<GenPolynomial<C>> F ); 065 066 067 /** 068 * Extended Groebner base using critical pair class. 069 * @param F polynomial list. 070 * @return a container for a Groebner base G of F together with back-and-forth transformations. 071 */ 072 public ExtendedGB<C> 073 extGB( List<GenPolynomial<C>> F ); 074 075 076 /** 077 * Extended Groebner base using critical pair class. 078 * @param modv module variable number. 079 * @param F polynomial list. 080 * @return a container for a Groebner base G of F together with back-and-forth transformations. 081 */ 082 public ExtendedGB<C> 083 extGB( int modv, 084 List<GenPolynomial<C>> F ); 085 086 087 /** 088 * Minimal ordered groebner basis. 089 * @param Gp a Groebner base. 090 * @return a reduced Groebner base of Gp. 091 */ 092 public List<GenPolynomial<C>> 093 minimalGB(List<GenPolynomial<C>> Gp); 094 095 096 /** 097 * Test if reduction matrix. 098 * @param exgb an ExtendedGB container. 099 * @return true, if exgb contains a reduction matrix, else false. 100 */ 101 public boolean 102 isReductionMatrix(ExtendedGB<C> exgb); 103 104 105 /** 106 * Test if reduction matrix. 107 * @param F a polynomial list. 108 * @param G a Groebner base. 109 * @param Mf a possible reduction matrix. 110 * @param Mg a possible reduction matrix. 111 * @return true, if Mg and Mf are reduction matrices, else false. 112 */ 113 public boolean 114 isReductionMatrix(List<GenPolynomial<C>> F, 115 List<GenPolynomial<C>> G, 116 List<List<GenPolynomial<C>>> Mf, 117 List<List<GenPolynomial<C>>> Mg); 118 119}