3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 17:15:31 +00:00

Polysat: disjunctive lemmas (#5311)

* Add macro to disable linear solver for development

* Move new_* and add_* to header

* Add ref_vector_core::push_back(ref<T>&&)

* Attempt to simplify lifetime handling

* Make operator bool() explicit

* clause improvements

* display boolean assignment

* clause::resolve

* bug fixes

* more fixes

* final case of backtrack
This commit is contained in:
Jakob Rath 2021-05-28 22:53:08 +02:00 committed by GitHub
parent 5fd3ef6580
commit 8757f04d20
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 524 additions and 294 deletions

View file

@ -66,10 +66,14 @@ public:
return m_ptr;
}
operator bool() const {
explicit operator bool() const {
return m_ptr != nullptr;
}
bool operator!() const {
return m_ptr == nullptr;
}
const T & operator*() const {
return *m_ptr;
}

View file

@ -20,6 +20,7 @@ Revision History:
#include "util/vector.h"
#include "util/obj_ref.h"
#include "util/ref.h"
/**
\brief Vector of smart pointers.
@ -113,6 +114,11 @@ public:
return *this;
}
ref_vector_core& push_back(ref<T>&& n) {
m_nodes.push_back(n.detach());
return *this;
}
void pop_back() {
SASSERT(!m_nodes.empty());
T * n = m_nodes.back();