mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 00:55:31 +00:00
hide new datatype plugin
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
09386e43e3
commit
a3dba5b2f9
24 changed files with 211 additions and 191 deletions
|
@ -262,7 +262,7 @@ namespace qe {
|
|||
}
|
||||
func_decl* c = a->get_decl();
|
||||
func_decl* r = m_util.get_constructor_recognizer(c);
|
||||
ptr_vector<func_decl> const & acc = *m_util.get_constructor_accessors(c);
|
||||
ptr_vector<func_decl> const & acc = m_util.get_constructor_accessors(c);
|
||||
SASSERT(acc.size() == a->get_num_args());
|
||||
//
|
||||
// It suffices to solve just the first available equality.
|
||||
|
@ -379,7 +379,7 @@ namespace qe {
|
|||
return false;
|
||||
}
|
||||
func_decl* c = l->get_decl();
|
||||
ptr_vector<func_decl> const& acc = *m_util.get_constructor_accessors(c);
|
||||
ptr_vector<func_decl> const& acc = m_util.get_constructor_accessors(c);
|
||||
func_decl* rec = m_util.get_constructor_recognizer(c);
|
||||
expr_ref_vector conj(m);
|
||||
conj.push_back(m.mk_app(rec, r));
|
||||
|
@ -626,7 +626,7 @@ namespace qe {
|
|||
// If 'x' does not yet have a recognizer, then branch according to recognizers.
|
||||
//
|
||||
if (!has_recognizer(x, fml, r, c)) {
|
||||
c = (*m_datatype_util.get_datatype_constructors(s))[vl.get_unsigned()];
|
||||
c = m_datatype_util.get_datatype_constructors(s)[vl.get_unsigned()];
|
||||
r = m_datatype_util.get_constructor_recognizer(c);
|
||||
app* is_c = m.mk_app(r, x);
|
||||
// assert v => r(x)
|
||||
|
@ -673,7 +673,7 @@ namespace qe {
|
|||
// Introduce auxiliary variable to eliminate.
|
||||
//
|
||||
if (!has_recognizer(x, fml, r, c)) {
|
||||
c = (*m_datatype_util.get_datatype_constructors(s))[vl.get_unsigned()];
|
||||
c = m_datatype_util.get_datatype_constructors(s)[vl.get_unsigned()];
|
||||
r = m_datatype_util.get_constructor_recognizer(c);
|
||||
app* is_c = m.mk_app(r, x);
|
||||
fml = m.mk_and(is_c, fml);
|
||||
|
@ -774,7 +774,7 @@ namespace qe {
|
|||
return;
|
||||
}
|
||||
|
||||
c = (*m_datatype_util.get_datatype_constructors(s))[vl.get_unsigned()];
|
||||
c = m_datatype_util.get_datatype_constructors(s)[vl.get_unsigned()];
|
||||
r = m_datatype_util.get_constructor_recognizer(c);
|
||||
app* is_c = m.mk_app(r, x);
|
||||
|
||||
|
@ -794,7 +794,7 @@ namespace qe {
|
|||
else {
|
||||
SASSERT(vl.is_unsigned());
|
||||
SASSERT(vl.get_unsigned() < m_datatype_util.get_datatype_num_constructors(s));
|
||||
c = (*m_datatype_util.get_datatype_constructors(s))[vl.get_unsigned()];
|
||||
c = m_datatype_util.get_datatype_constructors(s)[vl.get_unsigned()];
|
||||
}
|
||||
subst_constructor(x, c, fml, def);
|
||||
}
|
||||
|
|
|
@ -75,7 +75,7 @@ namespace qe {
|
|||
app_ref arg(m);
|
||||
SASSERT(dt.is_constructor(m_val));
|
||||
func_decl* f = m_val->get_decl();
|
||||
ptr_vector<func_decl> const& acc = *dt.get_constructor_accessors(f);
|
||||
ptr_vector<func_decl> const& acc = dt.get_constructor_accessors(f);
|
||||
for (unsigned i = 0; i < acc.size(); ++i) {
|
||||
arg = m.mk_fresh_const(acc[i]->get_name().str().c_str(), acc[i]->get_range());
|
||||
model.register_decl(arg->get_decl(), m_val->get_arg(i));
|
||||
|
@ -152,7 +152,7 @@ namespace qe {
|
|||
}
|
||||
func_decl* c = a->get_decl();
|
||||
func_decl* rec = dt.get_constructor_recognizer(c);
|
||||
ptr_vector<func_decl> const & acc = *dt.get_constructor_accessors(c);
|
||||
ptr_vector<func_decl> const & acc = dt.get_constructor_accessors(c);
|
||||
SASSERT(acc.size() == a->get_num_args());
|
||||
//
|
||||
// It suffices to solve just the first available equality.
|
||||
|
@ -230,7 +230,7 @@ namespace qe {
|
|||
return false;
|
||||
}
|
||||
func_decl* c = to_app(l)->get_decl();
|
||||
ptr_vector<func_decl> const& acc = *dt.get_constructor_accessors(c);
|
||||
ptr_vector<func_decl> const& acc = dt.get_constructor_accessors(c);
|
||||
if (!is_app_of(r, c)) {
|
||||
lits.push_back(m.mk_app(dt.get_constructor_recognizer(c), r));
|
||||
}
|
||||
|
|
|
@ -671,7 +671,7 @@ namespace eq {
|
|||
else {
|
||||
func_decl* rec = dt.get_constructor_recognizer(d);
|
||||
conjs.push_back(m.mk_app(rec, r));
|
||||
ptr_vector<func_decl> const& acc = *dt.get_constructor_accessors(d);
|
||||
ptr_vector<func_decl> const& acc = dt.get_constructor_accessors(d);
|
||||
for (unsigned i = 0; i < acc.size(); ++i) {
|
||||
conjs.push_back(m.mk_eq(c->get_arg(i), m.mk_app(acc[i], r)));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue