Search in sources :

Example 71 with Result

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

the class CVC4NativeAPITest method checkSimpleEqualitySat.

@Test
public void checkSimpleEqualitySat() {
    Expr one = exprMgr.mkConst(new Rational(1));
    Expr assertion = exprMgr.mkExpr(Kind.EQUAL, one, one);
    smtEngine.assertFormula(assertion);
    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 72 with Result

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

the class CVC4NativeAPITest method checkSimpleBvUnsat.

@Test
public void checkSimpleBvUnsat() {
    // var + 1 = 0 & var < max bitvector & var > 0; both < and > signed
    // Because of bitvector nature its UNSAT now
    Expr bvVar = exprMgr.mkBoundVar(exprMgr.mkBitVectorType(16));
    Expr bvOne = exprMgr.mkConst(new BitVector(16, 1));
    Expr bvZero = exprMgr.mkConst(new BitVector(16, 0));
    Expr assertion1 = exprMgr.mkExpr(Kind.EQUAL, exprMgr.mkExpr(Kind.BITVECTOR_PLUS, bvVar, bvOne), bvZero);
    Expr assertion2 = exprMgr.mkExpr(Kind.BITVECTOR_SLT, bvVar, exprMgr.mkConst(BitVector.mkMaxSigned(16)));
    Expr assertion3 = exprMgr.mkExpr(Kind.BITVECTOR_SGT, bvVar, exprMgr.mkConst(new BitVector(16, 0)));
    smtEngine.assertFormula(assertion1);
    smtEngine.assertFormula(assertion2);
    smtEngine.assertFormula(assertion3);
    Result satCheck = smtEngine.checkSat();
    assertThat(satCheck.isSat()).isEqualTo(Sat.UNSAT);
}
Also used : BitVector(edu.stanford.CVC4.BitVector) CVC4.vectorExpr(edu.stanford.CVC4.vectorExpr) SExpr(edu.stanford.CVC4.SExpr) Expr(edu.stanford.CVC4.Expr) Result(edu.stanford.CVC4.Result) Test(org.junit.Test)

Example 73 with Result

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

the class CVC4NativeAPITest method checkCustomTypesAndUFs.

@Test
public void checkCustomTypesAndUFs() {
    // 0 <= f(x)
    // 0 <= f(y)
    // f(x) + f(y) <= 1
    // not p(0)
    // p(f(y))
    Expr zero = exprMgr.mkConst(new Rational(0));
    Expr one = exprMgr.mkConst(new Rational(1));
    Type boolType = exprMgr.booleanType();
    Type intType = exprMgr.integerType();
    // You may use custom sorts just like bool or int
    SortType mySort = exprMgr.mkSort("f");
    // Type for UFs later
    Type mySortToInt = exprMgr.mkFunctionType(mySort, intType);
    Type intToBool = exprMgr.mkFunctionType(intType, boolType);
    Expr xTyped = exprMgr.mkVar("x", mySort);
    Expr yTyped = exprMgr.mkVar("y", mySort);
    // declare UFs
    Expr f = exprMgr.mkVar("f", mySortToInt);
    Expr p = exprMgr.mkVar("p", intToBool);
    // Apply UFs
    Expr fx = exprMgr.mkExpr(Kind.APPLY_UF, f, xTyped);
    Expr fy = exprMgr.mkExpr(Kind.APPLY_UF, f, yTyped);
    Expr sum = exprMgr.mkExpr(Kind.PLUS, fx, fy);
    Expr p0 = exprMgr.mkExpr(Kind.APPLY_UF, p, zero);
    Expr pfy = exprMgr.mkExpr(Kind.APPLY_UF, p, fy);
    // Make some assumptions
    Expr assumptions = exprMgr.mkExpr(Kind.AND, exprMgr.mkExpr(Kind.LEQ, zero, fx), exprMgr.mkExpr(Kind.LEQ, zero, fy), exprMgr.mkExpr(Kind.LEQ, sum, one), p0.notExpr(), pfy);
    smtEngine.assertFormula(assumptions);
    Result satCheck = smtEngine.checkSat();
    assertThat(satCheck.isSat()).isEqualTo(Sat.SAT);
}
Also used : SortType(edu.stanford.CVC4.SortType) Type(edu.stanford.CVC4.Type) SortType(edu.stanford.CVC4.SortType) ArrayType(edu.stanford.CVC4.ArrayType) BitVectorType(edu.stanford.CVC4.BitVectorType) 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 74 with Result

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

the class CVC4NativeAPITest method checkSimpleSat.

@Test
public void checkSimpleSat() {
    smtEngine.assertFormula(exprMgr.mkConst(true));
    Result satCheck = smtEngine.checkSat();
    assertThat(satCheck.isSat()).isEqualTo(Sat.SAT);
}
Also used : 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