Skip to content

Commit

Permalink
move drat functionality into euf
Browse files Browse the repository at this point in the history
  • Loading branch information
NikolajBjorner committed Aug 26, 2022
1 parent 1ffbe23 commit 458f417
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 39 deletions.
25 changes: 0 additions & 25 deletions src/sat/sat_drat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -255,31 +255,6 @@ namespace sat {
}
}

void drat::bool_def(bool_var v, unsigned n) {
if (m_out)
(*m_out) << "b " << v << " " << n << " 0\n";
}

void drat::def_begin(char id, unsigned n, std::string const& name) {
if (m_out)
(*m_out) << id << " " << n << " " << name;
}

void drat::def_add_arg(unsigned arg) {
if (m_out)
(*m_out) << " " << arg;
}

void drat::def_end() {
if (m_out)
(*m_out) << " 0\n";
}

void drat::log_adhoc(std::function<void(std::ostream&)>& fn) {
if (m_out)
fn(*m_out);
}

void drat::append(clause& c, status st) {
TRACE("sat_drat", pp(tout, st) << " " << c << "\n";);
for (literal lit : c) declare(lit);
Expand Down
7 changes: 1 addition & 6 deletions src/sat/sat_drat.h
Original file line number Diff line number Diff line change
Expand Up @@ -153,13 +153,8 @@ namespace sat {
// associate AST node id with Boolean variable v

// declare AST node n with 'name' and arguments arg
void def_begin(char id, unsigned n, std::string const& name);
void def_add_arg(unsigned arg);
void def_end();
void bool_def(bool_var v, unsigned n);
std::ostream* out() { return m_out; }

// ad-hoc logging until a format is developed
void log_adhoc(std::function<void(std::ostream&)>& fn);

bool is_cleaned(clause& c) const;
void del(literal l);
Expand Down
16 changes: 12 additions & 4 deletions src/sat/smt/euf_proof.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,19 +30,27 @@ namespace euf {
}

void solver::def_add_arg(unsigned arg) {
get_drat().def_add_arg(arg);
auto* out = get_drat().out();
if (out)
(*out) << " " << arg;
}

void solver::def_end() {
get_drat().def_end();
auto* out = get_drat().out();
if (out)
(*out) << " 0\n";
}

void solver::def_begin(char id, unsigned n, std::string const& name) {
get_drat().def_begin(id, n, name);
auto* out = get_drat().out();
if (out)
(*out) << id << " " << n << " " << name;
}

void solver::bool_def(bool_var v, unsigned n) {
get_drat().bool_def(v, n);
auto* out = get_drat().out();
if (out)
(*out) << "b " << v << " " << n << " 0\n";
}


Expand Down
7 changes: 3 additions & 4 deletions src/sat/smt/pb_solver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1430,10 +1430,9 @@ namespace pb {
IF_VERBOSE(0, verbose_stream() << *c << "\n");
VERIFY(c->well_formed());
if (m_solver && m_solver->get_config().m_drat) {
std::function<void(std::ostream& out)> fn = [&](std::ostream& out) {
out << "c ba constraint " << *c << " 0\n";
};
m_solver->get_drat().log_adhoc(fn);
auto * out = s().get_drat().out();
if (out)
*out << "c ba constraint " << *c << " 0\n";
}
}

Expand Down

0 comments on commit 458f417

Please sign in to comment.