mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-26 17:29:21 +00:00 
			
		
		
		
	Merge branch 'pure' of https://github.com/Z3Prover/z3
This commit is contained in:
		
						commit
						ceb562a889
					
				
					 11 changed files with 47 additions and 38 deletions
				
			
		|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue