3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-16 13:58:45 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2019-12-29 10:55:58 -08:00
parent ce4e71fbe9
commit 62ea86d5d2

View file

@ -2024,13 +2024,24 @@ br_status bv_rewriter::mk_bv_nand(unsigned num, expr * const * args, expr_ref &
return BR_REWRITE2;
}
br_status bv_rewriter::mk_bv_nor(unsigned num, expr * const * args, expr_ref & result) {
result = m_util.mk_bv_not(m_util.mk_bv_or(num, args));
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, args));
return BR_REWRITE2;
}
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;
}