mirror of
https://github.com/Z3Prover/z3
synced 2026-07-04 22:36:10 +00:00
bug fixes and cleanup in projection functions
spacer would drop variables of sorts not handled by main loop. - projection with witness needs to disable qel style preprocessing to ensure witnesses are returned. - add euf plugin to handle uninterpreted sorts (and then uninterpreted functions)
This commit is contained in:
parent
0cf2b5f515
commit
eee96ec312
12 changed files with 249 additions and 108 deletions
|
|
@ -32,10 +32,10 @@ Notes:
|
|||
#include "util/plugin_manager.h"
|
||||
|
||||
namespace mbp {
|
||||
namespace is_ground_ns {
|
||||
struct proc;
|
||||
struct found;
|
||||
} // namespace is_ground_ns
|
||||
namespace is_ground_ns {
|
||||
struct proc;
|
||||
struct found;
|
||||
} // namespace is_ground_ns
|
||||
class term;
|
||||
|
||||
class term_graph {
|
||||
|
|
@ -246,16 +246,16 @@ private:
|
|||
bool makes_cycle(term *t);
|
||||
};
|
||||
|
||||
namespace is_ground_ns {
|
||||
struct found {};
|
||||
struct proc {
|
||||
term_graph::is_variable_proc &m_is_var;
|
||||
proc(term_graph::is_variable_proc &is_var) : m_is_var(is_var) {}
|
||||
void operator()(var *n) const {}
|
||||
void operator()(app const *n) const {
|
||||
if (m_is_var.contains(n->get_decl())) throw found();
|
||||
}
|
||||
void operator()(quantifier *n) const {}
|
||||
};
|
||||
} // namespace is_ground_ns
|
||||
namespace is_ground_ns {
|
||||
struct found {};
|
||||
struct proc {
|
||||
term_graph::is_variable_proc &m_is_var;
|
||||
proc(term_graph::is_variable_proc &is_var) : m_is_var(is_var) {}
|
||||
void operator()(var *n) const {}
|
||||
void operator()(app const *n) const {
|
||||
if (m_is_var.contains(n->get_decl())) throw found();
|
||||
}
|
||||
void operator()(quantifier *n) const {}
|
||||
};
|
||||
} // namespace is_ground_ns
|
||||
} // namespace mbp
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue