mirror of
https://github.com/Z3Prover/z3
synced 2025-06-16 02:46:16 +00:00
some compile warnings
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
414db51d5a
commit
518296dbc1
5 changed files with 44 additions and 51 deletions
|
@ -1785,8 +1785,9 @@ bool ast_manager::slow_not_contains(ast const * n) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static unsigned s_count = 0;
|
|
||||||
#if 0
|
#if 0
|
||||||
|
static unsigned s_count = 0;
|
||||||
|
|
||||||
static void track_id(ast_manager& m, ast* n, unsigned id) {
|
static void track_id(ast_manager& m, ast* n, unsigned id) {
|
||||||
if (n->get_id() != id) return;
|
if (n->get_id() != id) return;
|
||||||
++s_count;
|
++s_count;
|
||||||
|
@ -1826,7 +1827,7 @@ ast * ast_manager::register_node_core(ast * n) {
|
||||||
|
|
||||||
// track_id(*this, n, 3);
|
// track_id(*this, n, 3);
|
||||||
|
|
||||||
TRACE("ast", tout << (s_count++) << " Object " << n->m_id << " was created.\n";);
|
// TRACE("ast", tout << (s_count++) << " Object " << n->m_id << " was created.\n";);
|
||||||
TRACE("mk_var_bug", tout << "mk_ast: " << n->m_id << "\n";);
|
TRACE("mk_var_bug", tout << "mk_ast: " << n->m_id << "\n";);
|
||||||
// increment reference counters
|
// increment reference counters
|
||||||
switch (n->get_kind()) {
|
switch (n->get_kind()) {
|
||||||
|
|
|
@ -22,7 +22,7 @@ namespace euf {
|
||||||
|
|
||||||
// one table per func_decl implementation
|
// one table per func_decl implementation
|
||||||
unsigned etable::cg_hash::operator()(enode * n) const {
|
unsigned etable::cg_hash::operator()(enode * n) const {
|
||||||
SASSERT(decl(n)->is_flat_associative() || num_args(n) >= 3);
|
SASSERT(decl(n)->is_flat_associative() || n->num_args() >= 3);
|
||||||
unsigned a, b, c;
|
unsigned a, b, c;
|
||||||
a = b = 0x9e3779b9;
|
a = b = 0x9e3779b9;
|
||||||
c = 11;
|
c = 11;
|
||||||
|
@ -51,8 +51,8 @@ namespace euf {
|
||||||
|
|
||||||
bool etable::cg_eq::operator()(enode * n1, enode * n2) const {
|
bool etable::cg_eq::operator()(enode * n1, enode * n2) const {
|
||||||
SASSERT(decl(n1) == decl(n2));
|
SASSERT(decl(n1) == decl(n2));
|
||||||
unsigned num = num_args(n1);
|
unsigned num = n1->num_args();
|
||||||
if (num != num_args(n2)) {
|
if (num != n2->num_args()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
for (unsigned i = 0; i < num; i++)
|
for (unsigned i = 0; i < num; i++)
|
||||||
|
@ -96,7 +96,7 @@ namespace euf {
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned etable::set_table_id(enode * n) {
|
unsigned etable::set_table_id(enode * n) {
|
||||||
func_decl * f = n->get_decl();
|
func_decl * f = decl(n);
|
||||||
unsigned tid;
|
unsigned tid;
|
||||||
decl_info d(f, n->num_args());
|
decl_info d(f, n->num_args());
|
||||||
if (!m_func_decl2id.find(d, tid)) {
|
if (!m_func_decl2id.find(d, tid)) {
|
||||||
|
|
|
@ -24,7 +24,6 @@ namespace euf {
|
||||||
|
|
||||||
// one table per function symbol
|
// one table per function symbol
|
||||||
|
|
||||||
static unsigned num_args(enode* n) { return n->num_args(); }
|
|
||||||
static func_decl* decl(enode* n) { return n->get_decl(); }
|
static func_decl* decl(enode* n) { return n->get_decl(); }
|
||||||
|
|
||||||
|
|
||||||
|
@ -36,7 +35,7 @@ namespace euf {
|
||||||
|
|
||||||
struct cg_unary_hash {
|
struct cg_unary_hash {
|
||||||
unsigned operator()(enode * n) const {
|
unsigned operator()(enode * n) const {
|
||||||
SASSERT(num_args(n) == 1);
|
SASSERT(n->num_args() == 1);
|
||||||
return get_root(n, 0)->hash();
|
return get_root(n, 0)->hash();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -44,8 +43,8 @@ namespace euf {
|
||||||
struct cg_unary_eq {
|
struct cg_unary_eq {
|
||||||
|
|
||||||
bool operator()(enode * n1, enode * n2) const {
|
bool operator()(enode * n1, enode * n2) const {
|
||||||
SASSERT(num_args(n1) == 1);
|
SASSERT(n1->num_args() == 1);
|
||||||
SASSERT(num_args(n2) == 1);
|
SASSERT(n2->num_args() == 1);
|
||||||
SASSERT(decl(n1) == decl(n2));
|
SASSERT(decl(n1) == decl(n2));
|
||||||
return get_root(n1, 0) == get_root(n2, 0);
|
return get_root(n1, 0) == get_root(n2, 0);
|
||||||
}
|
}
|
||||||
|
@ -55,15 +54,15 @@ namespace euf {
|
||||||
|
|
||||||
struct cg_binary_hash {
|
struct cg_binary_hash {
|
||||||
unsigned operator()(enode * n) const {
|
unsigned operator()(enode * n) const {
|
||||||
SASSERT(num_args(n) == 2);
|
SASSERT(n->num_args() == 2);
|
||||||
return combine_hash(get_root(n, 0)->hash(), get_root(n, 1)->hash());
|
return combine_hash(get_root(n, 0)->hash(), get_root(n, 1)->hash());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct cg_binary_eq {
|
struct cg_binary_eq {
|
||||||
bool operator()(enode * n1, enode * n2) const {
|
bool operator()(enode * n1, enode * n2) const {
|
||||||
SASSERT(num_args(n1) == 2);
|
SASSERT(n1->num_args() == 2);
|
||||||
SASSERT(num_args(n2) == 2);
|
SASSERT(n2->num_args() == 2);
|
||||||
SASSERT(decl(n1) == decl(n2));
|
SASSERT(decl(n1) == decl(n2));
|
||||||
return
|
return
|
||||||
get_root(n1, 0) == get_root(n2, 0) &&
|
get_root(n1, 0) == get_root(n2, 0) &&
|
||||||
|
@ -75,7 +74,7 @@ namespace euf {
|
||||||
|
|
||||||
struct cg_comm_hash {
|
struct cg_comm_hash {
|
||||||
unsigned operator()(enode * n) const {
|
unsigned operator()(enode * n) const {
|
||||||
SASSERT(num_args(n) == 2);
|
SASSERT(n->num_args() == 2);
|
||||||
unsigned h1 = get_root(n, 0)->hash();
|
unsigned h1 = get_root(n, 0)->hash();
|
||||||
unsigned h2 = get_root(n, 1)->hash();
|
unsigned h2 = get_root(n, 1)->hash();
|
||||||
if (h1 > h2)
|
if (h1 > h2)
|
||||||
|
@ -88,8 +87,8 @@ namespace euf {
|
||||||
bool & m_commutativity;
|
bool & m_commutativity;
|
||||||
cg_comm_eq( bool & c): m_commutativity(c) {}
|
cg_comm_eq( bool & c): m_commutativity(c) {}
|
||||||
bool operator()(enode * n1, enode * n2) const {
|
bool operator()(enode * n1, enode * n2) const {
|
||||||
SASSERT(num_args(n1) == 2);
|
SASSERT(n1->num_args() == 2);
|
||||||
SASSERT(num_args(n2) == 2);
|
SASSERT(n2->num_args() == 2);
|
||||||
|
|
||||||
SASSERT(decl(n1) == decl(n2));
|
SASSERT(decl(n1) == decl(n2));
|
||||||
enode* c1_1 = get_root(n1, 0);
|
enode* c1_1 = get_root(n1, 0);
|
||||||
|
|
|
@ -753,8 +753,6 @@ namespace bv {
|
||||||
literal_vector eqs;
|
literal_vector eqs;
|
||||||
eqs.push_back(oeq);
|
eqs.push_back(oeq);
|
||||||
for (unsigned i = 0; i < sz; ++i) {
|
for (unsigned i = 0; i < sz; ++i) {
|
||||||
literal l1 = m_bits[v1][i];
|
|
||||||
literal l2 = m_bits[v2][i];
|
|
||||||
expr_ref e1(m), e2(m);
|
expr_ref e1(m), e2(m);
|
||||||
e1 = bv.mk_bit2bool(o1, i);
|
e1 = bv.mk_bit2bool(o1, i);
|
||||||
e2 = bv.mk_bit2bool(o2, i);
|
e2 = bv.mk_bit2bool(o2, i);
|
||||||
|
|
|
@ -399,8 +399,7 @@ namespace smt {
|
||||||
unsigned m_next_node_id;
|
unsigned m_next_node_id;
|
||||||
key2node m_uvars;
|
key2node m_uvars;
|
||||||
key2node m_A_f_is;
|
key2node m_A_f_is;
|
||||||
|
random_gen m_rand;
|
||||||
context * m_context;
|
|
||||||
|
|
||||||
// Mapping from sort to auxiliary constant.
|
// Mapping from sort to auxiliary constant.
|
||||||
// This auxiliary constant is used as a "witness" that is asserted as different from a
|
// This auxiliary constant is used as a "witness" that is asserted as different from a
|
||||||
|
@ -472,11 +471,12 @@ namespace smt {
|
||||||
m_bv(m),
|
m_bv(m),
|
||||||
m_array(m),
|
m_array(m),
|
||||||
m_next_node_id(0),
|
m_next_node_id(0),
|
||||||
m_context(nullptr),
|
|
||||||
m_ks(m),
|
m_ks(m),
|
||||||
m_model(nullptr),
|
m_model(nullptr),
|
||||||
m_eval_cache_range(m),
|
m_eval_cache_range(m),
|
||||||
m_new_constraints(nullptr) {
|
m_new_constraints(nullptr),
|
||||||
|
m_rand(static_cast<unsigned>(m.limit().count())) {
|
||||||
|
m.limit().inc();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~auf_solver() {
|
virtual ~auf_solver() {
|
||||||
|
@ -484,11 +484,6 @@ namespace smt {
|
||||||
reset_eval_cache();
|
reset_eval_cache();
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_context(context * ctx) {
|
|
||||||
SASSERT(m_context== nullptr);
|
|
||||||
m_context = ctx;
|
|
||||||
}
|
|
||||||
|
|
||||||
ast_manager & get_manager() const { return m; }
|
ast_manager & get_manager() const { return m; }
|
||||||
|
|
||||||
void reset() {
|
void reset() {
|
||||||
|
@ -1075,7 +1070,7 @@ namespace smt {
|
||||||
}
|
}
|
||||||
|
|
||||||
void mk_inverses() {
|
void mk_inverses() {
|
||||||
unsigned offset = m_context->get_random_value();
|
unsigned offset = m_rand();
|
||||||
for (unsigned i = m_root_nodes.size(); i-- > 0; ) {
|
for (unsigned i = m_root_nodes.size(); i-- > 0; ) {
|
||||||
node* n = m_root_nodes[(i + offset) % m_root_nodes.size()];
|
node* n = m_root_nodes[(i + offset) % m_root_nodes.size()];
|
||||||
SASSERT(n->is_root());
|
SASSERT(n->is_root());
|
||||||
|
@ -1121,7 +1116,10 @@ namespace smt {
|
||||||
The subclasses are defined in the .cpp file.
|
The subclasses are defined in the .cpp file.
|
||||||
*/
|
*/
|
||||||
class qinfo {
|
class qinfo {
|
||||||
|
protected:
|
||||||
|
ast_manager& m;
|
||||||
public:
|
public:
|
||||||
|
qinfo(ast_manager& m) :m(m) {}
|
||||||
virtual ~qinfo() {}
|
virtual ~qinfo() {}
|
||||||
virtual char const * get_kind() const = 0;
|
virtual char const * get_kind() const = 0;
|
||||||
virtual bool is_equal(qinfo const * qi) const = 0;
|
virtual bool is_equal(qinfo const * qi) const = 0;
|
||||||
|
@ -1144,7 +1142,7 @@ namespace smt {
|
||||||
unsigned m_arg_i;
|
unsigned m_arg_i;
|
||||||
unsigned m_var_j;
|
unsigned m_var_j;
|
||||||
public:
|
public:
|
||||||
f_var(func_decl * f, unsigned i, unsigned j):m_f(f), m_arg_i(i), m_var_j(j) {}
|
f_var(ast_manager& m, func_decl * f, unsigned i, unsigned j): qinfo(m), m_f(f), m_arg_i(i), m_var_j(j) {}
|
||||||
~f_var() override {}
|
~f_var() override {}
|
||||||
|
|
||||||
char const * get_kind() const override {
|
char const * get_kind() const override {
|
||||||
|
@ -1166,7 +1164,6 @@ namespace smt {
|
||||||
node * n1 = s.get_A_f_i(m_f, m_arg_i);
|
node * n1 = s.get_A_f_i(m_f, m_arg_i);
|
||||||
node * n2 = s.get_uvar(q, m_var_j);
|
node * n2 = s.get_uvar(q, m_var_j);
|
||||||
CTRACE("model_finder", n1->get_sort() != n2->get_sort(),
|
CTRACE("model_finder", n1->get_sort() != n2->get_sort(),
|
||||||
ast_manager & m = ctx->get_manager();
|
|
||||||
tout << "sort bug:\n" << mk_ismt2_pp(q->get_expr(), m) << "\n" << mk_ismt2_pp(q, m) << "\n";
|
tout << "sort bug:\n" << mk_ismt2_pp(q->get_expr(), m) << "\n" << mk_ismt2_pp(q, m) << "\n";
|
||||||
tout << "decl(0): " << q->get_decl_name(0) << "\n";
|
tout << "decl(0): " << q->get_decl_name(0) << "\n";
|
||||||
tout << "f: " << m_f->get_name() << " i: " << m_arg_i << "\n";
|
tout << "f: " << m_f->get_name() << " i: " << m_arg_i << "\n";
|
||||||
|
@ -1224,7 +1221,7 @@ namespace smt {
|
||||||
expr_ref m_offset;
|
expr_ref m_offset;
|
||||||
public:
|
public:
|
||||||
f_var_plus_offset(ast_manager & m, func_decl * f, unsigned i, unsigned j, expr * offset):
|
f_var_plus_offset(ast_manager & m, func_decl * f, unsigned i, unsigned j, expr * offset):
|
||||||
f_var(f, i, j),
|
f_var(m, f, i, j),
|
||||||
m_offset(offset, m) {
|
m_offset(offset, m) {
|
||||||
}
|
}
|
||||||
~f_var_plus_offset() override {}
|
~f_var_plus_offset() override {}
|
||||||
|
@ -1261,12 +1258,12 @@ namespace smt {
|
||||||
node * S_j = s.get_uvar(q, m_var_j);
|
node * S_j = s.get_uvar(q, m_var_j);
|
||||||
for (enode * n : ctx->enodes_of(m_f)) {
|
for (enode * n : ctx->enodes_of(m_f)) {
|
||||||
if (ctx->is_relevant(n)) {
|
if (ctx->is_relevant(n)) {
|
||||||
arith_rewriter arith_rw(ctx->get_manager());
|
arith_rewriter arith_rw(m);
|
||||||
bv_util bv(ctx->get_manager());
|
bv_util bv(m);
|
||||||
bv_rewriter bv_rw(ctx->get_manager());
|
bv_rewriter bv_rw(m);
|
||||||
enode * e_arg = n->get_arg(m_arg_i);
|
enode * e_arg = n->get_arg(m_arg_i);
|
||||||
expr * arg = e_arg->get_owner();
|
expr * arg = e_arg->get_owner();
|
||||||
expr_ref arg_minus_k(ctx->get_manager());
|
expr_ref arg_minus_k(m);
|
||||||
if (bv.is_bv(arg))
|
if (bv.is_bv(arg))
|
||||||
bv_rw.mk_sub(arg, m_offset, arg_minus_k);
|
bv_rw.mk_sub(arg, m_offset, arg_minus_k);
|
||||||
else
|
else
|
||||||
|
@ -1376,7 +1373,6 @@ namespace smt {
|
||||||
|
|
||||||
class select_var : public qinfo {
|
class select_var : public qinfo {
|
||||||
protected:
|
protected:
|
||||||
ast_manager & m;
|
|
||||||
array_util m_array;
|
array_util m_array;
|
||||||
app * m_select; // It must satisfy is_auf_select... see bool is_auf_select(expr * t) const
|
app * m_select; // It must satisfy is_auf_select... see bool is_auf_select(expr * t) const
|
||||||
unsigned m_arg_i;
|
unsigned m_arg_i;
|
||||||
|
@ -1393,7 +1389,7 @@ namespace smt {
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
select_var(ast_manager & m, app * s, unsigned i, unsigned j):m(m), m_array(m), m_select(s), m_arg_i(i), m_var_j(j) {}
|
select_var(ast_manager & m, app * s, unsigned i, unsigned j):qinfo(m), m_array(m), m_select(s), m_arg_i(i), m_var_j(j) {}
|
||||||
~select_var() override {}
|
~select_var() override {}
|
||||||
|
|
||||||
char const * get_kind() const override {
|
char const * get_kind() const override {
|
||||||
|
@ -1459,7 +1455,7 @@ namespace smt {
|
||||||
unsigned m_var_i;
|
unsigned m_var_i;
|
||||||
unsigned m_var_j;
|
unsigned m_var_j;
|
||||||
public:
|
public:
|
||||||
var_pair(unsigned i, unsigned j):m_var_i(i), m_var_j(j) {
|
var_pair(ast_manager& m, unsigned i, unsigned j): qinfo(m), m_var_i(i), m_var_j(j) {
|
||||||
if (m_var_i > m_var_j)
|
if (m_var_i > m_var_j)
|
||||||
std::swap(m_var_i, m_var_j);
|
std::swap(m_var_i, m_var_j);
|
||||||
}
|
}
|
||||||
|
@ -1484,7 +1480,7 @@ namespace smt {
|
||||||
|
|
||||||
class x_eq_y : public var_pair {
|
class x_eq_y : public var_pair {
|
||||||
public:
|
public:
|
||||||
x_eq_y(unsigned i, unsigned j):var_pair(i, j) {}
|
x_eq_y(ast_manager& m, unsigned i, unsigned j):var_pair(m, i, j) {}
|
||||||
char const * get_kind() const override { return "x_eq_y"; }
|
char const * get_kind() const override { return "x_eq_y"; }
|
||||||
|
|
||||||
void process_auf(quantifier * q, auf_solver & s, context * ctx) override {
|
void process_auf(quantifier * q, auf_solver & s, context * ctx) override {
|
||||||
|
@ -1498,7 +1494,7 @@ namespace smt {
|
||||||
|
|
||||||
class x_neq_y : public var_pair {
|
class x_neq_y : public var_pair {
|
||||||
public:
|
public:
|
||||||
x_neq_y(unsigned i, unsigned j):var_pair(i, j) {}
|
x_neq_y(ast_manager& m, unsigned i, unsigned j):var_pair(m, i, j) {}
|
||||||
char const * get_kind() const override { return "x_neq_y"; }
|
char const * get_kind() const override { return "x_neq_y"; }
|
||||||
|
|
||||||
void process_auf(quantifier * q, auf_solver & s, context * ctx) override {
|
void process_auf(quantifier * q, auf_solver & s, context * ctx) override {
|
||||||
|
@ -1510,7 +1506,7 @@ namespace smt {
|
||||||
|
|
||||||
class x_leq_y : public var_pair {
|
class x_leq_y : public var_pair {
|
||||||
public:
|
public:
|
||||||
x_leq_y(unsigned i, unsigned j):var_pair(i, j) {}
|
x_leq_y(ast_manager& m, unsigned i, unsigned j):var_pair(m, i, j) {}
|
||||||
char const * get_kind() const override { return "x_leq_y"; }
|
char const * get_kind() const override { return "x_leq_y"; }
|
||||||
|
|
||||||
void process_auf(quantifier * q, auf_solver & s, context * ctx) override {
|
void process_auf(quantifier * q, auf_solver & s, context * ctx) override {
|
||||||
|
@ -1524,7 +1520,7 @@ namespace smt {
|
||||||
// signed bit-vector comparison
|
// signed bit-vector comparison
|
||||||
class x_sleq_y : public x_leq_y {
|
class x_sleq_y : public x_leq_y {
|
||||||
public:
|
public:
|
||||||
x_sleq_y(unsigned i, unsigned j):x_leq_y(i, j) {}
|
x_sleq_y(ast_manager& m, unsigned i, unsigned j):x_leq_y(m, i, j) {}
|
||||||
char const * get_kind() const override { return "x_sleq_y"; }
|
char const * get_kind() const override { return "x_sleq_y"; }
|
||||||
|
|
||||||
void process_auf(quantifier * q, auf_solver & s, context * ctx) override {
|
void process_auf(quantifier * q, auf_solver & s, context * ctx) override {
|
||||||
|
@ -1542,6 +1538,7 @@ namespace smt {
|
||||||
expr_ref m_t;
|
expr_ref m_t;
|
||||||
public:
|
public:
|
||||||
var_expr_pair(ast_manager & m, unsigned i, expr * t):
|
var_expr_pair(ast_manager & m, unsigned i, expr * t):
|
||||||
|
qinfo(m),
|
||||||
m_var_i(i), m_t(t, m) {}
|
m_var_i(i), m_t(t, m) {}
|
||||||
~var_expr_pair() override {}
|
~var_expr_pair() override {}
|
||||||
|
|
||||||
|
@ -1553,7 +1550,7 @@ namespace smt {
|
||||||
}
|
}
|
||||||
|
|
||||||
void display(std::ostream & out) const override {
|
void display(std::ostream & out) const override {
|
||||||
out << "(" << get_kind() << ":v!" << m_var_i << ":" << mk_bounded_pp(m_t.get(), m_t.get_manager()) << ")";
|
out << "(" << get_kind() << ":v!" << m_var_i << ":" << mk_bounded_pp(m_t.get(), m) << ")";
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1570,7 +1567,6 @@ namespace smt {
|
||||||
|
|
||||||
void populate_inst_sets(quantifier * q, auf_solver & slv, context * ctx) override {
|
void populate_inst_sets(quantifier * q, auf_solver & slv, context * ctx) override {
|
||||||
unsigned num_vars = q->get_num_decls();
|
unsigned num_vars = q->get_num_decls();
|
||||||
ast_manager & m = ctx->get_manager();
|
|
||||||
sort * s = q->get_decl_sort(num_vars - m_var_i - 1);
|
sort * s = q->get_decl_sort(num_vars - m_var_i - 1);
|
||||||
if (m.is_uninterp(s)) {
|
if (m.is_uninterp(s)) {
|
||||||
// For uninterpreted sorts, we add all terms in the context.
|
// For uninterpreted sorts, we add all terms in the context.
|
||||||
|
@ -2101,7 +2097,7 @@ namespace smt {
|
||||||
expr * arg = t->get_arg(i);
|
expr * arg = t->get_arg(i);
|
||||||
if (is_var(arg)) {
|
if (is_var(arg)) {
|
||||||
SASSERT(t->get_decl()->get_domain(i) == to_var(arg)->get_sort());
|
SASSERT(t->get_decl()->get_domain(i) == to_var(arg)->get_sort());
|
||||||
insert_qinfo(alloc(f_var, t->get_decl(), i, to_var(arg)->get_idx()));
|
insert_qinfo(alloc(f_var, m, t->get_decl(), i, to_var(arg)->get_idx()));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2231,17 +2227,17 @@ namespace smt {
|
||||||
}
|
}
|
||||||
else if (is_x_eq_y_atom(atom, v1, v2)) {
|
else if (is_x_eq_y_atom(atom, v1, v2)) {
|
||||||
if (sign)
|
if (sign)
|
||||||
insert_qinfo(alloc(x_neq_y, v1->get_idx(), v2->get_idx()));
|
insert_qinfo(alloc(x_neq_y, m, v1->get_idx(), v2->get_idx()));
|
||||||
else {
|
else {
|
||||||
m_info->m_has_x_eq_y = true; // this atom is in the fringe of AUF
|
m_info->m_has_x_eq_y = true; // this atom is in the fringe of AUF
|
||||||
insert_qinfo(alloc(x_eq_y, v1->get_idx(), v2->get_idx()));
|
insert_qinfo(alloc(x_eq_y, m, v1->get_idx(), v2->get_idx()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (sign && is_x_gle_y_atom(atom, v1, v2)) {
|
else if (sign && is_x_gle_y_atom(atom, v1, v2)) {
|
||||||
if (is_signed_le(atom))
|
if (is_signed_le(atom))
|
||||||
insert_qinfo(alloc(x_sleq_y, v1->get_idx(), v2->get_idx()));
|
insert_qinfo(alloc(x_sleq_y, m, v1->get_idx(), v2->get_idx()));
|
||||||
else
|
else
|
||||||
insert_qinfo(alloc(x_leq_y, v1->get_idx(), v2->get_idx()));
|
insert_qinfo(alloc(x_leq_y, m, v1->get_idx(), v2->get_idx()));
|
||||||
}
|
}
|
||||||
else if (is_x_gle_t_atom(atom, sign, v, t)) {
|
else if (is_x_gle_t_atom(atom, sign, v, t)) {
|
||||||
insert_qinfo(alloc(x_gle_t, m, v->get_idx(), t));
|
insert_qinfo(alloc(x_gle_t, m, v->get_idx(), t));
|
||||||
|
@ -3191,9 +3187,8 @@ namespace smt {
|
||||||
}
|
}
|
||||||
|
|
||||||
void model_finder::set_context(context * ctx) {
|
void model_finder::set_context(context * ctx) {
|
||||||
SASSERT(m_context == 0);
|
SASSERT(m_context == nullptr);
|
||||||
m_context = ctx;
|
m_context = ctx;
|
||||||
m_auf_solver->set_context(ctx);
|
|
||||||
m_nm_solver->set_params(ctx->get_fparams());
|
m_nm_solver->set_params(ctx->get_fparams());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue