Search in sources :

Example 16 with Result

use of com.walmartlabs.concord.plugins.s3.Result in project java-smt by sosy-lab.

the class CVC4NativeAPITest method checkArraySat.

@Test
public void checkArraySat() {
    // ((x = 123) & (select(arr, 5) = 123)) => ((select(arr, 5) = x) & (x = 123))
    Expr five = exprMgr.mkConst(new Rational(5));
    Expr oneTwoThree = exprMgr.mkConst(new Rational(123));
    Expr xInt = exprMgr.mkVar("x_int", exprMgr.integerType());
    ArrayType arrayType = exprMgr.mkArrayType(exprMgr.integerType(), exprMgr.integerType());
    Expr arr = exprMgr.mkVar("arr", arrayType);
    Expr xEq123 = exprMgr.mkExpr(Kind.EQUAL, xInt, oneTwoThree);
    Expr selAat5Eq123 = exprMgr.mkExpr(Kind.EQUAL, exprMgr.mkExpr(Kind.SELECT, arr, five), oneTwoThree);
    Expr selAat5EqX = exprMgr.mkExpr(Kind.EQUAL, exprMgr.mkExpr(Kind.SELECT, arr, five), xInt);
    Expr leftAnd = exprMgr.mkExpr(Kind.AND, xEq123, selAat5Eq123);
    Expr rightAnd = exprMgr.mkExpr(Kind.AND, xEq123, selAat5EqX);
    Expr impl = exprMgr.mkExpr(Kind.IMPLIES, leftAnd, rightAnd);
    smtEngine.assertFormula(impl);
    Result satCheck = smtEngine.checkSat();
    assertThat(satCheck.isSat()).isEqualTo(Sat.SAT);
}
Also used : ArrayType(edu.stanford.CVC4.ArrayType) CVC4.vectorExpr(edu.stanford.CVC4.vectorExpr) SExpr(edu.stanford.CVC4.SExpr) Expr(edu.stanford.CVC4.Expr) Rational(edu.stanford.CVC4.Rational) Result(edu.stanford.CVC4.Result) Test(org.junit.Test)

Example 17 with Result

use of com.walmartlabs.concord.plugins.s3.Result in project java-smt by sosy-lab.

the class CVC4NativeAPITest method checkSimpleLRAUnsat2.

@Test
public void checkSimpleLRAUnsat2() {
    // x + y = 3/2 AND x * y = 3/2
    Expr threeHalf = exprMgr.mkConst(new Rational(3, 2));
    Expr varX = exprMgr.mkVar("x", exprMgr.realType());
    Expr varY = exprMgr.mkVar("y", exprMgr.realType());
    Expr assertion1 = exprMgr.mkExpr(Kind.EQUAL, exprMgr.mkExpr(Kind.NONLINEAR_MULT, varX, varY), threeHalf);
    Expr assertion2 = exprMgr.mkExpr(Kind.EQUAL, exprMgr.mkExpr(Kind.PLUS, varX, varY), threeHalf);
    smtEngine.assertFormula(assertion1);
    smtEngine.assertFormula(assertion2);
    Result satCheck = smtEngine.checkSat();
    assertThat(satCheck.isSat()).isEqualTo(Sat.UNSAT);
}
Also used : CVC4.vectorExpr(edu.stanford.CVC4.vectorExpr) SExpr(edu.stanford.CVC4.SExpr) Expr(edu.stanford.CVC4.Expr) Rational(edu.stanford.CVC4.Rational) Result(edu.stanford.CVC4.Result) Test(org.junit.Test)

Example 18 with Result

use of com.walmartlabs.concord.plugins.s3.Result in project java-smt by sosy-lab.

the class CVC4NativeAPITest method checkLIAModel.

@Test
public void checkLIAModel() {
    // 1 + 2 = var
    // it follows that var = 3
    Expr one = exprMgr.mkConst(new Rational(1));
    Expr two = exprMgr.mkConst(new Rational(2));
    Expr var = exprMgr.mkVar(exprMgr.integerType());
    Expr assertion = exprMgr.mkExpr(Kind.EQUAL, exprMgr.mkExpr(Kind.PLUS, one, two), var);
    Result result = smtEngine.checkSat(assertion);
    assertThat(result.isSat()).isEqualTo(Sat.SAT);
    Expr assertionValue = smtEngine.getValue(assertion);
    assertThat(assertionValue.toString()).isEqualTo("true");
    assertThat(smtEngine.getValue(var).toString()).isEqualTo("3");
}
Also used : CVC4.vectorExpr(edu.stanford.CVC4.vectorExpr) SExpr(edu.stanford.CVC4.SExpr) Expr(edu.stanford.CVC4.Expr) Rational(edu.stanford.CVC4.Rational) Result(edu.stanford.CVC4.Result) Test(org.junit.Test)

Example 19 with Result

use of com.walmartlabs.concord.plugins.s3.Result in project java-smt by sosy-lab.

the class CVC4NativeAPITest method checkSimpleLRASat.

@Test
public void checkSimpleLRASat() {
    // x * y = 8/5 AND x < 4/5
    Expr fourFifth = exprMgr.mkConst(new Rational(4, 5));
    Expr eightFifth = exprMgr.mkConst(new Rational(8, 5));
    Expr varX = exprMgr.mkVar("x", exprMgr.realType());
    Expr varY = exprMgr.mkVar("y", exprMgr.realType());
    Expr assertion1 = exprMgr.mkExpr(Kind.EQUAL, exprMgr.mkExpr(Kind.NONLINEAR_MULT, varX, varY), eightFifth);
    Expr assertion2 = exprMgr.mkExpr(Kind.LT, varX, fourFifth);
    smtEngine.assertFormula(assertion1);
    smtEngine.assertFormula(assertion2);
    Result satCheck = smtEngine.checkSat();
    assertThat(satCheck.isSat()).isEqualTo(Sat.SAT);
}
Also used : CVC4.vectorExpr(edu.stanford.CVC4.vectorExpr) SExpr(edu.stanford.CVC4.SExpr) Expr(edu.stanford.CVC4.Expr) Rational(edu.stanford.CVC4.Rational) Result(edu.stanford.CVC4.Result) Test(org.junit.Test)

Example 20 with Result

use of com.walmartlabs.concord.plugins.s3.Result in project java-smt by sosy-lab.

the class CVC4NativeAPITest method checkInvalidModel.

/**
 * For reasons unknown you can get a model, but you can't do anything with it.
 */
@Test
public void checkInvalidModel() {
    Result result = smtEngine.checkSat(exprMgr.mkConst(false));
    assertThat(result.isSat()).isEqualTo(Sat.UNSAT);
    Exception e = assertThrows(edu.stanford.CVC4.Exception.class, () -> smtEngine.getModel());
    assertThat(e.toString()).contains(INVALID_MODEL_STRING);
}
Also used : AssumptionViolatedException(org.junit.AssumptionViolatedException) FileNotFoundException(java.io.FileNotFoundException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) Result(edu.stanford.CVC4.Result) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)46 Result (edu.stanford.CVC4.Result)35 Expr (edu.stanford.CVC4.Expr)32 SExpr (edu.stanford.CVC4.SExpr)32 CVC4.vectorExpr (edu.stanford.CVC4.vectorExpr)31 Rational (edu.stanford.CVC4.Rational)25 Result (com.opensymphony.xwork2.Result)18 List (java.util.List)15 ArrayList (java.util.ArrayList)13 ArrayType (edu.stanford.CVC4.ArrayType)8 CompletableFuture (java.util.concurrent.CompletableFuture)8 TimeUnit (java.util.concurrent.TimeUnit)8 DataSource (jdk.incubator.sql2.DataSource)8 Result (jdk.incubator.sql2.Result)8 Session (jdk.incubator.sql2.Session)8 AfterClass (org.junit.AfterClass)8 BeforeClass (org.junit.BeforeClass)8 BitVectorType (edu.stanford.CVC4.BitVectorType)6 SortType (edu.stanford.CVC4.SortType)6 Type (edu.stanford.CVC4.Type)6