001/*
002 * $Id$
003 */
004
005package edu.jas.gb;
006
007
008import java.util.List;
009
010import edu.jas.poly.GenPolynomial;
011import edu.jas.structure.RingElem;
012
013
014/**
015 * Polynomial D Reduction interface. Defines additionally G-Polynomial.
016 * @param <C> coefficient type
017 * @author Heinz Kredel
018 */
019
020public interface DReduction<C extends RingElem<C>> extends Reduction<C> {
021
022
023    /**
024     * G-Polynomial.
025     * @param Ap polynomial.
026     * @param Bp polynomial.
027     * @return gpol(Ap,Bp) the g-polynomial of Ap and Bp.
028     */
029    public GenPolynomial<C> GPolynomial(GenPolynomial<C> Ap, GenPolynomial<C> Bp);
030
031
032    /**
033     * G-Polynomial with recording.
034     * @param S recording matrix, is modified.
035     * @param i index of Ap in basis list.
036     * @param Ap a polynomial.
037     * @param j index of Bp in basis list.
038     * @param Bp a polynomial.
039     * @return gpol(Ap, Bp), the g-Polynomial for Ap and Bp.
040     */
041    public GenPolynomial<C> GPolynomial(List<GenPolynomial<C>> S, int i, GenPolynomial<C> Ap, int j,
042                    GenPolynomial<C> Bp);
043
044}