001/* 002 * $Id: GroebnerBase.java 5265 2015-07-27 17:17:49Z 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; 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>> 054 GB( List<GenPolynomial<C>> F ); 055 056 057 /** 058 * Groebner base using pairlist class. 059 * @param modv module variable number. 060 * @param F polynomial list. 061 * @return GB(F) a Groebner base of F. 062 */ 063 public List<GenPolynomial<C>> 064 GB( int modv, 065 List<GenPolynomial<C>> F ); 066 067 068 /** 069 * isGB. 070 * @param M a module basis. 071 * @return true, if M is a Groebner base, else false. 072 */ 073 public boolean isGB(ModuleList<C> M); 074 075 076 /** 077 * GB. 078 * @param M a module basis. 079 * @return GB(M), a Groebner base of M. 080 */ 081 public ModuleList<C> GB(ModuleList<C> M); 082 083 084 /** 085 * Extended Groebner base using critical pair class. 086 * @param F polynomial list. 087 * @return a container for a Groebner base G of F together with back-and-forth transformations. 088 */ 089 public ExtendedGB<C> 090 extGB( List<GenPolynomial<C>> F ); 091 092 093 /** 094 * Extended Groebner base using critical pair class. 095 * @param modv module variable number. 096 * @param F polynomial list. 097 * @return a container for a Groebner base G of F together with back-and-forth transformations. 098 */ 099 public ExtendedGB<C> 100 extGB( int modv, 101 List<GenPolynomial<C>> F ); 102 103 104 /** 105 * Minimal ordered groebner basis. 106 * @param Gp a Groebner base. 107 * @return a reduced Groebner base of Gp. 108 */ 109 public List<GenPolynomial<C>> 110 minimalGB(List<GenPolynomial<C>> Gp); 111 112 113 /** 114 * Test if reduction matrix. 115 * @param exgb an ExtendedGB container. 116 * @return true, if exgb contains a reduction matrix, else false. 117 */ 118 public boolean 119 isReductionMatrix(ExtendedGB<C> exgb); 120 121 122 /** 123 * Test if reduction matrix. 124 * @param F a polynomial list. 125 * @param G a Groebner base. 126 * @param Mf a possible reduction matrix. 127 * @param Mg a possible reduction matrix. 128 * @return true, if Mg and Mf are reduction matrices, else false. 129 */ 130 public boolean 131 isReductionMatrix(List<GenPolynomial<C>> F, 132 List<GenPolynomial<C>> G, 133 List<List<GenPolynomial<C>>> Mf, 134 List<List<GenPolynomial<C>>> Mg); 135 136}