Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/z3prover/z3
Browse files Browse the repository at this point in the history
  • Loading branch information
NikolajBjorner committed Jul 11, 2022
2 parents 9dd529b + 7ae1a33 commit 49b7e90
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 14 deletions.
12 changes: 7 additions & 5 deletions scripts/update_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ def is_fn(ty):


# Mapping to ML types
Type2ML = { VOID : 'unit', VOID_PTR : 'ptr', INT : 'int', UINT : 'int', INT64 : 'int', UINT64 : 'int', DOUBLE : 'float',
Type2ML = { VOID : 'unit', VOID_PTR : 'ptr', INT : 'int', UINT : 'int', INT64 : 'int64', UINT64 : 'int64', DOUBLE : 'float',
FLOAT : 'float', STRING : 'string', STRING_PTR : 'char**',
BOOL : 'bool', SYMBOL : 'z3_symbol', PRINT_MODE : 'int', ERROR_CODE : 'int', CHAR : 'char', CHAR_PTR : 'string', LBOOL : 'int' }

Expand Down Expand Up @@ -254,8 +254,10 @@ def param2pystr(p):
def param2ml(p):
k = param_kind(p)
if k == OUT:
if param_type(p) == INT or param_type(p) == UINT or param_type(p) == BOOL or param_type(p) == INT64 or param_type(p) == UINT64:
if param_type(p) == INT or param_type(p) == UINT or param_type(p) == BOOL:
return "int"
elif param_type(p) == INT64 or param_type(p) == UINT64:
return "int64"
elif param_type(p) == STRING:
return "string"
else:
Expand Down Expand Up @@ -1252,9 +1254,9 @@ def ml_unwrap(t, ts, s):
elif t == UINT:
return '(' + ts + ') Unsigned_int_val(' + s + ')'
elif t == INT64:
return '(' + ts + ') Long_val(' + s + ')'
return '(' + ts + ') Int64_val(' + s + ')'
elif t == UINT64:
return '(' + ts + ') Unsigned_long_val(' + s + ')'
return '(' + ts + ') Int64_val(' + s + ')'
elif t == DOUBLE:
return '(' + ts + ') Double_val(' + s + ')'
elif ml_has_plus_type(ts):
Expand All @@ -1271,7 +1273,7 @@ def ml_set_wrap(t, d, n):
elif t == INT or t == UINT or t == PRINT_MODE or t == ERROR_CODE or t == LBOOL:
return d + ' = Val_int(' + n + ');'
elif t == INT64 or t == UINT64:
return d + ' = Val_long(' + n + ');'
return d + ' = caml_copy_int64(' + n + ');'
elif t == DOUBLE:
return d + '= caml_copy_double(' + n + ');'
elif t == STRING:
Expand Down
12 changes: 6 additions & 6 deletions src/api/ml/z3.mli
Original file line number Diff line number Diff line change
Expand Up @@ -927,10 +927,10 @@ end
module FiniteDomain :
sig
(** Create a new finite domain sort. *)
val mk_sort : context -> Symbol.symbol -> int -> Sort.sort
val mk_sort : context -> Symbol.symbol -> int64 -> Sort.sort

(** Create a new finite domain sort. *)
val mk_sort_s : context -> string -> int -> Sort.sort
val mk_sort_s : context -> string -> int64 -> Sort.sort

(** Indicates whether the term is of an array sort. *)
val is_finite_domain : Expr.expr -> bool
Expand All @@ -939,7 +939,7 @@ sig
val is_lt : Expr.expr -> bool

(** The size of the finite domain sort. *)
val get_size : Sort.sort -> int
val get_size : Sort.sort -> int64
end


Expand Down Expand Up @@ -2078,7 +2078,7 @@ sig
val mk_numeral_i : context -> int -> Sort.sort -> Expr.expr

(** Create a numeral of FloatingPoint sort from a sign bit and two integers. *)
val mk_numeral_i_u : context -> bool -> int -> int -> Sort.sort -> Expr.expr
val mk_numeral_i_u : context -> bool -> int64 -> int64 -> Sort.sort -> Expr.expr

(** Create a numeral of FloatingPoint sort from a string *)
val mk_numeral_s : context -> string -> Sort.sort -> Expr.expr
Expand Down Expand Up @@ -2303,7 +2303,7 @@ sig
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
val get_numeral_exponent_int : context -> Expr.expr -> bool -> bool * int64

(** Return the exponent of a floating-point numeral as a bit-vector expression.
Remark: NaN's do not have a bit-vector exponent, so they are invalid arguments. *)
Expand All @@ -2320,7 +2320,7 @@ sig
Remark: This function extracts the significand bits, without the
hidden bit or normalization. Throws an exception if the
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 * int64

(** Indicates whether a floating-point numeral is a NaN. *)
val is_numeral_nan : context -> Expr.expr -> bool
Expand Down
5 changes: 4 additions & 1 deletion src/smt/smt_internalizer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1429,7 +1429,10 @@ namespace smt {
inc_ref(l2);
m_watches[(~l1).index()].insert_literal(l2);
m_watches[(~l2).index()].insert_literal(l1);
if (get_assignment(l2) == l_false) {
if (get_assignment(l1) == l_false) {
assign(l2, b_justification(~l1));
}
else if (get_assignment(l2) == l_false) {
assign(l1, b_justification(~l2));
}
m_clause_proof.add(l1, l2, k, j);
Expand Down
6 changes: 4 additions & 2 deletions src/solver/parallel_tactic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,9 @@ class parallel_tactic : public tactic {

void shutdown() {
if (!m_shutdown) {
std::lock_guard<std::mutex> lock(m_mutex);
m_shutdown = true;
m_cond.notify_all();
std::lock_guard<std::mutex> lock(m_mutex);
for (solver_state* st : m_active) {
st->m().limit().cancel();
}
Expand Down Expand Up @@ -147,7 +147,9 @@ class parallel_tactic : public tactic {
}
{
std::unique_lock<std::mutex> lock(m_mutex);
m_cond.wait(lock);
if (!m_shutdown) {
m_cond.wait(lock);
}
}
dec_wait();
}
Expand Down

0 comments on commit 49b7e90

Please sign in to comment.