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 }