mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 20:05:51 +00:00
57 lines
1.2 KiB
C++
57 lines
1.2 KiB
C++
/*++
|
|
Copyright (c) 2020 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
q_clause.cpp
|
|
|
|
Abstract:
|
|
|
|
Clause and literals
|
|
|
|
Author:
|
|
|
|
Nikolaj Bjorner (nbjorner) 2021-01-24
|
|
|
|
--*/
|
|
|
|
#include "sat/smt/q_clause.h"
|
|
|
|
|
|
namespace q {
|
|
|
|
std::ostream& lit::display(std::ostream& out) const {
|
|
ast_manager& m = lhs.m();
|
|
if (m.is_true(rhs) && !sign)
|
|
return out << lhs;
|
|
if (m.is_false(rhs) && !sign)
|
|
return out << "(not " << lhs << ")";
|
|
return
|
|
out << mk_bounded_pp(lhs, m, 2)
|
|
<< (sign ? " != " : " == ")
|
|
<< mk_bounded_pp(rhs, m, 2);
|
|
}
|
|
|
|
std::ostream& binding::display(euf::solver& ctx, std::ostream& out) const {
|
|
for (unsigned i = 0; i < size(); ++i)
|
|
out << ctx.bpp((*this)[i]) << " ";
|
|
return out;
|
|
}
|
|
|
|
std::ostream& clause::display(euf::solver& ctx, std::ostream& out) const {
|
|
out << "clause:\n";
|
|
for (auto const& lit : m_lits)
|
|
lit.display(out) << "\n";
|
|
binding* b = m_bindings;
|
|
if (!b)
|
|
return out;
|
|
do {
|
|
b->display(ctx, out) << "\n";
|
|
b = b->next();
|
|
}
|
|
while (b != m_bindings);
|
|
return out;
|
|
}
|
|
|
|
|
|
}
|