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);
}
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);
}
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);
}
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);
}
Aggregations