mirror of
https://github.com/Z3Prover/z3
synced 2025-08-12 06:00:53 +00:00
try zero_ext
This commit is contained in:
parent
0b17a14c83
commit
6dfc9dd936
6 changed files with 43 additions and 2 deletions
|
@ -93,7 +93,7 @@ namespace bv {
|
|||
case OP_EXTRACT: polysat_extract(a); break;
|
||||
case OP_CONCAT: polysat_concat(a); break;
|
||||
|
||||
case OP_ZERO_EXT:
|
||||
case OP_ZERO_EXT: polysat_zero_ext(a); break;
|
||||
case OP_SIGN_EXT:
|
||||
|
||||
// polysat::solver should also support at least:
|
||||
|
@ -197,6 +197,13 @@ namespace bv {
|
|||
polysat_set(e, p);
|
||||
}
|
||||
|
||||
void solver::polysat_zero_ext(app* e) {
|
||||
pdd const arg = expr2pdd(e->get_arg(0));
|
||||
unsigned const sz = e->get_parameter(0).get_int();
|
||||
pdd const p = m_polysat.zero_ext(p, sz);
|
||||
polysat_set(e, p);
|
||||
}
|
||||
|
||||
void solver::polysat_binary(app* e, std::function<polysat::pdd(polysat::pdd, polysat::pdd)> const& fn) {
|
||||
SASSERT(e->get_num_args() >= 1);
|
||||
auto p = expr2pdd(e->get_arg(0));
|
||||
|
|
|
@ -327,6 +327,7 @@ namespace bv {
|
|||
void polysat_binary(app* e, std::function<polysat::pdd(polysat::pdd, polysat::pdd)> const& fn);
|
||||
void polysat_extract(app* e);
|
||||
void polysat_concat(app* e);
|
||||
void polysat_zero_ext(app* e);
|
||||
polysat::pdd expr2pdd(expr* e);
|
||||
void polysat_set(euf::theory_var v, polysat::pdd const& p);
|
||||
polysat::pdd var2pdd(euf::theory_var v);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue