content: package aima.core.probability.proposition;
  
  import java.util.Map;
  import java.util.Set;
  
  import aima.core.probability.RandomVariable;
  
  /**
   * Artificial Intelligence A Modern Approach (3rd Edition): page 486.<br>
   * <br>
   * Propositions describing sets of possible worlds are written in a notation
   * that combines elements of propositional logic and constraint satisfaction
   * notation. In the terminology of Section 2.4.7, it is a factored
   * representation, in which a possible world is represented by a set of
   * variable/value pairs.<br>
   * <br>
   * A possible world is defined to be an assignment of values to all of the
   * random variables under consideration.
   * 
   * @author Ciaran O'Reilly
   */
  public interface Proposition {
  	/**
  	 * 
  	 * @return the Set of RandomVariables in the World (sample space) that this
  	 *         Proposition is applicable to.
  	 */
  	Set<RandomVariable> getScope();
  
  	/**
  	 * 
  	 * @return the Set of RandomVariables from this propositions scope that are
  	 *         not constrained to any particular set of values (e.g. bound =
  	 *         P(Total = 11), while unbound = P(Total)). If a variable is
  	 *         unbound it implies the distributions associated with the variable
  	 *         is being sought.
  	 */
  	Set<RandomVariable> getUnboundScope();
  
  	/**
  	 * Determine whether or not the proposition holds in a particular possible
  	 * world.
  	 * 
  	 * @param possibleWorld
  	 *            A possible world is defined to be an assignment of values to
  	 *            all of the random variables under consideration.
  	 * @return true if the proposition holds in the given possible world, false
  	 *         otherwise.
  	 */
  	boolean holds(Map<RandomVariable, Object> possibleWorld);
  }