mirror of
https://github.com/Z3Prover/z3
synced 2025-04-22 16:45:31 +00:00
fix compiler errors for gcc
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
5f4ca8c6fc
commit
706e6291e3
5 changed files with 15 additions and 21 deletions
|
@ -24,28 +24,28 @@ namespace sls {
|
|||
bool arith_base<num_t>::ineq::is_true() const {
|
||||
switch (m_op) {
|
||||
case ineq_kind::LE:
|
||||
return m_args_value + m_coeff <= 0;
|
||||
return m_args_value + this->m_coeff <= 0;
|
||||
case ineq_kind::EQ:
|
||||
return m_args_value + m_coeff == 0;
|
||||
return m_args_value + this->m_coeff == 0;
|
||||
default:
|
||||
return m_args_value + m_coeff < 0;
|
||||
return m_args_value + this->m_coeff < 0;
|
||||
}
|
||||
}
|
||||
|
||||
template<typename num_t>
|
||||
std::ostream& arith_base<num_t>::ineq::display(std::ostream& out) const {
|
||||
bool first = true;
|
||||
for (auto const& [c, v] : m_args)
|
||||
for (auto const& [c, v] : this->m_args)
|
||||
out << (first ? "" : " + ") << c << " * v" << v, first = false;
|
||||
if (m_coeff != 0)
|
||||
out << " + " << m_coeff;
|
||||
if (this->m_coeff != 0)
|
||||
out << " + " << this->m_coeff;
|
||||
switch (m_op) {
|
||||
case ineq_kind::LE:
|
||||
return out << " <= " << 0 << "(" << m_args_value + m_coeff << ")";
|
||||
return out << " <= " << 0 << "(" << m_args_value + this->m_coeff << ")";
|
||||
case ineq_kind::EQ:
|
||||
return out << " == " << 0 << "(" << m_args_value + m_coeff << ")";
|
||||
return out << " == " << 0 << "(" << m_args_value + this->m_coeff << ")";
|
||||
default:
|
||||
return out << " < " << 0 << "(" << m_args_value + m_coeff << ")";
|
||||
return out << " < " << 0 << "(" << m_args_value + this->m_coeff << ")";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -486,7 +486,7 @@ namespace sls {
|
|||
typename arith_base<num_t>::var_t arith_base<num_t>::mk_op(arith_op_kind k, expr* e, expr* x, expr* y) {
|
||||
auto v = mk_var(e);
|
||||
auto w = mk_term(x);
|
||||
auto u = mk_term(y);
|
||||
// auto u = mk_term(y);
|
||||
unsigned idx = m_ops.size();
|
||||
num_t val;
|
||||
switch (k) {
|
||||
|
@ -533,7 +533,7 @@ namespace sls {
|
|||
v = mk_var(e);
|
||||
auto idx = m_adds.size();
|
||||
num_t sum(t.m_coeff);
|
||||
m_adds.push_back({ t.m_args, t.m_coeff, v });
|
||||
m_adds.push_back({ { t.m_args, t.m_coeff }, v });
|
||||
for (auto const& [c, w] : t.m_args)
|
||||
m_vars[w].m_adds.push_back(idx), sum += c * value(w);
|
||||
m_vars[v].m_def_idx = idx;
|
||||
|
@ -829,7 +829,6 @@ namespace sls {
|
|||
|
||||
template<typename num_t>
|
||||
void arith_base<num_t>::repair_rem(op_def const& od) {
|
||||
auto val = value(od.m_var);
|
||||
auto v1 = value(od.m_arg1);
|
||||
auto v2 = value(od.m_arg2);
|
||||
if (v2 == 0) {
|
||||
|
@ -874,7 +873,6 @@ namespace sls {
|
|||
|
||||
template<typename num_t>
|
||||
void arith_base<num_t>::repair_power(op_def const& od) {
|
||||
auto val = value(od.m_var);
|
||||
auto v1 = value(od.m_arg1);
|
||||
auto v2 = value(od.m_arg2);
|
||||
if (v1 == 0 && v2 == 0) {
|
||||
|
@ -916,7 +914,6 @@ namespace sls {
|
|||
|
||||
template<typename num_t>
|
||||
void arith_base<num_t>::repair_idiv(op_def const& od) {
|
||||
auto val = value(od.m_var);
|
||||
auto v1 = value(od.m_arg1);
|
||||
auto v2 = value(od.m_arg2);
|
||||
IF_VERBOSE(0, verbose_stream() << "todo repair div");
|
||||
|
@ -926,7 +923,6 @@ namespace sls {
|
|||
|
||||
template<typename num_t>
|
||||
void arith_base<num_t>::repair_div(op_def const& od) {
|
||||
auto val = value(od.m_var);
|
||||
auto v1 = value(od.m_arg1);
|
||||
auto v2 = value(od.m_arg2);
|
||||
IF_VERBOSE(0, verbose_stream() << "todo repair /");
|
||||
|
@ -954,7 +950,7 @@ namespace sls {
|
|||
if (!cm(*ineq, x, coeff, new_value))
|
||||
continue;
|
||||
double result = 0;
|
||||
auto old_value = m_vars[x].m_value;
|
||||
// auto old_value = m_vars[x].m_value;
|
||||
for (auto const& [coeff, bv] : m_vars[x].m_bool_vars) {
|
||||
result += ctx.reward(bv);
|
||||
#if 0
|
||||
|
|
|
@ -56,6 +56,7 @@ namespace sls {
|
|||
|
||||
class sat_solver_context {
|
||||
public:
|
||||
virtual ~sat_solver_context() {}
|
||||
virtual vector<sat::clause_info> const& clauses() const = 0;
|
||||
virtual sat::clause_info const& get_clause(unsigned idx) const = 0;
|
||||
virtual ptr_iterator<unsigned> get_use_list(sat::literal lit) = 0;
|
||||
|
|
|
@ -15,7 +15,6 @@ Author:
|
|||
|
||||
--*/
|
||||
|
||||
#pragma once
|
||||
#include "ast/sls/sls_context.h"
|
||||
#include "ast/sls/sat_ddfw.h"
|
||||
#include "ast/sls/sls_smt_solver.h"
|
||||
|
|
|
@ -68,14 +68,13 @@ namespace sls {
|
|||
}
|
||||
|
||||
class solver::smt_plugin : public sat::local_search_plugin, public sls::sat_solver_context {
|
||||
ast_manager& m;
|
||||
sat::ddfw* m_ddfw;
|
||||
solver& s;
|
||||
sat::ddfw* m_ddfw;
|
||||
sls::context m_context;
|
||||
bool m_new_clause_added = false;
|
||||
public:
|
||||
smt_plugin(ast_manager& m, solver& s, sat::ddfw* d) :
|
||||
m(m), s(s), m_ddfw(d), m_context(m, *this) {}
|
||||
s(s), m_ddfw(d), m_context(m, *this) {}
|
||||
|
||||
void init_search() override {}
|
||||
|
||||
|
|
|
@ -110,7 +110,6 @@ static void track_clauses(sat::solver const& src,
|
|||
dst.mk_var(false, true);
|
||||
}
|
||||
sat::literal_vector lits;
|
||||
sat::literal lit;
|
||||
sat::clause * const * it = src.begin_clauses();
|
||||
sat::clause * const * end = src.end_clauses();
|
||||
svector<sat::solver::bin_clause> bin_clauses;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue