mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 17:15:31 +00:00
merge with master
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
commit
c513f3ca09
883 changed files with 13979 additions and 16480 deletions
|
@ -20,13 +20,13 @@ void tst_check_assumptions()
|
|||
reg_decl_plugins(mgr);
|
||||
|
||||
sort_ref b(mgr.mk_bool_sort(), mgr);
|
||||
func_decl_ref pPred(mgr.mk_func_decl(symbol("p"), 0, static_cast<sort * const *>(0), b), mgr);
|
||||
func_decl_ref qPred(mgr.mk_func_decl(symbol("q"), 0, static_cast<sort * const *>(0), b), mgr);
|
||||
func_decl_ref rPred(mgr.mk_func_decl(symbol("r"), 0, static_cast<sort * const *>(0), b), mgr);
|
||||
func_decl_ref pPred(mgr.mk_func_decl(symbol("p"), 0, static_cast<sort * const *>(nullptr), b), mgr);
|
||||
func_decl_ref qPred(mgr.mk_func_decl(symbol("q"), 0, static_cast<sort * const *>(nullptr), b), mgr);
|
||||
func_decl_ref rPred(mgr.mk_func_decl(symbol("r"), 0, static_cast<sort * const *>(nullptr), b), mgr);
|
||||
|
||||
app_ref p(mgr.mk_app(pPred,0,static_cast<expr * const *>(0)), mgr);
|
||||
app_ref q(mgr.mk_app(qPred,0,static_cast<expr * const *>(0)), mgr);
|
||||
app_ref r(mgr.mk_app(rPred,0,static_cast<expr * const *>(0)), mgr);
|
||||
app_ref p(mgr.mk_app(pPred,0,static_cast<expr * const *>(nullptr)), mgr);
|
||||
app_ref q(mgr.mk_app(qPred,0,static_cast<expr * const *>(nullptr)), mgr);
|
||||
app_ref r(mgr.mk_app(rPred,0,static_cast<expr * const *>(nullptr)), mgr);
|
||||
app_ref pOqOr(mgr.mk_or(p,q,r), mgr);
|
||||
|
||||
app_ref np(mgr.mk_not(p), mgr);
|
||||
|
|
|
@ -11,7 +11,7 @@ Copyright (c) 2017 Microsoft Corporation
|
|||
#include "sat/sat_solver.h"
|
||||
#include "util/gparams.h"
|
||||
|
||||
static sat::solver * g_solver = 0;
|
||||
static sat::solver * g_solver = nullptr;
|
||||
static clock_t g_start_time;
|
||||
|
||||
static void display_statistics() {
|
||||
|
|
|
@ -26,7 +26,7 @@ void read_nums(std::istream& is, unsigned & x, unsigned& y) {
|
|||
std::getline(is, line);
|
||||
}
|
||||
|
||||
static char const* g_file = 0;
|
||||
static char const* g_file = nullptr;
|
||||
|
||||
|
||||
void create_forwarding(
|
||||
|
|
|
@ -30,6 +30,6 @@ void tst_escaped() {
|
|||
std::cout << "[" << escaped("\n") << "]\n";
|
||||
std::cout << "[" << escaped("", true) << "]\n";
|
||||
std::cout << "[" << escaped("") << "]\n";
|
||||
std::cout << "[" << escaped(0, true) << "]\n";
|
||||
std::cout << "[" << escaped(0) << "]\n";
|
||||
std::cout << "[" << escaped(nullptr, true) << "]\n";
|
||||
std::cout << "[" << escaped(nullptr) << "]\n";
|
||||
}
|
||||
|
|
|
@ -29,14 +29,14 @@ class ex1 : public ex {
|
|||
char const * m_msg;
|
||||
public:
|
||||
ex1(char const * m):m_msg(m) {}
|
||||
virtual char const * msg() const { return m_msg; }
|
||||
char const * msg() const override { return m_msg; }
|
||||
};
|
||||
|
||||
class ex2 : public ex {
|
||||
std::string m_msg;
|
||||
public:
|
||||
ex2(char const * m):m_msg(m) {}
|
||||
virtual char const * msg() const { return m_msg.c_str(); }
|
||||
char const * msg() const override { return m_msg.c_str(); }
|
||||
};
|
||||
|
||||
static void th() {
|
||||
|
|
|
@ -25,8 +25,8 @@ void tst_expr_arith(unsigned num_files) {
|
|||
er.initialize_arith(20);
|
||||
|
||||
family_id fid = m.mk_family_id("arith");
|
||||
sort* int_ty = m.mk_sort(fid, INT_SORT, 0, 0);
|
||||
sort* real_ty = m.mk_sort(fid, REAL_SORT, 0, 0);
|
||||
sort* int_ty = m.mk_sort(fid, INT_SORT, 0, nullptr);
|
||||
sort* real_ty = m.mk_sort(fid, REAL_SORT, 0, nullptr);
|
||||
|
||||
er.initialize_array(3, int_ty, int_ty);
|
||||
er.initialize_array(3, int_ty, real_ty);
|
||||
|
@ -40,10 +40,10 @@ void tst_expr_arith(unsigned num_files) {
|
|||
|
||||
pp.set_logic(symbol("QF_AUFLIA"));
|
||||
std::ostringstream buffer;
|
||||
buffer << "random_arith_" << i << ".smt";
|
||||
buffer << "random_arith_" << i << ".smt2";
|
||||
std::cout << buffer.str() << "\n";
|
||||
std::ofstream file(buffer.str().c_str());
|
||||
pp.display(file, e.get());
|
||||
pp.display_smt2(file, e.get());
|
||||
file.close();
|
||||
}
|
||||
|
||||
|
@ -83,10 +83,10 @@ void tst_expr_rand(unsigned num_files) {
|
|||
|
||||
pp.set_logic(symbol("QF_AUFBV"));
|
||||
std::ostringstream buffer;
|
||||
buffer << "random_bv_" << i << ".smt";
|
||||
buffer << "random_bv_" << i << ".smt2";
|
||||
std::cout << buffer.str() << "\n";
|
||||
std::ofstream file(buffer.str().c_str());
|
||||
pp.display(file, e.get());
|
||||
pp.display_smt2(file, e.get());
|
||||
file.close();
|
||||
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@ void expr_rand::add_func_decl(func_decl* f) {
|
|||
|
||||
void expr_rand::add_expr(expr* t) {
|
||||
sort* s = m_manager.get_sort(t);
|
||||
expr_ref_vector* vals = 0;
|
||||
expr_ref_vector* vals = nullptr;
|
||||
if (!m_nodes.find(s, vals)) {
|
||||
vals = alloc(expr_ref_vector, m_manager);
|
||||
m_nodes.insert(s, vals);
|
||||
|
@ -71,7 +71,7 @@ func_decl* expr_rand::choose_func_decl() {
|
|||
}
|
||||
|
||||
expr* expr_rand::choose_expr(sort* s) {
|
||||
expr_ref_vector* vals = 0;
|
||||
expr_ref_vector* vals = nullptr;
|
||||
if (!m_nodes.find(s, vals)) {
|
||||
add_var(s);
|
||||
if (!m_nodes.find(s, vals)) {
|
||||
|
@ -86,14 +86,14 @@ expr* expr_rand::choose_expr(sort* s) {
|
|||
void expr_rand::initialize_arith(unsigned num_vars) {
|
||||
arith_util u(m_manager);
|
||||
family_id afid = m_manager.mk_family_id("arith");
|
||||
sort* i_ty = m_manager.mk_sort(afid, INT_SORT, 0, 0);
|
||||
sort* i_ty = m_manager.mk_sort(afid, INT_SORT, 0, nullptr);
|
||||
for(unsigned i = 0; i < num_vars; ++i) {
|
||||
add_var(i_ty);
|
||||
}
|
||||
sort* is[2] = { i_ty, i_ty };
|
||||
decl_kind kinds[7] = {OP_ADD, OP_MUL, OP_SUB, OP_LE, OP_LT, OP_GE, OP_GT };
|
||||
for (unsigned i = 0; i < 7; ++i) {
|
||||
add_func_decl(m_manager.mk_func_decl(afid, kinds[i], 0, 0, 2, is));
|
||||
add_func_decl(m_manager.mk_func_decl(afid, kinds[i], 0, nullptr, 2, is));
|
||||
}
|
||||
|
||||
add_expr(u.mk_numeral(rational(0), true));
|
||||
|
@ -137,37 +137,37 @@ void expr_rand::initialize_bv(unsigned num_vars) {
|
|||
sort* s = m_manager.mk_sort(bvfid, BV_SORT, 1, ¶m);
|
||||
|
||||
sort* ss[3] = { s, s, s };
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BNEG, 0, 0, 1, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BADD, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BSUB, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BMUL, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BSDIV, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BUDIV, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BSREM, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BUREM, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BSMOD, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_ULEQ, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_SLEQ, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_UGEQ, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_SGEQ, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_ULT, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_SLT, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_UGT, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_SGT, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BAND, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BOR, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BNOT, 0, 0, 1, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BXOR, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BXNOR, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BNAND, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BCOMP, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BREDAND, 0, 0, 1, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BREDOR, 0, 0, 1, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BSHL, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BLSHR, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BASHR, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BNEG, 0, nullptr, 1, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BADD, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BSUB, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BMUL, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BSDIV, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BUDIV, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BSREM, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BUREM, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BSMOD, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_ULEQ, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_SLEQ, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_UGEQ, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_SGEQ, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_ULT, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_SLT, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_UGT, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_SGT, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BAND, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BOR, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BNOT, 0, nullptr, 1, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BXOR, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BXNOR, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BNAND, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BCOMP, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BREDAND, 0, nullptr, 1, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BREDOR, 0, nullptr, 1, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BSHL, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BLSHR, 0, nullptr, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_BASHR, 0, nullptr, 2, ss));
|
||||
|
||||
add_func_decl(m_manager.mk_func_decl(bfid, OP_EQ, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bfid, OP_EQ, 0, nullptr, 2, ss));
|
||||
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_ROTATE_LEFT, 1, &p1, 1, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_ROTATE_RIGHT, 1, &p1, 1, ss));
|
||||
|
@ -182,22 +182,22 @@ void expr_rand::initialize_bv(unsigned num_vars) {
|
|||
// OP_CONCAT:
|
||||
{
|
||||
sort* ss[2] = { b8, b8 };
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_CONCAT, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_CONCAT, 0, nullptr, 2, ss));
|
||||
ss[0] = b16;
|
||||
ss[1] = b8;
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_CONCAT, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_CONCAT, 0, nullptr, 2, ss));
|
||||
ss[0] = b8;
|
||||
ss[1] = b16;
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_CONCAT, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_CONCAT, 0, nullptr, 2, ss));
|
||||
ss[0] = b16;
|
||||
ss[1] = b16;
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_CONCAT, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_CONCAT, 0, nullptr, 2, ss));
|
||||
ss[0] = b24;
|
||||
ss[1] = b8;
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_CONCAT, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_CONCAT, 0, nullptr, 2, ss));
|
||||
ss[0] = b8;
|
||||
ss[1] = b24;
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_CONCAT, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(bvfid, OP_CONCAT, 0, nullptr, 2, ss));
|
||||
}
|
||||
|
||||
|
||||
|
@ -246,8 +246,8 @@ void expr_rand::initialize_array(unsigned num_vars, sort* dom, sort* rng) {
|
|||
sort* a = m_manager.mk_sort(afid, ARRAY_SORT, 2, ps);
|
||||
sort* ss[3] = { a, dom, rng };
|
||||
|
||||
add_func_decl(m_manager.mk_func_decl(afid, OP_STORE, 0, 0, 3, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(afid, OP_SELECT, 0, 0, 2, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(afid, OP_STORE, 0, nullptr, 3, ss));
|
||||
add_func_decl(m_manager.mk_func_decl(afid, OP_SELECT, 0, nullptr, 2, ss));
|
||||
|
||||
for (unsigned i = 0; i < num_vars; ++i) {
|
||||
add_var(a);
|
||||
|
@ -258,14 +258,14 @@ void expr_rand::initialize_basic(unsigned amplification) {
|
|||
family_id bfid = m_manager.get_basic_family_id();
|
||||
sort* bools[2] = { m_manager.mk_bool_sort(), m_manager.mk_bool_sort() };
|
||||
for (unsigned i = 0; i < amplification; ++i) {
|
||||
add_func_decl(m_manager.mk_func_decl(bfid, OP_OR, 0, 0, 2, bools));
|
||||
add_func_decl(m_manager.mk_func_decl(bfid, OP_NOT, 0, 0, 1, bools));
|
||||
add_func_decl(m_manager.mk_func_decl(bfid, OP_OR, 0, nullptr, 2, bools));
|
||||
add_func_decl(m_manager.mk_func_decl(bfid, OP_NOT, 0, nullptr, 1, bools));
|
||||
}
|
||||
map_t::iterator it = m_nodes.begin();
|
||||
map_t::iterator end = m_nodes.end();
|
||||
for (; it != end; ++it) {
|
||||
sort* s = it->m_key;
|
||||
sort* ites[3] = { bools[0], s, s };
|
||||
add_func_decl(m_manager.mk_func_decl(bfid, OP_ITE, 0, 0, 3, ites));
|
||||
add_func_decl(m_manager.mk_func_decl(bfid, OP_ITE, 0, nullptr, 3, ites));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -61,12 +61,12 @@ void test2() {
|
|||
|
||||
datatype_decl_plugin & dt = *(static_cast<datatype_decl_plugin*>(m.get_plugin(m.get_family_id("datatype"))));
|
||||
sort_ref_vector new_sorts(m);
|
||||
constructor_decl* R = mk_constructor_decl(symbol("R"), symbol("is-R"), 0, 0);
|
||||
constructor_decl* G = mk_constructor_decl(symbol("G"), symbol("is-G"), 0, 0);
|
||||
constructor_decl* B = mk_constructor_decl(symbol("B"), symbol("is-B"), 0, 0);
|
||||
constructor_decl* R = mk_constructor_decl(symbol("R"), symbol("is-R"), 0, nullptr);
|
||||
constructor_decl* G = mk_constructor_decl(symbol("G"), symbol("is-G"), 0, nullptr);
|
||||
constructor_decl* B = mk_constructor_decl(symbol("B"), symbol("is-B"), 0, nullptr);
|
||||
constructor_decl* constrs[3] = { R, G, B };
|
||||
datatype_decl * enum_sort = mk_datatype_decl(dtutil, symbol("RGB"), 0, nullptr, 3, constrs);
|
||||
VERIFY(dt.mk_datatypes(1, &enum_sort, 0, nullptr, new_sorts));
|
||||
VERIFY(dt.mk_datatypes(1, &enum_sort, 0, nullptr, new_sorts));
|
||||
sort* rgb = new_sorts[0].get();
|
||||
|
||||
expr_ref x = mk_const(m, "x", rgb), y = mk_const(m, "y", rgb), z = mk_const(m, "z", rgb);
|
||||
|
@ -89,7 +89,7 @@ void test2() {
|
|||
|
||||
fd_solver->push();
|
||||
fd_solver->assert_expr(m.mk_not(m.mk_eq(x, g)));
|
||||
VERIFY(l_false == fd_solver->check_sat(0,0));
|
||||
VERIFY(l_false == fd_solver->check_sat(0,nullptr));
|
||||
fd_solver->pop(1);
|
||||
|
||||
VERIFY(l_true == fd_solver->get_consequences(asms, vars, conseq));
|
||||
|
@ -101,7 +101,7 @@ void test2() {
|
|||
fd_solver->get_model(mr);
|
||||
model_smt2_pp(std::cout << "model:\n", m, *mr.get(), 0);
|
||||
|
||||
VERIFY(l_true == fd_solver->check_sat(0,0));
|
||||
VERIFY(l_true == fd_solver->check_sat(0,nullptr));
|
||||
fd_solver->get_model(mr);
|
||||
ENSURE(mr.get());
|
||||
model_smt2_pp(std::cout, m, *mr.get(), 0);
|
||||
|
|
|
@ -19,20 +19,22 @@ Revision History:
|
|||
#include<iostream>
|
||||
#include "util/util.h"
|
||||
#include "util/heap.h"
|
||||
#include "util/hashtable.h"
|
||||
#include "util/trace.h"
|
||||
#include "util/uint_set.h"
|
||||
// include "util/hashtable.h"
|
||||
|
||||
struct lt_proc { bool operator()(int v1, int v2) const { return v1 < v2; } };
|
||||
//struct int_hash_proc { unsigned operator()(int v) const { std::cout << "hash " << v << "\n"; VERIFY(v >= 0); return v; }};
|
||||
//typedef int_hashtable<int_hash_proc, default_eq<int> > int_set;
|
||||
typedef heap<lt_proc> int_heap;
|
||||
struct int_hash_proc { unsigned operator()(int v) const { return v * 17; }};
|
||||
typedef int_hashtable<int_hash_proc, default_eq<int> > int_set;
|
||||
#define N 10000
|
||||
|
||||
static random_gen heap_rand(1);
|
||||
|
||||
static void tst1() {
|
||||
int_heap h(N);
|
||||
int_set t;
|
||||
// int_set t;
|
||||
uint_set t;
|
||||
for (int i = 0; i < N * 3; i++) {
|
||||
int val = heap_rand() % N;
|
||||
if (!h.contains(val)) {
|
||||
|
@ -41,14 +43,15 @@ static void tst1() {
|
|||
t.insert(val);
|
||||
}
|
||||
else {
|
||||
if (!t.contains(val)) {
|
||||
for (int v : t) std::cout << v << "\n";
|
||||
}
|
||||
ENSURE(t.contains(val));
|
||||
}
|
||||
}
|
||||
ENSURE(h.check_invariant());
|
||||
int_set::iterator it = t.begin();
|
||||
int_set::iterator end = t.end();
|
||||
for (; it != end; ++it) {
|
||||
ENSURE(h.contains(*it));
|
||||
for (int v : t) {
|
||||
ENSURE(h.contains(v));
|
||||
}
|
||||
while (!h.empty()) {
|
||||
int m1 = h.min_value();
|
||||
|
@ -84,6 +87,8 @@ static void dump_heap(const int_heap2 & h, std::ostream & out) {
|
|||
static void tst2() {
|
||||
int_heap2 h(N);
|
||||
for (int i = 0; i < N * 10; i++) {
|
||||
|
||||
if (i % 1 == 0) std::cout << "i: " << i << std::endl;
|
||||
if (i % 1000 == 0) std::cout << "i: " << i << std::endl;
|
||||
int cmd = heap_rand() % 10;
|
||||
if (cmd <= 3) {
|
||||
|
@ -134,6 +139,7 @@ void tst_heap() {
|
|||
enable_trace("heap");
|
||||
unsigned i = 0;
|
||||
while (i < 3) {
|
||||
IF_VERBOSE(1, verbose_stream() << "test\n";);
|
||||
heap_rand.set_seed(i++);
|
||||
tst1();
|
||||
init_values();
|
||||
|
|
|
@ -210,7 +210,7 @@ expr_ref hilbert_basis_validate::mk_validate(hilbert_basis& hb) {
|
|||
}
|
||||
|
||||
|
||||
hilbert_basis* g_hb = 0;
|
||||
hilbert_basis* g_hb = nullptr;
|
||||
static double g_start_time;
|
||||
|
||||
static void display_statistics(hilbert_basis& hb) {
|
||||
|
|
|
@ -27,10 +27,10 @@ static void tst1() {
|
|||
list<int> * l2 = new (r) list<int>(20, l1);
|
||||
list<int> * l3 = new (r) list<int>(30);
|
||||
list<int> * l4 = new (r) list<int>(40, l3);
|
||||
ENSURE(append(r, l1, static_cast<list<int> *>(0)) == l1);
|
||||
ENSURE(append(r, l2, static_cast<list<int> *>(0)) == l2);
|
||||
ENSURE(append(r, static_cast<list<int> *>(0), l2) == l2);
|
||||
ENSURE(append(r, static_cast<list<int> *>(0), static_cast<list<int> *>(0)) == 0);
|
||||
ENSURE(append(r, l1, static_cast<list<int> *>(nullptr)) == l1);
|
||||
ENSURE(append(r, l2, static_cast<list<int> *>(nullptr)) == l2);
|
||||
ENSURE(append(r, static_cast<list<int> *>(nullptr), l2) == l2);
|
||||
ENSURE(append(r, static_cast<list<int> *>(nullptr), static_cast<list<int> *>(nullptr)) == nullptr);
|
||||
TRACE("list", display(tout, l2->begin(), l2->end()); tout << "\n";);
|
||||
list<int> * l5 = append(r, l4, l2);
|
||||
TRACE("list", display(tout, l5->begin(), l5->end()); tout << "\n";);
|
||||
|
|
|
@ -272,7 +272,7 @@ static void tst4() {
|
|||
static void tst5() {
|
||||
params_ref ps;
|
||||
reslimit rlim;
|
||||
nlsat::solver s(rlim, ps);
|
||||
nlsat::solver s(rlim, ps, false);
|
||||
anum_manager & am = s.am();
|
||||
nlsat::pmanager & pm = s.pm();
|
||||
nlsat::assignment as(am);
|
||||
|
@ -293,7 +293,7 @@ static void tst5() {
|
|||
bool is_even[1] = { false };
|
||||
nlsat::bool_var b = s.mk_ineq_atom(nlsat::atom::GT, 1, _p, is_even);
|
||||
nlsat::atom * a = s.bool_var2atom(b);
|
||||
ENSURE(a != 0);
|
||||
ENSURE(a != nullptr);
|
||||
scoped_anum zero(am);
|
||||
am.set(zero, 0);
|
||||
as.set(0, zero);
|
||||
|
@ -330,7 +330,7 @@ static nlsat::literal mk_eq(nlsat::solver& s, nlsat::poly* p) {
|
|||
static void tst6() {
|
||||
params_ref ps;
|
||||
reslimit rlim;
|
||||
nlsat::solver s(rlim, ps);
|
||||
nlsat::solver s(rlim, ps, false);
|
||||
anum_manager & am = s.am();
|
||||
nlsat::pmanager & pm = s.pm();
|
||||
nlsat::assignment as(am);
|
||||
|
@ -390,7 +390,7 @@ static void tst6() {
|
|||
static void tst7() {
|
||||
params_ref ps;
|
||||
reslimit rlim;
|
||||
nlsat::solver s(rlim, ps);
|
||||
nlsat::solver s(rlim, ps, false);
|
||||
nlsat::pmanager & pm = s.pm();
|
||||
nlsat::var x0, x1, x2, a, b, c, d;
|
||||
a = s.mk_var(false);
|
||||
|
@ -443,7 +443,7 @@ static void tst7() {
|
|||
static void tst8() {
|
||||
params_ref ps;
|
||||
reslimit rlim;
|
||||
nlsat::solver s(rlim, ps);
|
||||
nlsat::solver s(rlim, ps, false);
|
||||
anum_manager & am = s.am();
|
||||
nlsat::pmanager & pm = s.pm();
|
||||
nlsat::assignment as(am);
|
||||
|
@ -492,7 +492,7 @@ static void tst8() {
|
|||
static void tst9() {
|
||||
params_ref ps;
|
||||
reslimit rlim;
|
||||
nlsat::solver s(rlim, ps);
|
||||
nlsat::solver s(rlim, ps, false);
|
||||
anum_manager & am = s.am();
|
||||
nlsat::pmanager & pm = s.pm();
|
||||
nlsat::assignment as(am);
|
||||
|
@ -624,7 +624,7 @@ static bool satisfies_root(nlsat::solver& s, nlsat::atom::kind k, nlsat::poly* p
|
|||
static void tst10() {
|
||||
params_ref ps;
|
||||
reslimit rlim;
|
||||
nlsat::solver s(rlim, ps);
|
||||
nlsat::solver s(rlim, ps, false);
|
||||
anum_manager & am = s.am();
|
||||
nlsat::pmanager & pm = s.pm();
|
||||
nlsat::assignment as(am);
|
||||
|
|
|
@ -120,10 +120,10 @@ class interval_tester {
|
|||
|
||||
interval singleton(int i) { return interval(m, rational(i)); }
|
||||
interval all() { return interval(m); }
|
||||
interval l(int i, bool o = false, size_t idx = 0) { return interval(m, rational(i), o, true, idx == 0 ? 0 : m.mk_leaf(reinterpret_cast<void*>(idx))); }
|
||||
interval r(int i, bool o = false, size_t idx = 0) { return interval(m, rational(i), o, false, idx == 0 ? 0 : m.mk_leaf(reinterpret_cast<void*>(idx))); }
|
||||
interval l(int i, bool o = false, size_t idx = 0) { return interval(m, rational(i), o, true, idx == 0 ? nullptr : m.mk_leaf(reinterpret_cast<void*>(idx))); }
|
||||
interval r(int i, bool o = false, size_t idx = 0) { return interval(m, rational(i), o, false, idx == 0 ? nullptr : m.mk_leaf(reinterpret_cast<void*>(idx))); }
|
||||
interval b(int l, int u, bool lo = false, bool uo = false, size_t idx_l = 0, size_t idx_u = 0) {
|
||||
return interval(m, rational(l), lo, idx_l == 0 ? 0 : m.mk_leaf(reinterpret_cast<void*>(idx_l)), rational(u), uo, idx_u == 0 ? 0 : m.mk_leaf(reinterpret_cast<void*>(idx_u)));
|
||||
return interval(m, rational(l), lo, idx_l == 0 ? nullptr : m.mk_leaf(reinterpret_cast<void*>(idx_l)), rational(u), uo, idx_u == 0 ? nullptr : m.mk_leaf(reinterpret_cast<void*>(idx_u)));
|
||||
}
|
||||
|
||||
void bugs() {
|
||||
|
|
|
@ -151,10 +151,10 @@ static void test_solver_semantics(ast_manager& m, expr_ref_vector const& vars, v
|
|||
std::cout << fml1 << " " << fml2 << "\n";
|
||||
th_rw(fml2, result2, proof);
|
||||
ENSURE(m.is_true(result2) || m.is_false(result2));
|
||||
lbool res = slv->check_sat(0,0);
|
||||
lbool res = slv->check_sat(0,nullptr);
|
||||
VERIFY(res == l_true);
|
||||
slv->assert_expr(m.is_true(result2) ? m.mk_not(result1) : result1.get());
|
||||
res = slv->check_sat(0,0);
|
||||
res = slv->check_sat(0,nullptr);
|
||||
VERIFY(res == l_false);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -103,7 +103,7 @@ struct test_model_search {
|
|||
unsigned level = 4;
|
||||
for(unsigned n = 0; n < 100; ++n) {
|
||||
state = mk_state(states, rand);
|
||||
model_node* root = alloc(model_node, 0, state, pt, level);
|
||||
model_node* root = alloc(model_node, nullptr, state, pt, level);
|
||||
search.set_root(root);
|
||||
add_tree(root, false);
|
||||
search.display(std::cout);
|
||||
|
|
|
@ -172,7 +172,7 @@ static expr_ref mk_mul(arith_util& arith, unsigned num_args, expr* const* args)
|
|||
|
||||
static void nf(expr_ref& term) {
|
||||
ast_manager& m = term.get_manager();
|
||||
expr *e1 = 0, *e2 = 0;
|
||||
expr *e1 = nullptr, *e2 = nullptr;
|
||||
|
||||
th_rewriter rw(m);
|
||||
arith_util arith(m);
|
||||
|
|
|
@ -8,13 +8,12 @@ Copyright (c) 2015 Microsoft Corporation
|
|||
#include "smt/params/smt_params.h"
|
||||
#include "qe/qe.h"
|
||||
#include "ast/ast_pp.h"
|
||||
#include "parsers/smt/smtlib.h"
|
||||
#include "parsers/smt/smtparser.h"
|
||||
#include "util/lbool.h"
|
||||
#include <sstream>
|
||||
#include "ast/reg_decl_plugins.h"
|
||||
|
||||
|
||||
#if 0
|
||||
static void test_qe(ast_manager& m, lbool expected_outcome, expr* fml, char const* option) {
|
||||
|
||||
// enable_trace("bit2int");
|
||||
|
@ -50,10 +49,14 @@ static void test_qe(ast_manager& m, lbool expected_outcome, expr* fml, char cons
|
|||
//exit(-1);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static void test_formula(lbool expected_outcome, char const* fml) {
|
||||
ast_manager m;
|
||||
reg_decl_plugins(m);
|
||||
// No-op requires SMTLIB2
|
||||
|
||||
#if 0
|
||||
scoped_ptr<smtlib::parser> parser = smtlib::parser::create(m);
|
||||
parser->initialize_smtlib();
|
||||
|
||||
|
@ -73,8 +76,10 @@ static void test_formula(lbool expected_outcome, char const* fml) {
|
|||
for (; it != end; ++it) {
|
||||
test_qe(m, expected_outcome, *it, 0);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void tst_quant_elim() {
|
||||
disable_debug("heap");
|
||||
|
||||
|
|
|
@ -387,9 +387,9 @@ static void tst9() {
|
|||
|
||||
static void tst10(bool use_ints) {
|
||||
if (use_ints)
|
||||
std::cout << "Testing multiplication performace using small ints\n";
|
||||
std::cout << "Testing multiplication performance using small ints\n";
|
||||
else
|
||||
std::cout << "Testing multiplication performace using small rationals\n";
|
||||
std::cout << "Testing multiplication performance using small rationals\n";
|
||||
vector<rational> vals;
|
||||
vector<rational> vals2;
|
||||
vector<float> fvals;
|
||||
|
|
|
@ -28,11 +28,11 @@ void test_print(Z3_context ctx, Z3_ast_vector av) {
|
|||
Z3_parse_smtlib2_string(ctx,
|
||||
spec1,
|
||||
0,
|
||||
nullptr,
|
||||
nullptr,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0);
|
||||
nullptr,
|
||||
nullptr);
|
||||
std::cout << "parse successful, converting ast->string\n";
|
||||
Z3_ast_vector_inc_ref(ctx, b);
|
||||
char const* spec2 = Z3_ast_vector_to_string(ctx, b);
|
||||
|
@ -41,18 +41,18 @@ void test_print(Z3_context ctx, Z3_ast_vector av) {
|
|||
}
|
||||
|
||||
void test_parseprint(char const* spec) {
|
||||
Z3_context ctx = Z3_mk_context(0);
|
||||
Z3_context ctx = Z3_mk_context(nullptr);
|
||||
std::cout << "spec:\n" << spec << "\n";
|
||||
|
||||
Z3_ast_vector a =
|
||||
Z3_parse_smtlib2_string(ctx,
|
||||
spec,
|
||||
0,
|
||||
nullptr,
|
||||
nullptr,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0);
|
||||
nullptr,
|
||||
nullptr);
|
||||
|
||||
std::cout << "done parsing\n";
|
||||
Z3_ast_vector_inc_ref(ctx, a);
|
||||
|
|
|
@ -28,7 +28,7 @@ struct ast_ext {
|
|||
return m.mk_implies(a, b);
|
||||
}
|
||||
UNREACHABLE();
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
T mk_default() {
|
||||
return m.mk_false();
|
||||
|
|
|
@ -148,7 +148,7 @@ void tst_theory_pb() {
|
|||
ctx.push();
|
||||
smt::literal l = smt::theory_pb::assert_ge(ctx, k+1, lits.size(), lits.c_ptr());
|
||||
if (l != smt::false_literal) {
|
||||
ctx.assign(l, 0, false);
|
||||
ctx.assign(l, nullptr, false);
|
||||
TRACE("pb", tout << "assign: " << l << "\n";
|
||||
ctx.display(tout););
|
||||
VERIFY(l_false == ctx.check());
|
||||
|
@ -160,7 +160,7 @@ void tst_theory_pb() {
|
|||
ctx.push();
|
||||
smt::literal l = smt::theory_pb::assert_ge(ctx, k, lits.size(), lits.c_ptr());
|
||||
ENSURE(l != smt::false_literal);
|
||||
ctx.assign(l, 0, false);
|
||||
ctx.assign(l, nullptr, false);
|
||||
TRACE("pb", ctx.display(tout););
|
||||
VERIFY(l_true == ctx.check());
|
||||
ctx.pop(1);
|
||||
|
|
|
@ -89,7 +89,7 @@ class udoc_tester {
|
|||
for (unsigned i = 0; i < num_diff; ++i) {
|
||||
t = mk_rand_tbv(dm, result->pos());
|
||||
if (dm.tbvm().equals(*t, result->pos())) {
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
if (!result->neg().is_empty() &&
|
||||
dm.tbvm().equals(*t, result->neg()[0])) {
|
||||
|
@ -278,7 +278,7 @@ public:
|
|||
t1->to_formula(t10);
|
||||
expr_ref delta0(m);
|
||||
delta->to_formula(delta0);
|
||||
rel_union union_fn = p.mk_union_fn(*t1, *t2, 0);
|
||||
rel_union union_fn = p.mk_union_fn(*t1, *t2, nullptr);
|
||||
|
||||
t1->display(std::cout << "t1 before:"); std::cout << "\n";
|
||||
(*union_fn)(*t1, *t2, delta);
|
||||
|
@ -840,7 +840,7 @@ public:
|
|||
void set_random(udoc_relation& r, unsigned num_vals) {
|
||||
unsigned num_bits = r.get_dm().num_tbits();
|
||||
udoc_relation* full = mk_full(r.get_signature());
|
||||
rel_union union_fn = p.mk_union_fn(r, r, 0);
|
||||
rel_union union_fn = p.mk_union_fn(r, r, nullptr);
|
||||
(*union_fn)(r, *full);
|
||||
doc_manager& dm = r.get_dm();
|
||||
ENSURE(r.get_udoc().size() == 1);
|
||||
|
@ -905,8 +905,8 @@ public:
|
|||
|
||||
void apply_filter(udoc_relation& t, app* cond) {
|
||||
udoc_relation* full = mk_full(t.get_signature());
|
||||
rel_union union_fn = p.mk_union_fn(t, *full, 0);
|
||||
(*union_fn)(t, *full, 0);
|
||||
rel_union union_fn = p.mk_union_fn(t, *full, nullptr);
|
||||
(*union_fn)(t, *full, nullptr);
|
||||
expr_ref fml0(m);
|
||||
t.to_formula(fml0);
|
||||
rel_mut fint = p.mk_filter_interpreted_fn(t, cond);
|
||||
|
|
|
@ -27,7 +27,7 @@ Revision History:
|
|||
namespace find_q {
|
||||
struct proc {
|
||||
quantifier * m_q;
|
||||
proc():m_q(0) {}
|
||||
proc():m_q(nullptr) {}
|
||||
void operator()(var * n) {}
|
||||
void operator()(app * n) {}
|
||||
void operator()(quantifier * n) { m_q = n; }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue