use of com.sri.ai.grinder.application.CommonTheory in project aic-expresso by aic-sri-international.
the class AssociativeCommutativeGroupOperationApplicationStepSolverTest method quantifierBasedGroupTest00.
@Test
public void quantifierBasedGroupTest00() {
// get method name as string
String testName = new Object() {
}.getClass().getEnclosingMethod().getName();
Theory theory = new CommonTheory();
String[] symbolsAndTypes = {};
Context context = new TrueContext(theory).extendWithSymbolsAndTypes(symbolsAndTypes);
Expression[] operandExpressions = { parse("there exists I in Integer : I > 3 and I < 10"), parse("for all I in Integer : if I > 3 and I < 10 then true else false") };
Expression[] expectedResultPerGroup = { parse("false"), parse("true") };
repeatTestForEachRespectiveGroup(testName, theory, context, operandExpressions, expectedResultPerGroup, QUANTIFIER_BASED_GROUPS);
println();
}
use of com.sri.ai.grinder.application.CommonTheory in project aic-expresso by aic-sri-international.
the class IfThenElseStepSolverTest method test12.
@Test
public void test12() {
Expression expression = parse("if (X=1) or (Y=1) then (X=1) and (Y=1) else (X=1) or (Y=1)");
String[] symbolsAndTypes = { "X", "0..1", "Y", "0..1" };
Context context = new TrueContext(new CommonTheory()).extendWithSymbolsAndTypes(symbolsAndTypes);
Expression expectedResult = parse("if X = 1 then Y = 1 else false");
// get method name as string
String testName = new Object() {
}.getClass().getEnclosingMethod().getName();
runIfThenElseStepSolverTest(expression, context, expectedResult, testName);
}
use of com.sri.ai.grinder.application.CommonTheory in project aic-expresso by aic-sri-international.
the class OptimizationWithBOBYQA method numberOfVariablesInExpression.
public int numberOfVariablesInExpression() {
Theory theory = new CommonTheory();
Context context = new TrueContext(theory);
Set<Expression> variablesInExpression = Expressions.freeVariables(expressionToOptimize, context);
return variablesInExpression.size();
}
use of com.sri.ai.grinder.application.CommonTheory in project aic-expresso by aic-sri-international.
the class AssociativeCommutativeGroupOperationApplicationStepSolverTest method numericGroupTestProductOperandsWithFreeVariables.
// @Test
public void numericGroupTestProductOperandsWithFreeVariables() {
// get method name as string
String testName = new Object() {
}.getClass().getEnclosingMethod().getName();
Theory theory = new CommonTheory();
String[] symbolsAndTypes = { "K", "0..5" };
Context context = new TrueContext(theory).extendWithSymbolsAndTypes(symbolsAndTypes);
Expression[] operandExpressions = { parse("product({{(on I in 3..5) if I != 4 and K != 2 then X else 1 }})"), parse("product({{(on J in 1..5) if J != 3 then if K != 3 then J else Y else 1 }})") };
Expression[] expectedResultPerGroup = { parse("if K != 2 then if K != 3 then max(X ^ 2, 40) else max(X ^ 2, Y * Y * Y * Y) else 40"), parse("if K != 2 then if K != 3 then X ^ 2 * 40 else X ^ 2 * Y * Y * Y * Y else 40"), parse("if K != 2 then if K != 3 then X ^ 2 + 40 else Y ^ 4 + X ^ 2 else 41") };
repeatTestForEachRespectiveGroup(testName, theory, context, operandExpressions, expectedResultPerGroup, NUMERIC_GROUPS);
println();
}
use of com.sri.ai.grinder.application.CommonTheory in project aic-expresso by aic-sri-international.
the class AssociativeCommutativeGroupOperationApplicationStepSolverTest method quantifierBasedGroupTest03.
@Test
public void quantifierBasedGroupTest03() {
// get method name as string
String testName = new Object() {
}.getClass().getEnclosingMethod().getName();
Theory theory = new CommonTheory();
String[] symbolsAndTypes = {};
Context context = new TrueContext(theory).extendWithSymbolsAndTypes(symbolsAndTypes);
Expression[] operandExpressions = { parse("false"), parse("true") };
Expression[] expectedResultPerGroup = { parse("false"), parse("true") };
repeatTestForEachRespectiveGroup(testName, theory, context, operandExpressions, expectedResultPerGroup, QUANTIFIER_BASED_GROUPS);
println();
}
Aggregations