aima.core.probability.proposition.SubsetProposition Maven / Gradle / Ivy
package aima.core.probability.proposition;
import java.util.Map;
import aima.core.probability.RandomVariable;
import aima.core.probability.domain.FiniteDomain;
public class SubsetProposition extends AbstractDerivedProposition {
private FiniteDomain subsetDomain = null;
private RandomVariable varSubsetOf = null;
//
private String toString = null;
public SubsetProposition(String name, FiniteDomain subsetDomain,
RandomVariable ofVar) {
super(name);
if (null == subsetDomain) {
throw new IllegalArgumentException("Sum Domain must be specified.");
}
this.subsetDomain = subsetDomain;
this.varSubsetOf = ofVar;
addScope(this.varSubsetOf);
}
//
// START-Proposition
public boolean holds(Map possibleWorld) {
return subsetDomain.getPossibleValues().contains(
possibleWorld.get(varSubsetOf));
}
// END-Proposition
//
@Override
public String toString() {
if (null == toString) {
StringBuilder sb = new StringBuilder();
sb.append(getDerivedName());
sb.append(" = ");
sb.append(subsetDomain.toString());
toString = sb.toString();
}
return toString;
}
}