Heuristics.java
package dev.civl.mc.library.civlc;
import dev.civl.sarl.IF.SymbolicUniverse;
import dev.civl.sarl.IF.UnaryOperator;
import dev.civl.sarl.IF.expr.BooleanExpression;
import dev.civl.sarl.IF.expr.SymbolicExpression;
public class Heuristics {
private SymbolicUniverse universe;
static double overhead = 0;
public static class Query {
public final BooleanExpression context;
public final BooleanExpression query;
public Query(BooleanExpression context, BooleanExpression query) {
this.context = context;
this.query = query;
}
}
public Heuristics(SymbolicUniverse universe) {
this.universe = universe;
}
public Query applyHeuristicSimplifications(BooleanExpression context,
BooleanExpression predicate) {
UnaryOperator<SymbolicExpression> simplifier = new SteppedUniversalCombination(
universe);
context = (BooleanExpression) simplifier.apply(context);
predicate = (BooleanExpression) simplifier.apply(predicate);
simplifier = new ConditionalSimplification(universe);
context = (BooleanExpression) simplifier.apply(context);
predicate = (BooleanExpression) simplifier.apply(predicate);
return new Query(context, predicate);
}
}