001/*
002 * $Id$
003 */
004
005package edu.jas.gbufd;
006
007
008import java.io.Serializable;
009import java.util.List;
010
011import edu.jas.poly.GenPolynomial;
012import edu.jas.structure.GcdRingElem;
013
014
015/**
016 * Characteristic Set interface. Defines methods for Characteristic Sets and
017 * tests.
018 * @param <C> coefficient type
019 * @author Heinz Kredel
020 */
021public interface CharacteristicSet<C extends GcdRingElem<C>> extends Serializable {
022
023
024    /**
025     * Characteristic set. According to the implementing algorithm (simple, Wu, etc).
026     * @param A list of generic polynomials.
027     * @return charSet(A) with at most one polynomial per main variable.
028     */
029    public List<GenPolynomial<C>> characteristicSet(List<GenPolynomial<C>> A);
030
031
032    /**
033     * Characteristic set test.
034     * @param A list of generic polynomials.
035     * @return true, if A is (at least a simple) characteristic set, else false.
036     */
037    public boolean isCharacteristicSet(List<GenPolynomial<C>> A);
038
039
040    /**
041     * Characteristic set reduction. Pseudo remainder wrt. the main variable.
042     * With further pseudo reduction of the leading coefficient depending on the implementing algorithm.
043     * @param P generic polynomial.
044     * @param A list of generic polynomials as characteristic set.
045     * @return characteristicSetRemainder(A,P) or 
046     *         characteristicSetReductionCoeff(A,characteristicSetRemainder(A,P)) depending on the algorithm.
047     */
048    public GenPolynomial<C> characteristicSetReduction(List<GenPolynomial<C>> A, GenPolynomial<C> P);
049
050}