3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-05-05 23:05:46 +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

@ -18,11 +18,13 @@ Author:
#pragma once
#include <iostream>
#include <utility>
#include "util/ref.h"
#include "util/util.h"
template <typename T>
struct show_deref_t {
T* ptr;
T const* ptr;
};
template <typename T>
@ -38,7 +40,22 @@ show_deref_t<T> show_deref(T* ptr) {
return show_deref_t<T>{ptr};
}
template <typename T>
show_deref_t<T> show_deref(scoped_ptr<T> const& ptr) {
// template <typename T>
// show_deref_t<T> show_deref(ref<T> const& ptr) {
// return show_deref_t<T>{ptr.get()};
// }
// template <typename T>
// show_deref_t<T> show_deref(scoped_ptr<T> const& ptr) {
// return show_deref_t<T>{ptr.get()};
// }
// template <typename Ptr, typename T = decltype(&*std::declval<Ptr>())>
// show_deref_t<T> show_deref(Ptr const& ptr) {
// return show_deref_t<T>{&*ptr};
// }
template <typename Ptr, typename T = typename std::remove_pointer<decltype(std::declval<Ptr>().get())>::type>
show_deref_t<T> show_deref(Ptr const& ptr) {
return show_deref_t<T>{ptr.get()};
}