SubContextSimplification.java
package edu.udel.cis.vsl.sarl.simplify.simplification;
import edu.udel.cis.vsl.sarl.IF.expr.BooleanExpression;
import edu.udel.cis.vsl.sarl.IF.expr.SymbolicExpression;
import edu.udel.cis.vsl.sarl.simplify.simplifier.Context;
import edu.udel.cis.vsl.sarl.simplify.simplifier.IdealSimplifierWorker;
/**
* A {@link Simplification} that proceeds by creating a {@link SubContext} of
* the current {@link Context} to process a {@link BooleanSymbolicExpression}.
* Currently, this is used to process expressions with operator AND, LESS_THAN,
* LESS_THAN_EQUALS, NEQ and also EQUALS in the case where the arguments are
* numeric.
*/
public class SubContextSimplification extends Simplification {
public SubContextSimplification(IdealSimplifierWorker worker) {
super(worker);
}
@Override
public SymbolicExpression apply(SymbolicExpression expression) {
if (expression.type().isBoolean()) {
Context c = newSubContext((BooleanExpression) expression);
return c.getFullAssumption();
}
return expression;
}
@Override
public SimplificationKind kind() {
return SimplificationKind.SUBCONTEXT;
}
}