content: package aima.core.probability.proposition;
  
  import java.util.Map;
  
  import aima.core.probability.RandomVariable;
  
  public class AssignmentProposition extends AbstractTermProposition {
  	private Object value = null;
  	//
  	private String toString = null;
  
  	public AssignmentProposition(RandomVariable forVariable, Object value) {
  		super(forVariable);
  		setValue(value);
  	}
  
  	public Object getValue() {
  		return value;
  	}
  	
  	public void setValue(Object value) {
  		if (null == value) {
  			throw new IllegalArgumentException(
  					"The value for the Random Variable must be specified.");
  		}
  		this.value = value;
  	}
  
  	@Override
  	public boolean holds(Map<RandomVariable, Object> possibleWorld) {
  		return value.equals(possibleWorld.get(getTermVariable()));
  	}
  
  	@Override
  	public String toString() {
  		if (null == toString) {
  			StringBuilder sb = new StringBuilder();
  			sb.append(getTermVariable().getName());
  			sb.append(" = ");
  			sb.append(value);
  
  			toString = sb.toString();
  		}
  		return toString;
  	}
  }
  