mirror of
https://github.com/Z3Prover/z3
synced 2025-04-15 13:28:47 +00:00
Bugfixes for the optimization module in the ML API
This commit is contained in:
parent
cd838e5cf4
commit
9ad065a538
|
@ -2879,8 +2879,8 @@ struct
|
||||||
let mk_opt (ctx : context) =
|
let mk_opt (ctx : context) =
|
||||||
let res : opt = { m_ctx = ctx;
|
let res : opt = { m_ctx = ctx;
|
||||||
m_n_obj = null ;
|
m_n_obj = null ;
|
||||||
inc_ref = Z3native.optimzie_inc_ref ;
|
inc_ref = Z3native.optimize_inc_ref ;
|
||||||
dec_ref = Z3native.optimzie_dec_ref } in
|
dec_ref = Z3native.optimize_dec_ref } in
|
||||||
(z3obj_sno res ctx (Z3native.mk_optimize (context_gno ctx))) ;
|
(z3obj_sno res ctx (Z3native.mk_optimize (context_gno ctx))) ;
|
||||||
(z3obj_create res) ;
|
(z3obj_create res) ;
|
||||||
res
|
res
|
||||||
|
@ -2896,27 +2896,27 @@ struct
|
||||||
Params.ParamDescrs.param_descrs_of_ptr (z3obj_gc x) (Z3native.optimize_get_param_descrs (z3obj_gnc x) (z3obj_gno x))
|
Params.ParamDescrs.param_descrs_of_ptr (z3obj_gc x) (Z3native.optimize_get_param_descrs (z3obj_gnc x) (z3obj_gno x))
|
||||||
|
|
||||||
let add ( x : opt ) ( constraints : expr list ) =
|
let add ( x : opt ) ( constraints : expr list ) =
|
||||||
let f e = (Z3native.optimize_add (z3obj_gnc x) (z3obj_gno x) (Expr.gno e)) in
|
let f e = (Z3native.optimize_assert (z3obj_gnc x) (z3obj_gno x) (Expr.gno e)) in
|
||||||
List.iter f constraints
|
List.iter f constraints
|
||||||
|
|
||||||
|
|
||||||
let add_soft ( x : opt) ( e : Expr.expr) ( w : int) ( s : string ) =
|
let add_soft ( x : opt ) ( e : Expr.expr) ( w : string ) ( s : Symbol.symbol ) =
|
||||||
mk_handle x (Z3native.optimize_add_soft (z3obj_gnc x) (z3obj_gno x) (Expr.gno e) w s)
|
mk_handle x (Z3native.optimize_assert_soft (z3obj_gnc x) (z3obj_gno x) (Expr.gno e) w (Symbol.gno s))
|
||||||
|
|
||||||
|
|
||||||
let maximize ( x : opt) ( e : Expr.expr ) =
|
let maximize ( x : opt ) ( e : Expr.expr ) =
|
||||||
mk_handle x (Z3native.optimize_maximize (z3obj_gnc x) (z3obj_gno x) (Expr.gno e))
|
mk_handle x (Z3native.optimize_maximize (z3obj_gnc x) (z3obj_gno x) (Expr.gno e))
|
||||||
|
|
||||||
|
|
||||||
let minimize ( x : opt) ( e : Expr.expr ) =
|
let minimize ( x : opt ) ( e : Expr.expr ) =
|
||||||
mk_handle x (Z3native.optimize_minimize (z3obj_gnc x) (z3obj_gno x) (Expr.gno e))
|
mk_handle x (Z3native.optimize_minimize (z3obj_gnc x) (z3obj_gno x) (Expr.gno e))
|
||||||
|
|
||||||
let check ( x : opt ) =
|
let check ( x : opt ) =
|
||||||
let r = lbool_of_int (Z3native.optimize_check_sat (z3obj_gnc x) (z3obj_gno x) in
|
let r = lbool_of_int (Z3native.optimize_check (z3obj_gnc x) (z3obj_gno x)) in
|
||||||
match r with
|
match r with
|
||||||
| L_TRUE -> SATISFIABLE
|
| L_TRUE -> Solver.SATISFIABLE
|
||||||
| L_FALSE -> UNSATISFIABLE
|
| L_FALSE -> Solver.UNSATISFIABLE
|
||||||
| _ -> UNKNOWN
|
| _ -> Solver.UNKNOWN
|
||||||
|
|
||||||
|
|
||||||
let get_model ( x : opt ) =
|
let get_model ( x : opt ) =
|
||||||
|
@ -2926,17 +2926,13 @@ struct
|
||||||
else
|
else
|
||||||
Some (Model.create (z3obj_gc x) q)
|
Some (Model.create (z3obj_gc x) q)
|
||||||
|
|
||||||
let get_lower ( x : handle ) =
|
let get_lower ( x : handle ) ( idx : int ) =
|
||||||
expr_of_ptr (z3obj_gnc x.opt) (Z3native.optimize_get_lower (z3obj_gnc x) (z3obj_gno x) h.h)
|
expr_of_ptr (z3obj_gc x.opt) (Z3native.optimize_get_lower (z3obj_gnc x.opt) (z3obj_gno x.opt) idx)
|
||||||
|
|
||||||
let get_upper ( x : handle ) =
|
let get_upper ( x : handle ) ( idx : int ) =
|
||||||
expr_of_ptr (z3obj_gnc x.opt) (Z3native.optimize_get_upper (z3obj_gnc x) (z3obj_gno x) h.h)
|
expr_of_ptr (z3obj_gc x.opt) (Z3native.optimize_get_upper (z3obj_gnc x.opt) (z3obj_gno x.opt) idx)
|
||||||
|
|
||||||
|
let push ( x : opt ) = Z3native.optimize_push (z3obj_gnc x) (z3obj_gno x)
|
||||||
let get_value ( x : handle ) =
|
|
||||||
expr_of_ptr (z3obj_gnc x.opt) (Z3native.optimize_get_value (z3obj_gnc x) (z3obj_gno x) h.h)
|
|
||||||
|
|
||||||
let push ( x : opt ) = Z3native.optimize_push (z3obj_gnc x) (z3obj_gno x) n
|
|
||||||
|
|
||||||
let pop ( x : opt ) = Z3native.optimize_pop (z3obj_gnc x) (z3obj_gno x)
|
let pop ( x : opt ) = Z3native.optimize_pop (z3obj_gnc x) (z3obj_gno x)
|
||||||
|
|
||||||
|
|
|
@ -3257,7 +3257,7 @@ sig
|
||||||
Supply integer weight and string that identifies a group
|
Supply integer weight and string that identifies a group
|
||||||
of soft constraints.
|
of soft constraints.
|
||||||
*)
|
*)
|
||||||
val add_soft : optimize -> Expr.expr -> int -> string -> handle
|
val add_soft : optimize -> Expr.expr -> string -> Symbol.symbol -> handle
|
||||||
|
|
||||||
|
|
||||||
(** Add maximization objective.
|
(** Add maximization objective.
|
||||||
|
@ -3275,19 +3275,15 @@ sig
|
||||||
|
|
||||||
|
|
||||||
(** Retrieve model from satisfiable context *)
|
(** Retrieve model from satisfiable context *)
|
||||||
val get_model : optimize -> Model.model
|
val get_model : optimize -> Model.model option
|
||||||
|
|
||||||
|
|
||||||
(** Retrieve lower bound in current model for handle *)
|
(** Retrieve lower bound in current model for handle *)
|
||||||
val get_lower : handle -> Expr.expr
|
val get_lower : handle -> int -> Expr.expr
|
||||||
|
|
||||||
|
|
||||||
(** Retrieve upper bound in current model for handle *)
|
(** Retrieve upper bound in current model for handle *)
|
||||||
val get_upper : handle -> Expr.expr
|
val get_upper : handle -> int -> Expr.expr
|
||||||
|
|
||||||
|
|
||||||
(** Retrieve value in current model for handle *)
|
|
||||||
val get_value : handle -> Expr.expr
|
|
||||||
|
|
||||||
|
|
||||||
(** Creates a backtracking point.
|
(** Creates a backtracking point.
|
||||||
|
|
Loading…
Reference in a new issue