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