3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-14 18:06:15 +00:00

Remove not_op

This commit is contained in:
Jakob Rath 2022-11-30 11:47:00 +01:00
parent 7febcd47ec
commit 032e7e0337
3 changed files with 12 additions and 10 deletions

View file

@ -48,7 +48,6 @@ namespace polysat {
// The following can currently not be used as standalone constraints // The following can currently not be used as standalone constraints
SASSERT(c != code::or_op); SASSERT(c != code::or_op);
SASSERT(c != code::xor_op); SASSERT(c != code::xor_op);
SASSERT(c != code::not_op);
} }
lbool op_constraint::eval() const { lbool op_constraint::eval() const {
@ -74,9 +73,9 @@ namespace polysat {
std::ostream& op_constraint::display(std::ostream& out, lbool status) const { std::ostream& op_constraint::display(std::ostream& out, lbool status) const {
switch (status) { switch (status) {
case l_true: return display(out); case l_true: return display(out, "==");
case l_false: return display(out << "~"); case l_false: return display(out, "!=");
default: return display(out << "?"); default: return display(out, "?=");
} }
} }
@ -102,10 +101,11 @@ namespace polysat {
} }
std::ostream& op_constraint::display(std::ostream& out) const { std::ostream& op_constraint::display(std::ostream& out) const {
if (m_op == code::not_op) return display(out, l_true);
return out << r() << " == ~" << p(); }
else
return out << r() << " == " << p() << " " << m_op << " " << q(); std::ostream& op_constraint::display(std::ostream& out, char const* eq) const {
return out << r() << " " << eq << " " << p() << " " << m_op << " " << q();
} }
/** /**

View file

@ -28,7 +28,7 @@ namespace polysat {
class op_constraint final : public constraint { class op_constraint final : public constraint {
public: public:
enum class code { lshr_op, ashr_op, shl_op, and_op, or_op, xor_op, not_op }; enum class code { lshr_op, ashr_op, shl_op, and_op, or_op, xor_op };
protected: protected:
friend class constraint_manager; friend class constraint_manager;
@ -49,6 +49,8 @@ namespace polysat {
void narrow_and(solver& s); void narrow_and(solver& s);
static lbool eval_and(pdd const& p, pdd const& q, pdd const& r); static lbool eval_and(pdd const& p, pdd const& q, pdd const& r);
std::ostream& display(std::ostream& out, char const* eq) const;
public: public:
~op_constraint() override {} ~op_constraint() override {}
pdd const& p() const { return m_p; } pdd const& p() const { return m_p; }

View file

@ -162,7 +162,7 @@ namespace polysat {
} }
std::ostream& ule_constraint::display(std::ostream& out) const { std::ostream& ule_constraint::display(std::ostream& out) const {
return out << m_lhs << (is_eq() ? " == " : " <= ") << m_rhs; return display(out, l_true, m_lhs, m_rhs);
} }
void ule_constraint::narrow(solver& s, bool is_positive, bool first) { void ule_constraint::narrow(solver& s, bool is_positive, bool first) {