mirror of
https://github.com/Z3Prover/z3
synced 2025-04-15 13:28:47 +00:00
Merge branch 'pure' of https://github.com/Z3Prover/z3
This commit is contained in:
commit
ceb562a889
|
@ -126,9 +126,11 @@ extern "C" {
|
||||||
lbool r = l_undef;
|
lbool r = l_undef;
|
||||||
cancel_eh<opt::context> eh(*to_optimize_ptr(o));
|
cancel_eh<opt::context> eh(*to_optimize_ptr(o));
|
||||||
unsigned timeout = to_optimize_ptr(o)->get_params().get_uint("timeout", mk_c(c)->get_timeout());
|
unsigned timeout = to_optimize_ptr(o)->get_params().get_uint("timeout", mk_c(c)->get_timeout());
|
||||||
|
unsigned rlimit = mk_c(c)->get_rlimit();
|
||||||
api::context::set_interruptable si(*(mk_c(c)), eh);
|
api::context::set_interruptable si(*(mk_c(c)), eh);
|
||||||
{
|
{
|
||||||
scoped_timer timer(timeout, &eh);
|
scoped_timer timer(timeout, &eh);
|
||||||
|
scoped_rlimit _rlimit(mk_c(c)->m().limit(), rlimit);
|
||||||
try {
|
try {
|
||||||
r = to_optimize_ptr(o)->optimize();
|
r = to_optimize_ptr(o)->optimize();
|
||||||
}
|
}
|
||||||
|
|
|
@ -179,8 +179,6 @@ expr_ref fpa2bv_model_converter::convert_bv2rm(model * bv_mdl, func_decl * var,
|
||||||
void fpa2bv_model_converter::convert(model * bv_mdl, model * float_mdl) {
|
void fpa2bv_model_converter::convert(model * bv_mdl, model * float_mdl) {
|
||||||
fpa_util fu(m);
|
fpa_util fu(m);
|
||||||
bv_util bu(m);
|
bv_util bu(m);
|
||||||
unsynch_mpz_manager & mpzm = fu.fm().mpz_manager();
|
|
||||||
unsynch_mpq_manager & mpqm = fu.fm().mpq_manager();
|
|
||||||
|
|
||||||
TRACE("fpa2bv_mc", tout << "BV Model: " << std::endl;
|
TRACE("fpa2bv_mc", tout << "BV Model: " << std::endl;
|
||||||
for (unsigned i = 0; i < bv_mdl->get_num_constants(); i++)
|
for (unsigned i = 0; i < bv_mdl->get_num_constants(); i++)
|
||||||
|
|
|
@ -123,7 +123,7 @@ datalog::ddnf_core* populate_ddnf(char const* file, ptr_vector<tbv>& tbvs) {
|
||||||
|
|
||||||
|
|
||||||
static void read_args(char ** argv, int argc, int& i) {
|
static void read_args(char ** argv, int argc, int& i) {
|
||||||
if (argc = i + 2) {
|
if (argc == i + 2) {
|
||||||
g_file = argv[i + 1];
|
g_file = argv[i + 1];
|
||||||
++i;
|
++i;
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -212,6 +212,7 @@ void tst_dl_query() {
|
||||||
//params.m_dl_default_relation = symbol("tr_hashtable");
|
//params.m_dl_default_relation = symbol("tr_hashtable");
|
||||||
|
|
||||||
//dl_query_test_wpa(params);
|
//dl_query_test_wpa(params);
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
ast_manager m;
|
ast_manager m;
|
||||||
|
|
|
@ -181,7 +181,6 @@ class test_doc_cls {
|
||||||
expr_ref result(m);
|
expr_ref result(m);
|
||||||
expr_ref_vector conjs(m);
|
expr_ref_vector conjs(m);
|
||||||
unsigned n = m2.num_tbits();
|
unsigned n = m2.num_tbits();
|
||||||
tbv_manager& tm = m2.tbvm();
|
|
||||||
SASSERT(n <= m_vars.size());
|
SASSERT(n <= m_vars.size());
|
||||||
for (unsigned i = 0; i < n; ++i) {
|
for (unsigned i = 0; i < n; ++i) {
|
||||||
switch (t[i]) {
|
switch (t[i]) {
|
||||||
|
|
|
@ -172,7 +172,6 @@ public:
|
||||||
|
|
||||||
static void tst2() {
|
static void tst2() {
|
||||||
typedef basic_interval_manager<unsynch_mpz_manager, false> mpzi_manager;
|
typedef basic_interval_manager<unsynch_mpz_manager, false> mpzi_manager;
|
||||||
typedef mpzi_manager::interval mpzi;
|
|
||||||
typedef mpzi_manager::scoped_interval scoped_mpzi;
|
typedef mpzi_manager::scoped_interval scoped_mpzi;
|
||||||
|
|
||||||
unsynch_mpz_manager nm;
|
unsynch_mpz_manager nm;
|
||||||
|
|
|
@ -238,6 +238,7 @@ static void test_quant_solve1() {
|
||||||
test_quant_solver(m, "(exists ((c Cell)) (= (cell c c) c1))", false);
|
test_quant_solver(m, "(exists ((c Cell)) (= (cell c c) c1))", false);
|
||||||
test_quant_solver(m, "(exists ((c Cell)) (= (cell c (cdr c1)) c1))", false);
|
test_quant_solver(m, "(exists ((c Cell)) (= (cell c (cdr c1)) c1))", false);
|
||||||
|
|
||||||
|
|
||||||
test_quant_solver(m, "(exists ((t Tuple)) (= (tuple a P r1) t))");
|
test_quant_solver(m, "(exists ((t Tuple)) (= (tuple a P r1) t))");
|
||||||
test_quant_solver(m, "(exists ((t Tuple)) (= a (first t)))");
|
test_quant_solver(m, "(exists ((t Tuple)) (= a (first t)))");
|
||||||
test_quant_solver(m, "(exists ((t Tuple)) (= P (second t)))");
|
test_quant_solver(m, "(exists ((t Tuple)) (= P (second t)))");
|
||||||
|
@ -253,11 +254,13 @@ void tst_quant_solve() {
|
||||||
|
|
||||||
test_quant_solve1();
|
test_quant_solve1();
|
||||||
|
|
||||||
|
#if 0
|
||||||
memory::finalize();
|
memory::finalize();
|
||||||
#ifdef _WINDOWS
|
#ifdef _WINDOWS
|
||||||
_CrtDumpMemoryLeaks();
|
_CrtDumpMemoryLeaks();
|
||||||
#endif
|
#endif
|
||||||
exit(0);
|
exit(0);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -24,35 +24,35 @@ static vector<R> vec(int i, int j) {
|
||||||
return nv;
|
return nv;
|
||||||
}
|
}
|
||||||
|
|
||||||
static vector<R> vec(int i, int j, int k) {
|
// static vector<R> vec(int i, int j, int k) {
|
||||||
vector<R> nv = vec(i, j);
|
// vector<R> nv = vec(i, j);
|
||||||
nv.push_back(R(k));
|
// nv.push_back(R(k));
|
||||||
return nv;
|
// return nv;
|
||||||
}
|
// }
|
||||||
|
|
||||||
static vector<R> vec(int i, int j, int k, int l) {
|
// static vector<R> vec(int i, int j, int k, int l) {
|
||||||
vector<R> nv = vec(i, j, k);
|
// vector<R> nv = vec(i, j, k);
|
||||||
nv.push_back(R(l));
|
// nv.push_back(R(l));
|
||||||
return nv;
|
// return nv;
|
||||||
}
|
// }
|
||||||
|
|
||||||
static vector<R> vec(int i, int j, int k, int l, int x) {
|
/// static vector<R> vec(int i, int j, int k, int l, int x) {
|
||||||
vector<R> nv = vec(i, j, k, l);
|
/// vector<R> nv = vec(i, j, k, l);
|
||||||
nv.push_back(R(x));
|
/// nv.push_back(R(x));
|
||||||
return nv;
|
/// return nv;
|
||||||
}
|
/// }
|
||||||
|
|
||||||
static vector<R> vec(int i, int j, int k, int l, int x, int y) {
|
// static vector<R> vec(int i, int j, int k, int l, int x, int y) {
|
||||||
vector<R> nv = vec(i, j, k, l, x);
|
// vector<R> nv = vec(i, j, k, l, x);
|
||||||
nv.push_back(R(y));
|
// nv.push_back(R(y));
|
||||||
return nv;
|
// return nv;
|
||||||
}
|
// }
|
||||||
|
|
||||||
static vector<R> vec(int i, int j, int k, int l, int x, int y, int z) {
|
// static vector<R> vec(int i, int j, int k, int l, int x, int y, int z) {
|
||||||
vector<R> nv = vec(i, j, k, l, x, y);
|
// vector<R> nv = vec(i, j, k, l, x, y);
|
||||||
nv.push_back(R(z));
|
// nv.push_back(R(z));
|
||||||
return nv;
|
// return nv;
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ void tst_simplex() {
|
||||||
coeffs.push_back(mpz(i+1));
|
coeffs.push_back(mpz(i+1));
|
||||||
}
|
}
|
||||||
|
|
||||||
Simplex::row r = S.add_row(1, coeffs.size(), vars.c_ptr(), coeffs.c_ptr());
|
// Simplex::row r = S.add_row(1, coeffs.size(), vars.c_ptr(), coeffs.c_ptr());
|
||||||
is_sat = S.make_feasible();
|
is_sat = S.make_feasible();
|
||||||
std::cout << "feasible: " << is_sat << "\n";
|
std::cout << "feasible: " << is_sat << "\n";
|
||||||
S.display(std::cout);
|
S.display(std::cout);
|
||||||
|
|
|
@ -85,8 +85,9 @@ hwf_manager::~hwf_manager()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
#define RAW(X) (*reinterpret_cast<const uint64*>(&(X)))
|
// #define RAW(X) (*reinterpret_cast<const uint64*>(&(X)))
|
||||||
#define DBL(X) (*reinterpret_cast<const double*>(&(X)))
|
#define RAW(X) ({ uint64 tmp; memcpy(&tmp, &(X), sizeof(uint64)); tmp; })
|
||||||
|
#define DBL(X) ({ double tmp; memcpy(&tmp, &(X), sizeof(double)); tmp; })
|
||||||
|
|
||||||
void hwf_manager::set(hwf & o, int value) {
|
void hwf_manager::set(hwf & o, int value) {
|
||||||
o.value = (double) value;
|
o.value = (double) value;
|
||||||
|
@ -166,7 +167,7 @@ void hwf_manager::set(hwf & o, bool sign, uint64 significand, int exponent) {
|
||||||
uint64 raw = (sign?0x8000000000000000ull:0);
|
uint64 raw = (sign?0x8000000000000000ull:0);
|
||||||
raw |= (((uint64)exponent) + 1023) << 52;
|
raw |= (((uint64)exponent) + 1023) << 52;
|
||||||
raw |= significand;
|
raw |= significand;
|
||||||
o.value = *reinterpret_cast<double*>(&raw);
|
memcpy(&o.value, &raw, sizeof(double));
|
||||||
}
|
}
|
||||||
|
|
||||||
void hwf_manager::set(hwf & o, hwf const & x) {
|
void hwf_manager::set(hwf & o, hwf const & x) {
|
||||||
|
|
|
@ -199,8 +199,9 @@ void mpfx_manager::set(mpfx & n, uint64 v) {
|
||||||
else {
|
else {
|
||||||
allocate_if_needed(n);
|
allocate_if_needed(n);
|
||||||
n.m_sign = 0;
|
n.m_sign = 0;
|
||||||
unsigned * _v = reinterpret_cast<unsigned*>(&v);
|
|
||||||
unsigned * w = words(n);
|
unsigned * w = words(n);
|
||||||
|
unsigned * _v = 0;
|
||||||
|
memcpy(_v, &v, sizeof(unsigned*));
|
||||||
for (unsigned i = 0; i < m_total_sz; i++)
|
for (unsigned i = 0; i < m_total_sz; i++)
|
||||||
w[i] = 0;
|
w[i] = 0;
|
||||||
w[m_frac_part_sz] = _v[0];
|
w[m_frac_part_sz] = _v[0];
|
||||||
|
@ -679,7 +680,8 @@ int64 mpfx_manager::get_int64(mpfx const & n) const {
|
||||||
SASSERT(is_int64(n));
|
SASSERT(is_int64(n));
|
||||||
unsigned * w = words(n);
|
unsigned * w = words(n);
|
||||||
w += m_frac_part_sz;
|
w += m_frac_part_sz;
|
||||||
uint64 r = *reinterpret_cast<uint64*>(w);
|
uint64 r = 0;
|
||||||
|
memcpy(&r, w, sizeof(uint64));
|
||||||
if (r == 0x8000000000000000ull) {
|
if (r == 0x8000000000000000ull) {
|
||||||
SASSERT(is_neg(n));
|
SASSERT(is_neg(n));
|
||||||
return INT64_MIN;
|
return INT64_MIN;
|
||||||
|
@ -693,7 +695,9 @@ uint64 mpfx_manager::get_uint64(mpfx const & n) const {
|
||||||
SASSERT(is_uint64(n));
|
SASSERT(is_uint64(n));
|
||||||
unsigned * w = words(n);
|
unsigned * w = words(n);
|
||||||
w += m_frac_part_sz;
|
w += m_frac_part_sz;
|
||||||
return *reinterpret_cast<uint64*>(w);
|
uint64 r = 0;
|
||||||
|
memcpy(&r, w, sizeof(uint64));
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<bool SYNCH>
|
template<bool SYNCH>
|
||||||
|
|
|
@ -67,7 +67,9 @@ void prime_generator::process_next_k_numbers(uint64 k) {
|
||||||
if (todo[k1] < p) {
|
if (todo[k1] < p) {
|
||||||
m_primes.push_back(todo[k1]);
|
m_primes.push_back(todo[k1]);
|
||||||
}
|
}
|
||||||
break;
|
else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
unsigned k2 = 0;
|
unsigned k2 = 0;
|
||||||
for (; k1 < todo_sz; k1++, k2++) {
|
for (; k1 < todo_sz; k1++, k2++) {
|
||||||
|
|
Loading…
Reference in a new issue