3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-21 05:13:39 +00:00

ML API bugfixes for FPA numeral accessors

This commit is contained in:
Christoph M. Wintersteiger 2016-10-24 13:32:37 +01:00
commit 7517cf485e
3 changed files with 49 additions and 56 deletions

View file

@ -1324,14 +1324,14 @@ struct
let mk_to_real = Z3native.mk_fpa_to_real let mk_to_real = Z3native.mk_fpa_to_real
let get_ebits = Z3native.fpa_get_ebits let get_ebits = Z3native.fpa_get_ebits
let get_sbits = Z3native.fpa_get_sbits let get_sbits = Z3native.fpa_get_sbits
let get_numeral_sign_bv = Z3native.fpa_get_numeral_sign_bv
let get_numeral_exponent_bv = Z3native.fpa_get_numeral_exponent_bv
let get_numeral_significand_bv = Z3native.fpa_get_numeral_significand_bv
let get_numeral_sign = Z3native.fpa_get_numeral_sign let get_numeral_sign = Z3native.fpa_get_numeral_sign
let get_numeral_significand_string = Z3native.fpa_get_numeral_significand_string let get_numeral_sign_bv = Z3native.fpa_get_numeral_sign_bv
let get_numeral_significand_uint = Z3native.fpa_get_numeral_significand_uint64
let get_numeral_exponent_string = Z3native.fpa_get_numeral_exponent_string let get_numeral_exponent_string = Z3native.fpa_get_numeral_exponent_string
let get_numeral_exponent_int = Z3native.fpa_get_numeral_exponent_int64 let get_numeral_exponent_int = Z3native.fpa_get_numeral_exponent_int64
let get_numeral_exponent_bv = Z3native.fpa_get_numeral_exponent_bv
let get_numeral_significand_string = Z3native.fpa_get_numeral_significand_string
let get_numeral_significand_uint = Z3native.fpa_get_numeral_significand_uint64
let get_numeral_significand_bv = Z3native.fpa_get_numeral_significand_bv
let mk_to_ieee_bv = Z3native.mk_fpa_to_ieee_bv let mk_to_ieee_bv = Z3native.mk_fpa_to_ieee_bv
let mk_to_fp_int_real = Z3native.mk_fpa_to_fp_int_real let mk_to_fp_int_real = Z3native.mk_fpa_to_fp_int_real
let numeral_to_string x = Z3native.get_numeral_string (Expr.gc x) x let numeral_to_string x = Z3native.get_numeral_string (Expr.gc x) x

View file

@ -2138,36 +2138,36 @@ sig
(** Retrieves the number of bits reserved for the significand in a FloatingPoint sort. *) (** Retrieves the number of bits reserved for the significand in a FloatingPoint sort. *)
val get_sbits : context -> Sort.sort -> int val get_sbits : context -> Sort.sort -> int
(** Retrieves the sign of a floating-point literal. *)
val get_numeral_sign : context -> Expr.expr -> bool * int
(** Return the sign of a floating-point numeral as a bit-vector expression. (** Return the sign of a floating-point numeral as a bit-vector expression.
Remark: NaN's do not have a bit-vector sign, so they are invalid arguments. *) Remark: NaN's do not have a bit-vector sign, so they are invalid arguments. *)
val get_numeral_sign_bv : context -> Expr.expr -> Expr.expr val get_numeral_sign_bv : context -> Expr.expr -> Expr.expr
(** Return the exponent value of a floating-point numeral as a string *)
val get_numeral_exponent_string : context -> Expr.expr -> bool -> string
(** Return the exponent value of a floating-point numeral as a signed integer *)
val get_numeral_exponent_int : context -> Expr.expr -> bool -> bool * int
(** Return the exponent of a floating-point numeral as a bit-vector expression. (** Return the exponent of a floating-point numeral as a bit-vector expression.
Remark: +oo, -oo and NaN's do not have a bit-vector exponent, so they are invalid arguments. *) Remark: NaN's do not have a bit-vector exponent, so they are invalid arguments. *)
val get_numeral_exponent_bv : context -> Expr.expr -> Expr.expr val get_numeral_exponent_bv : context -> Expr.expr -> bool -> Expr.expr
(** Return the significand value of a floating-point numeral as a bit-vector expression. (** Return the significand value of a floating-point numeral as a bit-vector expression.
Remark: +oo, -oo and NaN's do not have a bit-vector significand, so they are invalid arguments. *) Remark: NaN's do not have a bit-vector significand, so they are invalid arguments. *)
val get_numeral_significand_bv : context -> Expr.expr -> Expr.expr val get_numeral_significand_bv : context -> Expr.expr -> Expr.expr
(** Retrieves the sign of a floating-point literal. *)
val get_numeral_sign : context -> Expr.expr -> bool * int
(** Return the significand value of a floating-point numeral as a string. *) (** Return the significand value of a floating-point numeral as a string. *)
val get_numeral_significand_string : context -> Expr.expr -> string val get_numeral_significand_string : context -> Expr.expr -> string
(** Return the significand value of a floating-point numeral as a uint64. (** Return the significand value of a floating-point numeral as a uint64.
Remark: This function extracts the significand bits, without the Remark: This function extracts the significand bits, without the
hidden bit or normalization. Throws an exception if the hidden bit or normalization. Throws an exception if the
significand does not fit into a uint64. *) significand does not fit into an int. *)
val get_numeral_significand_uint : context -> Expr.expr -> bool * int val get_numeral_significand_uint : context -> Expr.expr -> bool * int
(** Return the exponent value of a floating-point numeral as a string *)
val get_numeral_exponent_string : context -> Expr.expr -> string
(** Return the exponent value of a floating-point numeral as a signed integer *)
val get_numeral_exponent_int : context -> Expr.expr -> bool * int
(** Conversion of a floating-point term into a bit-vector term in IEEE 754-2008 format. *) (** Conversion of a floating-point term into a bit-vector term in IEEE 754-2008 format. *)
val mk_to_ieee_bv : context -> Expr.expr -> Expr.expr val mk_to_ieee_bv : context -> Expr.expr -> Expr.expr
@ -3035,29 +3035,22 @@ sig
(** Assert a constraint (or multiple) into the solver. *) (** Assert a constraint (or multiple) into the solver. *)
val add : solver -> Expr.expr list -> unit val add : solver -> Expr.expr list -> unit
(** * Assert multiple constraints (cs) into the solver, and track them (in the (** Assert multiple constraints (cs) into the solver, and track them (in the
* unsat) core unsat) core using the Boolean constants in ps.
* using the Boolean constants in ps.
* This API is an alternative to {!check} with assumptions for extracting unsat cores.
* This API is an alternative to {!check} with assumptions for Both APIs can be used in the same solver. The unsat core will contain a combination
* extracting unsat cores. of the Boolean variables provided using {!assert_and_track} and the Boolean literals
* Both APIs can be used in the same solver. The unsat core will contain a provided using {!check} with assumptions. *)
* combination
* of the Boolean variables provided using {!assert_and_track}
* and the Boolean literals
* provided using {!check} with assumptions. *)
val assert_and_track_l : solver -> Expr.expr list -> Expr.expr list -> unit val assert_and_track_l : solver -> Expr.expr list -> Expr.expr list -> unit
(** * Assert a constraint (c) into the solver, and track it (in the unsat) core (** Assert a constraint (c) into the solver, and track it (in the unsat) core
* using the Boolean constant p. using the Boolean constant p.
*
* This API is an alternative to {!check} with assumptions for This API is an alternative to {!check} with assumptions for extracting unsat cores.
* extracting unsat cores. Both APIs can be used in the same solver. The unsat core will contain a combination
* Both APIs can be used in the same solver. The unsat core will contain a of the Boolean variables provided using {!assert_and_track} and the Boolean literals
* combination provided using {!check} with assumptions. *)
* of the Boolean variables provided using {!assert_and_track}
* and the Boolean literals
* provided using {!check} with assumptions. *)
val assert_and_track : solver -> Expr.expr -> Expr.expr -> unit val assert_and_track : solver -> Expr.expr -> Expr.expr -> unit
(** The number of assertions in the solver. *) (** The number of assertions in the solver. *)

View file

@ -24,7 +24,7 @@ Revision History:
#include"datatype_decl_plugin.h" #include"datatype_decl_plugin.h"
#include"ast_pp.h" #include"ast_pp.h"
#include"for_each_expr.h" #include"for_each_expr.h"
#include<strstream> #include<sstream>
struct check_logic::imp { struct check_logic::imp {
ast_manager & m; ast_manager & m;