001/*
002 * $Id$
003 */
004
005package edu.jas.gbufd;
006
007
008import java.util.List;
009
010import edu.jas.gb.SolvableReduction;
011import edu.jas.poly.GenPolynomial;
012import edu.jas.poly.GenSolvablePolynomial;
013import edu.jas.structure.RingElem;
014
015
016/**
017 * Polynomial pseudo reduction interface. Defines additionally normalformFactor
018 * and normalformRecursive.
019 * @param <C> coefficient type.
020 * @author Heinz Kredel
021 */
022
023public interface SolvablePseudoReduction<C extends RingElem<C>> extends SolvableReduction<C> {
024
025
026    /**
027     * Left normalform with multiplication factor.
028     * @param Pp polynomial list.
029     * @param Ap polynomial.
030     * @return ( nf(Ap), mf ) with respect to Pp and mf as multiplication factor
031     *         for Ap.
032     */
033    public PseudoReductionEntry<C> leftNormalformFactor(List<GenSolvablePolynomial<C>> Pp,
034                    GenSolvablePolynomial<C> Ap);
035
036
037    /**
038     * Right normalform with multiplication factor.
039     * @param Pp polynomial list.
040     * @param Ap polynomial.
041     * @return ( nf(Ap), mf ) with respect to Pp and mf as multiplication factor
042     *         for Ap.
043     */
044    public PseudoReductionEntry<C> rightNormalformFactor(List<GenSolvablePolynomial<C>> Pp,
045                    GenSolvablePolynomial<C> Ap);
046
047
048    /**
049     * Left normalform recursive.
050     * @param Ap recursive polynomial.
051     * @param Pp recursive polynomial list.
052     * @return nf(Ap) with respect to Pp.
053     */
054    public GenSolvablePolynomial<GenPolynomial<C>> leftNormalformRecursive(
055                    List<GenSolvablePolynomial<GenPolynomial<C>>> Pp,
056                    GenSolvablePolynomial<GenPolynomial<C>> Ap);
057
058
059    /**
060     * Right normalform recursive.
061     * @param Ap recursive polynomial.
062     * @param Pp recursive polynomial list.
063     * @return nf(Ap) with respect to Pp.
064     */
065    public GenSolvablePolynomial<GenPolynomial<C>> rightNormalformRecursive(
066                    List<GenSolvablePolynomial<GenPolynomial<C>>> Pp,
067                    GenSolvablePolynomial<GenPolynomial<C>> Ap);
068
069}