use of com.sri.ai.grinder.sgdpllt.rewriter.core.Recursive in project aic-expresso by aic-sri-international.
the class AbstractTheory method setTopRewriter.
/**
* Sets the theory's rewriter.
* @param topRewriter
*/
protected void setTopRewriter(TopRewriter topRewriter) {
this.topRewriter = topRewriter;
this.cachedRecursiveExhaustiveTopRewriter = new Recursive(new Exhaustive(topRewriter));
}
use of com.sri.ai.grinder.sgdpllt.rewriter.core.Recursive in project aic-expresso by aic-sri-international.
the class SetDNFRewriter method createBaseRewriter.
private static Rewriter createBaseRewriter() {
// Original Rewriters
TopRewriter topRewriter = new DefaultTopRewriter(new IntensionalUnionToUnionsOfIntensionalSetsOfBaseTypeTopRewriter(), // NOTE: added to simplify expressions like `if true then { (2, 2) } else { }', which are common in this setup
new BooleanSimplifier(), new UnionEmptySetTopRewriter(), new IntersectionEmptySetTopRewriter(), new IntensionalSetToConditionalTopRewriter(), new IntersectionIntensionalSetsTopRewriter(), new IntersectionExtensionalSetTopRewriter(), new DistributeIntersectionOverUnionTopRewriter());
// Rewriters based on UAI 2017 Paper
// TopRewriter topRewriter = new DefaultTopRewriter(
// new TupleEqualityTopRewriter(), // Rule 1
// new ElementOfExtensionalSetTopRewriter(), // Rule 2
// new ElementOfIntensionalUnionTopRewriter(), // Rule 3
// new IntensionalUnionEqualToEmptySetTopRewriter(), // Rule 4
// new IntersectionEmptySetTopRewriter(), // Rule 5
// new UnionEmptySetTopRewriter(), // Rule 6
// new SetIntersectExtensionalSetEqualToEmptySetTopRewriter(), // Rule 7
// new IntensionalUnionIntersectionEqualToEmptySetTopRewriter(), // Rule 8
// new DistributeIntersectionOverUnionTopRewriter(), // Rule 9
// new UnionOfSetsEqualEmptySetTopRewriter(), // Rule 10
// new ExtensionalSetEqualEmptySetTopRewriter(), // Rule 11
// new BooleanSimplifier() // NOTE: added to simplify expressions like `if true then { (2, 2) } else { }', which are common in this setup
// );
Rewriter literalExternalizer = new LiteralRewriter(new Recursive(new Exhaustive(topRewriter)));
Rewriter result = new Exhaustive(new FirstOf(topRewriter, literalExternalizer));
return result;
}
use of com.sri.ai.grinder.sgdpllt.rewriter.core.Recursive in project aic-expresso by aic-sri-international.
the class RecursiveTest method runTest.
private void runTest(Rewriter rewriter, Expression initial, Expression expected, Map<Expression, Expression> symbolsAndTypes) {
CompoundTheory theory = new CompoundTheory(new PropositionalTheory(), new DifferenceArithmeticTheory(false, true));
Context context = new TrueContext(theory);
context = context.registerAdditionalSymbolsAndTypes(symbolsAndTypes);
Rewriter recursive = new Recursive(rewriter);
Expression solution = recursive.apply(initial, context);
System.out.println("Solution: " + solution);
assertEquals(expected, solution);
}
Aggregations