Skip to content

Commit 3af2b36

Browse files
Add Z3_solver_interrupt to OCaml API (#6976)
1 parent 91c2139 commit 3af2b36

File tree

2 files changed

+95
-74
lines changed

2 files changed

+95
-74
lines changed

src/api/ml/z3.ml

+16-10
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ struct
2626
let (major, minor, build, revision) = Z3native.get_version ()
2727

2828
let full_version : string = Z3native.get_full_version()
29-
29+
3030
let to_string =
3131
string_of_int major ^ "." ^
3232
string_of_int minor ^ "." ^
@@ -45,12 +45,12 @@ let mk_list f n =
4545

4646
let check_int32 v = v = Int32.to_int (Int32.of_int v)
4747

48-
let mk_int_expr ctx v ty =
48+
let mk_int_expr ctx v ty =
4949
if not (check_int32 v) then
5050
Z3native.mk_numeral ctx (string_of_int v) ty
5151
else
5252
Z3native.mk_int ctx v ty
53-
53+
5454
let mk_context (settings:(string * string) list) =
5555
let cfg = Z3native.mk_config () in
5656
let f e = Z3native.set_param_value cfg (fst e) (snd e) in
@@ -62,6 +62,9 @@ let mk_context (settings:(string * string) list) =
6262
Z3native.enable_concurrent_dec_ref res;
6363
res
6464

65+
let interrupt (ctx:context) =
66+
Z3native.interrupt ctx
67+
6568
module Symbol =
6669
struct
6770
type symbol = Z3native.symbol
@@ -721,7 +724,7 @@ struct
721724
let mk_exists = _internal_mk_quantifier ~universal:false
722725
let mk_exists_const = _internal_mk_quantifier_const ~universal:false
723726
let mk_lambda_const ctx bound body = Z3native.mk_lambda_const ctx (List.length bound) bound body
724-
let mk_lambda ctx bound body =
727+
let mk_lambda ctx bound body =
725728
let names = List.map (fun (x,_) -> x) bound in
726729
let sorts = List.map (fun (_,y) -> y) bound in
727730
Z3native.mk_lambda ctx (List.length bound) sorts names body
@@ -917,10 +920,10 @@ struct
917920

918921
let mk_sort_s (ctx:context) (name:string) (constructors:Constructor.constructor list) =
919922
mk_sort ctx (Symbol.mk_string ctx name) constructors
920-
923+
921924
let mk_sort_ref (ctx: context) (name:Symbol.symbol) =
922925
Z3native.mk_datatype_sort ctx name
923-
926+
924927
let mk_sort_ref_s (ctx: context) (name: string) =
925928
mk_sort_ref ctx (Symbol.mk_string ctx name)
926929

@@ -1249,7 +1252,7 @@ end
12491252
module Seq =
12501253
struct
12511254
let mk_seq_sort = Z3native.mk_seq_sort
1252-
let is_seq_sort = Z3native.is_seq_sort
1255+
let is_seq_sort = Z3native.is_seq_sort
12531256
let mk_re_sort = Z3native.mk_re_sort
12541257
let is_re_sort = Z3native.is_re_sort
12551258
let mk_string_sort = Z3native.mk_string_sort
@@ -1264,7 +1267,7 @@ struct
12641267
let mk_seq_concat ctx args = Z3native.mk_seq_concat ctx (List.length args) args
12651268
let mk_seq_prefix = Z3native.mk_seq_prefix
12661269
let mk_seq_suffix = Z3native.mk_seq_suffix
1267-
let mk_seq_contains = Z3native.mk_seq_contains
1270+
let mk_seq_contains = Z3native.mk_seq_contains
12681271
let mk_seq_extract = Z3native.mk_seq_extract
12691272
let mk_seq_replace = Z3native.mk_seq_replace
12701273
let mk_seq_at = Z3native.mk_seq_at
@@ -1889,9 +1892,9 @@ struct
18891892
| _ -> UNKNOWN
18901893

18911894
let get_model x =
1892-
try
1895+
try
18931896
let q = Z3native.solver_get_model (gc x) x in
1894-
if Z3native.is_null_model q then None else Some q
1897+
if Z3native.is_null_model q then None else Some q
18951898
with | _ -> None
18961899

18971900
let get_proof x =
@@ -1916,6 +1919,9 @@ struct
19161919
let add_simplifier = Z3native.solver_add_simplifier
19171920
let translate x = Z3native.solver_translate (gc x) x
19181921
let to_string x = Z3native.solver_to_string (gc x) x
1922+
1923+
let interrupt (ctx:context) (s:solver) =
1924+
Z3native.solver_interrupt ctx s
19191925
end
19201926

19211927

0 commit comments

Comments
 (0)