Search in sources :

Example 11 with Rewriter

use of com.sri.ai.grinder.rewriter.api.Rewriter in project aic-expresso by aic-sri-international.

the class FirstOfTest method runTest.

private void runTest(List<Rewriter> rewriters, 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.makeCloneWithAdditionalRegisteredSymbolsAndTypes(symbolsAndTypes);
    Rewriter firstOf = new FirstOf(rewriters);
    Expression solution = firstOf.apply(initial, context);
    System.out.println("Solution: " + solution);
    assertEquals(expected, solution);
}
Also used : TrueContext(com.sri.ai.grinder.core.TrueContext) Context(com.sri.ai.grinder.api.Context) Expression(com.sri.ai.expresso.api.Expression) DifferenceArithmeticTheory(com.sri.ai.grinder.theory.differencearithmetic.DifferenceArithmeticTheory) Rewriter(com.sri.ai.grinder.rewriter.api.Rewriter) PropositionalTheory(com.sri.ai.grinder.theory.propositional.PropositionalTheory) FirstOf(com.sri.ai.grinder.rewriter.core.FirstOf) CompoundTheory(com.sri.ai.grinder.theory.compound.CompoundTheory) TrueContext(com.sri.ai.grinder.core.TrueContext)

Example 12 with Rewriter

use of com.sri.ai.grinder.rewriter.api.Rewriter 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.makeCloneWithAdditionalRegisteredSymbolsAndTypes(symbolsAndTypes);
    Rewriter recursive = new Recursive(rewriter);
    Expression solution = recursive.apply(initial, context);
    System.out.println("Solution: " + solution);
    assertEquals(expected, solution);
}
Also used : TrueContext(com.sri.ai.grinder.core.TrueContext) Context(com.sri.ai.grinder.api.Context) Expression(com.sri.ai.expresso.api.Expression) DifferenceArithmeticTheory(com.sri.ai.grinder.theory.differencearithmetic.DifferenceArithmeticTheory) Rewriter(com.sri.ai.grinder.rewriter.api.Rewriter) PropositionalTheory(com.sri.ai.grinder.theory.propositional.PropositionalTheory) CompoundTheory(com.sri.ai.grinder.theory.compound.CompoundTheory) Recursive(com.sri.ai.grinder.rewriter.core.Recursive) TrueContext(com.sri.ai.grinder.core.TrueContext)

Example 13 with Rewriter

use of com.sri.ai.grinder.rewriter.api.Rewriter in project aic-expresso by aic-sri-international.

the class SwitchTest 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.makeCloneWithAdditionalRegisteredSymbolsAndTypes(symbolsAndTypes);
    Rewriter recursive = new Recursive(rewriter);
    Expression solution = recursive.apply(initial, context);
    System.out.println("Solution: " + solution);
    assertEquals(expected, solution);
}
Also used : TrueContext(com.sri.ai.grinder.core.TrueContext) Context(com.sri.ai.grinder.api.Context) Expression(com.sri.ai.expresso.api.Expression) DifferenceArithmeticTheory(com.sri.ai.grinder.theory.differencearithmetic.DifferenceArithmeticTheory) CombiningTopRewriter(com.sri.ai.grinder.rewriter.core.CombiningTopRewriter) Rewriter(com.sri.ai.grinder.rewriter.api.Rewriter) TopRewriter(com.sri.ai.grinder.rewriter.api.TopRewriter) PropositionalTheory(com.sri.ai.grinder.theory.propositional.PropositionalTheory) CompoundTheory(com.sri.ai.grinder.theory.compound.CompoundTheory) Recursive(com.sri.ai.grinder.rewriter.core.Recursive) TrueContext(com.sri.ai.grinder.core.TrueContext)

Example 14 with Rewriter

use of com.sri.ai.grinder.rewriter.api.Rewriter in project aic-expresso by aic-sri-international.

the class Switch method makeStepSolver.

@Override
public ExpressionLiteralSplitterStepSolver makeStepSolver(Expression expression) {
    ExpressionLiteralSplitterStepSolver result;
    T key = keyMaker.apply(expression);
    Rewriter baseRewriter = fromKeyValueToRewriter.get(key);
    if (baseRewriter != null) {
        result = baseRewriter.makeStepSolver(expression);
    } else {
        result = new ConstantExpressionStepSolver(expression);
    }
    return result;
}
Also used : ExpressionLiteralSplitterStepSolver(com.sri.ai.grinder.api.ExpressionLiteralSplitterStepSolver) Rewriter(com.sri.ai.grinder.rewriter.api.Rewriter) TopRewriter(com.sri.ai.grinder.rewriter.api.TopRewriter) ConstantExpressionStepSolver(com.sri.ai.grinder.theory.base.ConstantExpressionStepSolver)

Example 15 with Rewriter

use of com.sri.ai.grinder.rewriter.api.Rewriter in project aic-expresso by aic-sri-international.

the class SymbolicShell method evaluate.

private static void evaluate(Expression input, ConsoleIterator consoleIterator, Theory theory, Context context) {
    Rewriter prettyRewriter = new Exhaustive(new Recursive(new FirstOf(theory.getTopRewriter(), new PrettySimplifier())));
    Expression result = theory.evaluate(input, context);
    result = prettyRewriter.apply(result, context);
    consoleIterator.getOutputWriter().println(result + "\n");
}
Also used : PrettySimplifier(com.sri.ai.grinder.library.pretty.PrettySimplifier) Expression(com.sri.ai.expresso.api.Expression) Exhaustive(com.sri.ai.grinder.rewriter.core.Exhaustive) Rewriter(com.sri.ai.grinder.rewriter.api.Rewriter) FirstOf(com.sri.ai.grinder.rewriter.core.FirstOf) Recursive(com.sri.ai.grinder.rewriter.core.Recursive)

Aggregations

Rewriter (com.sri.ai.grinder.rewriter.api.Rewriter)15 Expression (com.sri.ai.expresso.api.Expression)11 Context (com.sri.ai.grinder.api.Context)9 TrueContext (com.sri.ai.grinder.core.TrueContext)9 TopRewriter (com.sri.ai.grinder.rewriter.api.TopRewriter)7 Test (org.junit.Test)7 CombiningTopRewriter (com.sri.ai.grinder.rewriter.core.CombiningTopRewriter)6 Recursive (com.sri.ai.grinder.rewriter.core.Recursive)6 DifferenceArithmeticTheory (com.sri.ai.grinder.theory.differencearithmetic.DifferenceArithmeticTheory)6 FirstOf (com.sri.ai.grinder.rewriter.core.FirstOf)5 CompoundTheory (com.sri.ai.grinder.theory.compound.CompoundTheory)5 PropositionalTheory (com.sri.ai.grinder.theory.propositional.PropositionalTheory)5 ExpressionLiteralSplitterStepSolver (com.sri.ai.grinder.api.ExpressionLiteralSplitterStepSolver)4 Solution (com.sri.ai.grinder.api.ExpressionLiteralSplitterStepSolver.Solution)4 Exhaustive (com.sri.ai.grinder.rewriter.core.Exhaustive)4 ContextSplitting (com.sri.ai.grinder.core.constraint.ContextSplitting)3 Switch (com.sri.ai.grinder.rewriter.core.Switch)3 CommonSimplifier (com.sri.ai.grinder.library.commonrewriters.CommonSimplifier)2 RewriterFromStepMaker (com.sri.ai.grinder.rewriter.api.RewriterFromStepMaker)2 ConstantExpressionStepSolver (com.sri.ai.grinder.theory.base.ConstantExpressionStepSolver)2