Search in sources :

Example 6 with Exhaustive

use of com.sri.ai.grinder.sgdpllt.rewriter.core.Exhaustive 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));
}
Also used : Exhaustive(com.sri.ai.grinder.sgdpllt.rewriter.core.Exhaustive) Recursive(com.sri.ai.grinder.sgdpllt.rewriter.core.Recursive)

Example 7 with Exhaustive

use of com.sri.ai.grinder.sgdpllt.rewriter.core.Exhaustive 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;
}
Also used : DefaultTopRewriter(com.sri.ai.grinder.sgdpllt.rewriter.core.DefaultTopRewriter) Exhaustive(com.sri.ai.grinder.sgdpllt.rewriter.core.Exhaustive) DefaultTopRewriter(com.sri.ai.grinder.sgdpllt.rewriter.core.DefaultTopRewriter) TupleEqualityTopRewriter(com.sri.ai.grinder.sgdpllt.theory.tuple.rewriter.TupleEqualityTopRewriter) TopRewriter(com.sri.ai.grinder.sgdpllt.rewriter.api.TopRewriter) BooleanSimplifier(com.sri.ai.grinder.sgdpllt.library.boole.BooleanSimplifier) LiteralRewriter(com.sri.ai.grinder.sgdpllt.library.boole.LiteralRewriter) Rewriter(com.sri.ai.grinder.sgdpllt.rewriter.api.Rewriter) LiteralRewriter(com.sri.ai.grinder.sgdpllt.library.boole.LiteralRewriter) DefaultTopRewriter(com.sri.ai.grinder.sgdpllt.rewriter.core.DefaultTopRewriter) TupleEqualityTopRewriter(com.sri.ai.grinder.sgdpllt.theory.tuple.rewriter.TupleEqualityTopRewriter) TopRewriter(com.sri.ai.grinder.sgdpllt.rewriter.api.TopRewriter) FirstOf(com.sri.ai.grinder.sgdpllt.rewriter.core.FirstOf) Recursive(com.sri.ai.grinder.sgdpllt.rewriter.core.Recursive)

Aggregations

Exhaustive (com.sri.ai.grinder.sgdpllt.rewriter.core.Exhaustive)7 Rewriter (com.sri.ai.grinder.sgdpllt.rewriter.api.Rewriter)6 Recursive (com.sri.ai.grinder.sgdpllt.rewriter.core.Recursive)6 TopRewriter (com.sri.ai.grinder.sgdpllt.rewriter.api.TopRewriter)5 LiteralRewriter (com.sri.ai.grinder.sgdpllt.library.boole.LiteralRewriter)3 FirstOf (com.sri.ai.grinder.sgdpllt.rewriter.core.FirstOf)3 Expression (com.sri.ai.expresso.api.Expression)2 Context (com.sri.ai.grinder.sgdpllt.api.Context)2 ExpressionLiteralSplitterStepSolver (com.sri.ai.grinder.sgdpllt.api.ExpressionLiteralSplitterStepSolver)2 ForAllRewriter (com.sri.ai.grinder.sgdpllt.library.boole.ForAllRewriter)2 ThereExistsRewriter (com.sri.ai.grinder.sgdpllt.library.boole.ThereExistsRewriter)2 MaxRewriter (com.sri.ai.grinder.sgdpllt.library.number.MaxRewriter)2 ProductRewriter (com.sri.ai.grinder.sgdpllt.library.number.ProductRewriter)2 SummationRewriter (com.sri.ai.grinder.sgdpllt.library.number.SummationRewriter)2 TrueContext (com.sri.ai.grinder.sgdpllt.core.TrueContext)1 BooleanSimplifier (com.sri.ai.grinder.sgdpllt.library.boole.BooleanSimplifier)1 CardinalityTopRewriter (com.sri.ai.grinder.sgdpllt.library.set.CardinalityTopRewriter)1 DefaultTopRewriter (com.sri.ai.grinder.sgdpllt.rewriter.core.DefaultTopRewriter)1 RedirectingRewriter (com.sri.ai.grinder.sgdpllt.rewriter.help.RedirectingRewriter)1 CompoundTheory (com.sri.ai.grinder.sgdpllt.theory.compound.CompoundTheory)1