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

move sorting of nex expressions to nex_creator

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
This commit is contained in:
Lev Nachmanson 2019-09-27 17:55:33 -07:00
parent 8cd9989dcf
commit 090851559b
9 changed files with 134 additions and 429 deletions

View file

@ -73,6 +73,8 @@ void test_cn_on_expr(nex_sum *t, cross_nested& cn) {
cn.run(t);
}
lt_on_vars lpvar_lt() { return [](lpvar a, lpvar b) { return a < b; };}
void test_simplify() {
cross_nested cn(
[](const nex* n) {
@ -80,9 +82,7 @@ void test_simplify() {
return false;
} ,
[](unsigned) { return false; },
[]{ return 1; },
less_than_nex_standard
);
[]{ return 1; }, lpvar_lt());
enable_trace("nla_cn");
enable_trace("nla_cn_details");
nex_creator & r = cn.get_nex_creator();
@ -104,11 +104,11 @@ void test_simplify() {
nex * e = r.mk_sum(a, r.mk_sum(b, m));
TRACE("nla_cn", tout << "e = " << *e << "\n";);
std::function<nex_scalar*()> mks = [&r] {return r.mk_scalar(rational(1)); };
e->simplify(&e, mks);
e->simplify(&e, lpvar_lt(), mks);
TRACE("nla_cn", tout << "simplified e = " << *e << "\n";);
nex * l = r.mk_sum(e, r.mk_mul(r.mk_scalar(rational(3)), r.clone(e)));
TRACE("nla_cn", tout << "sum l = " << *l << "\n";);
l->simplify(&l, mks);
l->simplify(&l, lpvar_lt(), mks);
TRACE("nla_cn", tout << "simplified sum l = " << *l << "\n";);
}
@ -119,9 +119,7 @@ void test_cn() {
return false;
} ,
[](unsigned) { return false; },
[]{ return 1; },
less_than_nex_standard
);
[]{ return 1; }, lpvar_lt());
enable_trace("nla_cn");
enable_trace("nla_cn_details");
nex_var* a = cn.get_nex_creator().mk_var(0);
@ -147,8 +145,8 @@ void test_cn() {
nex* _6aad = cn.get_nex_creator().mk_mul(cn.get_nex_creator().mk_scalar(rational(6)), a, a, d);
#ifdef Z3DEBUG
nex * clone = cn.get_nex_creator().clone(cn.get_nex_creator().mk_sum(_6aad, abcd, aaccd, add, eae, eac, ed));
clone->simplify(&clone,[&cn] {return cn.get_nex_creator().mk_scalar(rational(1));});
SASSERT(clone->is_simplified());
clone->simplify(&clone, lpvar_lt(), [&cn] {return cn.get_nex_creator().mk_scalar(rational(1));});
SASSERT(clone->is_simplified(lpvar_lt()));
TRACE("nla_cn", tout << "clone = " << *clone << "\n";);
#endif
// test_cn_on_expr(cn.get_nex_creator().mk_sum(aad, abcd, aaccd, add, eae, eac, ed), cn);