/**
 * SVPAlib
 * theory
 * Apr 21, 2015
 * @author Loris D'Antoni
 */
package theory;

import java.util.List;

/**
 * BooleanAlgebraSubst: A Boolean Alegbra with substitution
 * @param <P> The type of predicates forming the Boolean algebra
 * @param <PL> The type of predicates over lists of variables 
 * @param <F> The type of functions S->S in the Boolean Algebra 
 * @param <S> The domain of the Boolean algebra
 */
public abstract class BooleanAlgebraSubstAndOutputs<P, PL, F, S> extends BooleanAlgebraSubst<P, F, S>{
	
	/**
	 * Returns a list of P predicates whose conjunction expresses the PL p
	 * e.g.: for \phi(x, y) = (x = 1) \wedge (x = y), computes \psi(x) = [x = 1, x = 1]
	 */
	public abstract List<P> getCartesianPredicate(PL p);
	
	/**
	 * Returns a list of list of P predicates whose disjunction expresses the PL p
	 * e.g.: for \phi(x, y) = (0 < x < 3) \wedge (x = y), computes \psi(x) = [[x = 1, x = 1], [x = 2, x = 2], [x = 3, x= 3]]
	 */
	public abstract List<List<P>> getMonadicPredicate(PL p);
	
	/**
	 * get the restricted output based on <code>p</code> and <code>f</code>
	 * @return \psi(y) = \exists x. \phi(x) \wedge f(x)=y
	 */
	public abstract PL getRestrictedOutput(P p, List<F> fs);
	
}

@@ -660,32 +660,79 @@
 tes 
+%5Bx = 1, x = 1%5D%0A%09 * which stands for 
 %5Cp
-s
+h
 i(x
+, y
 ) = 
-%5B
+(
 x = 1
-, x
+) %5Cwedge (y
  = 1
-%5D
+)
 %0A%09 *
@@ -941,18 +941,8 @@
 utes
- %5Cpsi(x) =
  %5B%5Bx
@@ -973,24 +973,98 @@
 = 2%5D
-, %5Bx = 3, x= 3%5D%5D
+%5D%0A%09 * which stands for %5Cphi(x, y) = ((x = 1) %5Cwedge (y = 1)) %5Cvee ((x = 2) %5Cwedge (y = 2))
 %0A%09 *

Add to comments