use of com.sri.ai.grinder.sgdpllt.rewriter.api.TopRewriter in project aic-expresso by aic-sri-international.
the class TupleRewriterTest method testTupleGetSetTopRewriter.
@Test
public void testTupleGetSetTopRewriter() {
TopRewriter tupleGetSetTopRewriter = new TupleGetSetTopRewriter();
Assert.assertEquals(parse("if I = 1 then a else if I = 2 then b else c"), tupleGetSetTopRewriter.apply(parse("get((a,b,c),I)"), context));
Assert.assertEquals(parse("if I = 1 then (e,b,c) else if I = 2 then (a,e,c) else (a,b,e)"), tupleGetSetTopRewriter.apply(parse("set((a,b,c),I,e)"), context));
}
use of com.sri.ai.grinder.sgdpllt.rewriter.api.TopRewriter in project aic-expresso by aic-sri-international.
the class TupleRewriterTest method testTupleEqualityTopRewriter.
@Test
public void testTupleEqualityTopRewriter() {
TopRewriter tupleEqualityTopRewriter = new TupleEqualityTopRewriter();
Assert.assertEquals(parse("A1 = B1 and A2 = B2 and A3 = B3"), tupleEqualityTopRewriter.apply(parse("(A1, A2, A3) = (B1, B2, B3)"), context));
Assert.assertEquals(parse("(A1_1, A1_2, A1_3) = (B1_1, B1_2, B1_3) and A2 = B2 and A3 = B3"), tupleEqualityTopRewriter.apply(parse("((A1_1, A1_2, A1_3), A2, A3) = ((B1_1, B1_2, B1_3), B2, B3)"), context));
Assert.assertEquals(parse("A1 != B1 or A2 != B2 or A3 != B3"), tupleEqualityTopRewriter.apply(parse("(A1, A2, A3) != (B1, B2, B3)"), context));
Assert.assertEquals(parse("(A1_1, A1_2, A1_3) != (B1_1, B1_2, B1_3) or A2 != B2 or A3 != B3"), tupleEqualityTopRewriter.apply(parse("((A1_1, A1_2, A1_3), A2, A3) != ((B1_1, B1_2, B1_3), B2, B3)"), context));
Expression expr = parse("(A1, A2) = (B1, B2, B3)");
Assert.assertTrue(expr == tupleEqualityTopRewriter.apply(expr, context));
expr = parse("A1 = B1");
Assert.assertTrue(expr == tupleEqualityTopRewriter.apply(expr, context));
expr = parse("(A1, A2) != (B1, B2, B3)");
Assert.assertTrue(expr == tupleEqualityTopRewriter.apply(expr, context));
expr = parse("A1 != B1");
Assert.assertTrue(expr == tupleEqualityTopRewriter.apply(expr, context));
}
use of com.sri.ai.grinder.sgdpllt.rewriter.api.TopRewriter in project aic-expresso by aic-sri-international.
the class AbstractInterpreter method setBaseTopRewriter.
public void setBaseTopRewriter(TopRewriter baseTopRewriter) {
Rewriter result = new Recursive(new Exhaustive(new TopRewriterUsingQuantifierEliminatorAndContextAssignments(baseTopRewriter)));
setBaseRewriter(result);
}
use of com.sri.ai.grinder.sgdpllt.rewriter.api.TopRewriter in project aic-expresso by aic-sri-international.
the class CompoundTheory method getDefaultTopRewriter.
@Override
public TopRewriter getDefaultTopRewriter() {
List<TopRewriter> subRewriters = mapIntoList(subTheories, t -> t.getTopRewriter());
TopRewriter topRewriter = TopRewriter.merge(subRewriters);
return topRewriter;
}
use of com.sri.ai.grinder.sgdpllt.rewriter.api.TopRewriter 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;
}
Aggregations