mirror of
https://github.com/CatalaLang/catala.git
synced 2024-11-09 22:16:10 +03:00
Fix encoding of hypotheses into Z3
This commit is contained in:
parent
f6ad6bbd2f
commit
fb6c18763f
@ -171,7 +171,7 @@ module MakeBackendIO (B : Backend) = struct
|
|||||||
|
|
||||||
match z3_vc with
|
match z3_vc with
|
||||||
| Success (encoding, backend_ctx) -> (
|
| Success (encoding, backend_ctx) -> (
|
||||||
Cli.debug_print "The translation to Z3 is the following:@\n%s"
|
Cli.debug_print "The translation to Z3 is the following:\n%s"
|
||||||
(B.print_encoding encoding);
|
(B.print_encoding encoding);
|
||||||
match B.solve_vc_encoding backend_ctx encoding with
|
match B.solve_vc_encoding backend_ctx encoding with
|
||||||
| ProvenTrue -> Cli.result_print "%s" (print_positive_result vc)
|
| ProvenTrue -> Cli.result_print "%s" (print_positive_result vc)
|
||||||
|
@ -777,11 +777,12 @@ module Backend = struct
|
|||||||
let solve_vc_encoding (ctx : backend_context) (encoding : vc_encoding) :
|
let solve_vc_encoding (ctx : backend_context) (encoding : vc_encoding) :
|
||||||
solver_result =
|
solver_result =
|
||||||
let solver = Z3.Solver.mk_solver ctx.ctx_z3 None in
|
let solver = Z3.Solver.mk_solver ctx.ctx_z3 None in
|
||||||
(* Add all the constraints stored in the context *)
|
(* We take the negation of the query to check for possible
|
||||||
let encoding =
|
counterexamples *)
|
||||||
Boolean.mk_and ctx.ctx_z3 (encoding :: ctx.ctx_z3constraints)
|
let query = Boolean.mk_not ctx.ctx_z3 encoding in
|
||||||
in
|
(* Add all the hypotheses stored in the context *)
|
||||||
Z3.Solver.add solver [ Boolean.mk_not ctx.ctx_z3 encoding ];
|
let query_and_hyps = query :: ctx.ctx_z3constraints in
|
||||||
|
Z3.Solver.add solver query_and_hyps;
|
||||||
match Z3.Solver.check solver [] with
|
match Z3.Solver.check solver [] with
|
||||||
| UNSATISFIABLE -> ProvenTrue
|
| UNSATISFIABLE -> ProvenTrue
|
||||||
| SATISFIABLE -> ProvenFalse (Z3.Solver.get_model solver)
|
| SATISFIABLE -> ProvenFalse (Z3.Solver.get_model solver)
|
||||||
|
Loading…
Reference in New Issue
Block a user