001    /*
002     * $Id: RReduction.java 3423 2010-12-24 10:56:50Z kredel $
003     */
004    
005    package edu.jas.gbufd;
006    
007    
008    import java.util.List;
009    
010    import edu.jas.structure.RegularRingElem;
011    
012    import edu.jas.gb.Reduction;
013    import edu.jas.poly.GenPolynomial;
014    
015    
016    /**
017     * Polynomial R Reduction interface. Defines additionally boolean closure
018     * methods.
019     * @param <C> coefficient type
020     * @author Heinz Kredel
021     */
022    
023    public interface RReduction<C extends RegularRingElem<C>> extends Reduction<C> {
024    
025    
026        /**
027         * Is strong top reducible. Condition is idempotent(a) == idempotent(b), for
028         * a=ldcf(A) and b=ldcf(B) and lt(B) | lt(A) for some B in F.
029         * @param A polynomial.
030         * @param P polynomial list.
031         * @return true if A is string top reducible with respect to P.
032         */
033        public boolean isStrongTopReducible(List<GenPolynomial<C>> P, GenPolynomial<C> A);
034    
035    
036        /**
037         * Is boolean closed, test if A == idempotent(ldcf(A)) A.
038         * @param A polynomial.
039         * @return true if A is boolean closed, else false.
040         */
041        public boolean isBooleanClosed(GenPolynomial<C> A);
042    
043    
044        /**
045         * Is boolean closed, test if all A in F are boolean closed.
046         * @param F polynomial list.
047         * @return true if F is boolean closed, else false.
048         */
049        public boolean isBooleanClosed(List<GenPolynomial<C>> F);
050    
051    
052        /**
053         * Boolean closure, compute idempotent(ldcf(A)) A.
054         * @param A polynomial.
055         * @return bc(A).
056         */
057        public GenPolynomial<C> booleanClosure(GenPolynomial<C> A);
058    
059    
060        /**
061         * Boolean remainder, compute idemComplement(ldcf(A)) A.
062         * @param A polynomial.
063         * @return br(A) = A - bc(A).
064         */
065        public GenPolynomial<C> booleanRemainder(GenPolynomial<C> A);
066    
067    
068        /**
069         * Reduced boolean closure, compute BC(A) for all A in F.
070         * @param F polynomial list.
071         * @return red(bc(F)) = bc(red(F)).
072         */
073        public List<GenPolynomial<C>> reducedBooleanClosure(List<GenPolynomial<C>> F);
074    
075    
076        /**
077         * Reduced boolean closure, compute BC(A) modulo F.
078         * @param A polynomial.
079         * @param F polynomial list.
080         * @return red(bc(A)).
081         */
082        public List<GenPolynomial<C>> reducedBooleanClosure(List<GenPolynomial<C>> F,
083                GenPolynomial<C> A);
084    
085    
086    }