(Context ctx)
| 2075 | /// Extract unsatisfiable core example with AssertAndTrack |
| 2076 | |
| 2077 | public void unsatCoreAndProofExample2(Context ctx) |
| 2078 | { |
| 2079 | System.out.println("UnsatCoreAndProofExample2"); |
| 2080 | Log.append("UnsatCoreAndProofExample2"); |
| 2081 | |
| 2082 | Solver solver = ctx.mkSolver(); |
| 2083 | |
| 2084 | BoolExpr pa = ctx.mkBoolConst("PredA"); |
| 2085 | BoolExpr pb = ctx.mkBoolConst("PredB"); |
| 2086 | BoolExpr pc = ctx.mkBoolConst("PredC"); |
| 2087 | BoolExpr pd = ctx.mkBoolConst("PredD"); |
| 2088 | |
| 2089 | BoolExpr f1 = ctx.mkAnd(new BoolExpr[] { pa, pb, pc }); |
| 2090 | BoolExpr f2 = ctx.mkAnd(new BoolExpr[] { pa, ctx.mkNot(pb), pc }); |
| 2091 | BoolExpr f3 = ctx.mkOr(ctx.mkNot(pa), ctx.mkNot(pc)); |
| 2092 | BoolExpr f4 = pd; |
| 2093 | |
| 2094 | BoolExpr p1 = ctx.mkBoolConst("P1"); |
| 2095 | BoolExpr p2 = ctx.mkBoolConst("P2"); |
| 2096 | BoolExpr p3 = ctx.mkBoolConst("P3"); |
| 2097 | BoolExpr p4 = ctx.mkBoolConst("P4"); |
| 2098 | |
| 2099 | solver.assertAndTrack(f1, p1); |
| 2100 | solver.assertAndTrack(f2, p2); |
| 2101 | solver.assertAndTrack(f3, p3); |
| 2102 | solver.assertAndTrack(f4, p4); |
| 2103 | Status result = solver.check(); |
| 2104 | |
| 2105 | if (result == Status.UNSATISFIABLE) |
| 2106 | { |
| 2107 | System.out.println("unsat"); |
| 2108 | System.out.println("core: "); |
| 2109 | for (Expr c : solver.getUnsatCore()) |
| 2110 | { |
| 2111 | System.out.println(c); |
| 2112 | } |
| 2113 | } |
| 2114 | } |
| 2115 | |
| 2116 | public void finiteDomainExample(Context ctx) |
| 2117 | { |
no test coverage detected