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 }