use of com.microsoft.z3.Solver in project bmoth by hhu-stups.
the class Issue59Test method testIssue59JustInvariant2.
@Test
public void testIssue59JustInvariant2() {
Context ctx = new Context();
Solver s = ctx.mkSolver();
String formula = "x**2 = x*x";
BoolExpr combinedConstraint = translatePredicate(formula, ctx);
s.add(combinedConstraint);
Status check = s.check();
assertEquals(Status.SATISFIABLE, check);
}
use of com.microsoft.z3.Solver in project bmoth by hhu-stups.
the class Z3SolverFactory method getZ3Solver.
static Solver getZ3Solver(Context ctx) {
Solver solver = ctx.mkSolver();
Params params = ctx.mkParams();
params.add("timeout", BMothPreferences.getIntPreference(BMothPreferences.IntPreference.Z3_TIMEOUT));
solver.setParameters(params);
return solver;
}
use of com.microsoft.z3.Solver in project bmoth by hhu-stups.
the class BoundedModelChecker method doModelCheck.
@Override
protected ModelCheckingResult doModelCheck() {
for (int k = 0; k < maxSteps; k++) {
// get a clean solver
solver.reset();
// INIT(V0)
solver.add(init());
// CONJUNCTION i from 1 to k T(Vi-1, Vi)
for (int i = 1; i <= k; i++) {
solver.add(transition(i - 1, i));
}
// not INV(Vk)
solver.add(getContext().mkNot(invariant(k)));
// CONJUNCTION i from 1 to k, j from i + 1 to k (Vi != Vj)
solver.add(distinctVectors(k));
Status check = solver.check();
if (check == Status.SATISFIABLE) {
// counter example found!
State counterExample = getStateFromModel(solver.getModel(), k);
return ModelCheckingResult.createCounterExampleFound(k, counterExample, null);
}
}
// no counter example found after maxStep steps
return ModelCheckingResult.createExceededMaxSteps(maxSteps);
}
use of com.microsoft.z3.Solver in project bmoth by hhu-stups.
the class InitialStateExistsChecker method doInitialStateExistsCheck.
static InitialStateExistsCheckingResult doInitialStateExistsCheck(MachineNode machine) {
Context ctx = new Context();
Solver solver = Z3SolverFactory.getZ3Solver(ctx);
MachineToZ3Translator machineTranslator = new MachineToZ3Translator(machine, ctx);
final BoolExpr invariant = machineTranslator.getInitialValueConstraint();
solver.add(invariant);
Status check = solver.check();
return new InitialStateExistsCheckingResult(check);
}
use of com.microsoft.z3.Solver in project bmoth by hhu-stups.
the class InvariantSatisfiabilityChecker method doInvariantSatisfiabilityCheck.
static InvariantSatisfiabilityCheckingResult doInvariantSatisfiabilityCheck(MachineNode machine) {
Context ctx = new Context();
Solver solver = Z3SolverFactory.getZ3Solver(ctx);
MachineToZ3Translator machineTranslator = new MachineToZ3Translator(machine, ctx);
final BoolExpr invariant = machineTranslator.getInvariantConstraint();
solver.add(invariant);
Status check = solver.check();
return new InvariantSatisfiabilityCheckingResult(check);
}
Aggregations