001/*
002 * $Id: SolvablePseudoReduction.java 5041 2014-12-29 11:58:22Z kredel $
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    public PseudoReductionEntry<C> rightNormalformFactor(List<GenSolvablePolynomial<C>> Pp, GenSolvablePolynomial<C> Ap);
044     */
045
046
047    /**
048     * Left normalform recursive.
049     * @param Ap recursive polynomial.
050     * @param Pp recursive polynomial list.
051     * @return nf(Ap) with respect to Pp.
052     */
053    public GenSolvablePolynomial<GenPolynomial<C>> leftNormalformRecursive(
054                    List<GenSolvablePolynomial<GenPolynomial<C>>> Pp,
055                    GenSolvablePolynomial<GenPolynomial<C>> Ap);
056
057
058    /*
059     * Right normalform recursive.
060     * @param Ap recursive polynomial.
061     * @param Pp recursive polynomial list.
062     * @return nf(Ap) with respect to Pp.
063    public GenSolvablePolynomial<GenPolynomial<C>> rightNormalformRecursive(List<GenSolvablePolynomial<GenPolynomial<C>>> Pp, GenSolvablePolynomial<GenPolynomial<C>> Ap);
064     */
065
066}