mirror of
https://github.com/Z3Prover/z3
synced 2025-06-06 14:13:23 +00:00
parent
ce4e71fbe9
commit
62ea86d5d2
1 changed files with 14 additions and 3 deletions
|
@ -2024,13 +2024,24 @@ br_status bv_rewriter::mk_bv_nand(unsigned num, expr * const * args, expr_ref &
|
||||||
return BR_REWRITE2;
|
return BR_REWRITE2;
|
||||||
}
|
}
|
||||||
|
|
||||||
br_status bv_rewriter::mk_bv_nor(unsigned num, expr * const * args, expr_ref & result) {
|
br_status bv_rewriter::mk_bv_nor(unsigned num_args, expr * const * args, expr_ref & result) {
|
||||||
result = m_util.mk_bv_not(m_util.mk_bv_or(num, args));
|
result = m_util.mk_bv_not(m_util.mk_bv_or(num_args, args));
|
||||||
return BR_REWRITE2;
|
return BR_REWRITE2;
|
||||||
}
|
}
|
||||||
|
|
||||||
br_status bv_rewriter::mk_bv_xnor(unsigned num_args, expr * const * args, expr_ref & result) {
|
br_status bv_rewriter::mk_bv_xnor(unsigned num_args, expr * const * args, expr_ref & result) {
|
||||||
result = m_util.mk_bv_not(m_util.mk_bv_xor(num_args, args));
|
switch (num_args) {
|
||||||
|
case 0: result = m().mk_true(); break;
|
||||||
|
case 1: result = m_util.mk_bv_not(args[0]); break;
|
||||||
|
case 2: result = m_util.mk_bv_not(m_util.mk_bv_xor(num_args, args)); break;
|
||||||
|
default:
|
||||||
|
mk_bv_xnor(2, args, result);
|
||||||
|
for (unsigned i = 2; i < num_args; ++i) {
|
||||||
|
expr* _args[2] = { result, args[i] };
|
||||||
|
mk_bv_xnor(2, _args, result);
|
||||||
|
}
|
||||||
|
return BR_REWRITE_FULL;
|
||||||
|
}
|
||||||
return BR_REWRITE2;
|
return BR_REWRITE2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue