/*
* $Id$
*/
package edu.jas.gb;
import java.util.List;
import java.io.Serializable;
import edu.jas.poly.ExpVector;
import edu.jas.poly.GenPolynomial;
import edu.jas.structure.RingElem;
/**
* Polynomial Reduction interface.
* Defines S-Polynomial, normalform, criterion 4, module criterion
* and irreducible set.
* @param coefficient type
* @author Heinz Kredel
*/
public interface Reduction>
extends Serializable {
/**
* S-Polynomial.
* @param Ap polynomial.
* @param Bp polynomial.
* @return spol(Ap,Bp) the S-polynomial of Ap and Bp.
*/
public GenPolynomial SPolynomial(GenPolynomial Ap,
GenPolynomial Bp);
/**
* S-Polynomial with recording.
* @param S recording matrix, is modified.
* @param i index of Ap in basis list.
* @param Ap a polynomial.
* @param j index of Bp in basis list.
* @param Bp a polynomial.
* @return Spol(Ap, Bp), the S-Polynomial for Ap and Bp.
*/
public GenPolynomial
SPolynomial(List> S,
int i,
GenPolynomial Ap,
int j,
GenPolynomial Bp);
/**
* Module criterium.
* @param modv number of module variables.
* @param A polynomial.
* @param B polynomial.
* @return true if the module S-polynomial(i,j) is required.
*/
public boolean moduleCriterion(int modv,
GenPolynomial A,
GenPolynomial B);
/**
* Module criterium.
* @param modv number of module variables.
* @param ei ExpVector.
* @param ej ExpVector.
* @return true if the module S-polynomial(i,j) is required.
*/
public boolean moduleCriterion(int modv, ExpVector ei, ExpVector ej);
/**
* GB criterium 4.
* Use only for commutative polynomial rings.
* @param A polynomial.
* @param B polynomial.
* @param e = lcm(ht(A),ht(B))
* @return true if the S-polynomial(i,j) is required, else false.
*/
public boolean criterion4(GenPolynomial A,
GenPolynomial B,
ExpVector e);
/**
* GB criterium 4.
* Use only for commutative polynomial rings.
* @param A polynomial.
* @param B polynomial.
* @return true if the S-polynomial(i,j) is required, else false.
*/
public boolean criterion4(GenPolynomial A,
GenPolynomial B);
/**
* GB criterium 4.
* @param ei exponent vector.
* @param ej exponent vector.
* @param e = lcm(ei,ej)
* @return true if the S-polynomial(i,j) is required, else false.
*/
public boolean criterion4(ExpVector ei, ExpVector ej, ExpVector e);
/**
* Is top reducible.
* Condition is lt(B) | lt(A) for some B in F.
* @param A polynomial.
* @param P polynomial list.
* @return true if A is top reducible with respect to P.
*/
public boolean isTopReducible(List> P,
GenPolynomial A);
/**
* Is reducible.
* @param A polynomial.
* @param P polynomial list.
* @return true if A is reducible with respect to P.
*/
public boolean isReducible(List> P,
GenPolynomial A);
/**
* Is in Normalform.
* @param A polynomial.
* @param P polynomial list.
* @return true if A is in normalform with respect to P.
*/
public boolean isNormalform(List> P,
GenPolynomial A);
/**
* Is in Normalform.
* @param Pp polynomial list.
* @return true if each A in Pp is in normalform with respect to Pp\{A}.
*/
public boolean isNormalform( List> Pp );
/**
* Normalform.
* @param A polynomial.
* @param P polynomial list.
* @return nf(A) with respect to P.
*/
public GenPolynomial normalform(List> P,
GenPolynomial A);
/**
* Normalform Set.
* @param Ap polynomial list.
* @param Pp polynomial list.
* @return list of nf(a) with respect to Pp for all a in Ap.
*/
public List> normalform(List> Pp,
List> Ap);
/**
* Normalform with recording.
* @param row recording matrix, is modified.
* @param Pp a polynomial list for reduction.
* @param Ap a polynomial.
* @return nf(Pp,Ap), the normal form of Ap wrt. Pp.
*/
public GenPolynomial
normalform(List> row,
List> Pp,
GenPolynomial Ap);
/**
* Irreducible set.
* @param Pp polynomial list.
* @return a list P of polynomials which are in normalform wrt. P and with ideal(Pp) = ideal(P).
*/
public List> irreducibleSet(List> Pp);
/**
* Is reduction of normal form.
* @param row recording matrix, is modified.
* @param Pp a polynomial list for reduction.
* @param Ap a polynomial.
* @param Np nf(Pp,Ap), a normal form of Ap wrt. Pp.
* @return true, if Np + sum( row[i]*Pp[i] ) == Ap, else false.
*/
public boolean
isReductionNF(List> row,
List> Pp,
GenPolynomial Ap,
GenPolynomial Np);
}
Ads help maintain this website.