Search in sources :

Example 6 with Solver

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);
}
Also used : Context(com.microsoft.z3.Context) Status(com.microsoft.z3.Status) BoolExpr(com.microsoft.z3.BoolExpr) Solver(com.microsoft.z3.Solver) Test(org.junit.Test)

Example 7 with Solver

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;
}
Also used : Solver(com.microsoft.z3.Solver) Params(com.microsoft.z3.Params)

Example 8 with 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);
}
Also used : Status(com.microsoft.z3.Status) State(de.bmoth.modelchecker.State)

Example 9 with Solver

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);
}
Also used : Context(com.microsoft.z3.Context) Status(com.microsoft.z3.Status) BoolExpr(com.microsoft.z3.BoolExpr) Solver(com.microsoft.z3.Solver) MachineToZ3Translator(de.bmoth.backend.z3.MachineToZ3Translator)

Example 10 with Solver

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);
}
Also used : Context(com.microsoft.z3.Context) Status(com.microsoft.z3.Status) BoolExpr(com.microsoft.z3.BoolExpr) Solver(com.microsoft.z3.Solver) MachineToZ3Translator(de.bmoth.backend.z3.MachineToZ3Translator)

Aggregations

BoolExpr (com.microsoft.z3.BoolExpr)15 Solver (com.microsoft.z3.Solver)14 Context (com.microsoft.z3.Context)12 Status (com.microsoft.z3.Status)9 List (java.util.List)7 ArithExpr (com.microsoft.z3.ArithExpr)6 HashMap (java.util.HashMap)5 Graph (org.batfish.symbolic.Graph)5 GraphEdge (org.batfish.symbolic.GraphEdge)5 BitVecExpr (com.microsoft.z3.BitVecExpr)4 Model (com.microsoft.z3.Model)3 Test (org.junit.Test)3 Z3Exception (com.microsoft.z3.Z3Exception)2 Z3_ast_print_mode (com.microsoft.z3.enumerations.Z3_ast_print_mode)2 LitmusLexer (dartagnan.LitmusLexer)2 LitmusParser (dartagnan.LitmusParser)2 PorthosLexer (dartagnan.PorthosLexer)2 PorthosParser (dartagnan.PorthosParser)2 Program (dartagnan.program.Program)2 Utils (dartagnan.utils.Utils)2