mirror of
https://github.com/Z3Prover/z3
synced 2025-08-07 11:41:22 +00:00
Add intblast solver
This commit is contained in:
parent
0520558fc0
commit
9293923b8a
28 changed files with 1621 additions and 58 deletions
|
@ -386,9 +386,31 @@ public:
|
|||
bool is_bv_shl(expr const * e) const { return is_app_of(e, get_fid(), OP_BSHL); }
|
||||
bool is_sign_ext(expr const * e) const { return is_app_of(e, get_fid(), OP_SIGN_EXT); }
|
||||
bool is_bv_umul_no_ovfl(expr const* e) const { return is_app_of(e, get_fid(), OP_BUMUL_NO_OVFL); }
|
||||
bool is_redand(expr const* e) const { return is_app_of(e, get_fid(), OP_BREDAND); }
|
||||
bool is_redor(expr const* e) const { return is_app_of(e, get_fid(), OP_BREDOR); }
|
||||
bool is_comp(expr const* e) const { return is_app_of(e, get_fid(), OP_BCOMP); }
|
||||
bool is_rotate_left(expr const* e) const { return is_app_of(e, get_fid(), OP_ROTATE_LEFT); }
|
||||
bool is_rotate_right(expr const* e) const { return is_app_of(e, get_fid(), OP_ROTATE_RIGHT); }
|
||||
bool is_ext_rotate_left(expr const* e) const { return is_app_of(e, get_fid(), OP_EXT_ROTATE_LEFT); }
|
||||
bool is_ext_rotate_right(expr const* e) const { return is_app_of(e, get_fid(), OP_EXT_ROTATE_RIGHT); }
|
||||
|
||||
bool is_rotate_left(expr const* e, unsigned& n, expr*& x) const {
|
||||
return is_rotate_left(e) && (n = to_app(e)->get_parameter(0).get_int(), x = to_app(e)->get_arg(0), true);
|
||||
}
|
||||
bool is_rotate_right(expr const* e, unsigned& n, expr*& x) const {
|
||||
return is_rotate_right(e) && (n = to_app(e)->get_parameter(0).get_int(), x = to_app(e)->get_arg(0), true);
|
||||
}
|
||||
bool is_int2bv(expr const* e, unsigned& n, expr*& x) const {
|
||||
return is_int2bv(e) && (n = to_app(e)->get_parameter(0).get_int(), x = to_app(e)->get_arg(0), true);
|
||||
}
|
||||
|
||||
MATCH_UNARY(is_bv_not);
|
||||
MATCH_UNARY(is_redand);
|
||||
MATCH_UNARY(is_redor);
|
||||
|
||||
MATCH_BINARY(is_ext_rotate_left);
|
||||
MATCH_BINARY(is_ext_rotate_right);
|
||||
MATCH_BINARY(is_comp);
|
||||
MATCH_BINARY(is_bv_add);
|
||||
MATCH_BINARY(is_bv_sub);
|
||||
MATCH_BINARY(is_bv_mul);
|
||||
|
@ -411,6 +433,12 @@ public:
|
|||
MATCH_BINARY(is_bv_sdiv);
|
||||
MATCH_BINARY(is_bv_udiv);
|
||||
MATCH_BINARY(is_bv_smod);
|
||||
MATCH_BINARY(is_bv_and);
|
||||
MATCH_BINARY(is_bv_or);
|
||||
MATCH_BINARY(is_bv_xor);
|
||||
MATCH_BINARY(is_bv_nand);
|
||||
MATCH_BINARY(is_bv_nor);
|
||||
|
||||
|
||||
MATCH_BINARY(is_bv_uremi);
|
||||
MATCH_BINARY(is_bv_sremi);
|
||||
|
@ -516,6 +544,7 @@ public:
|
|||
app * mk_bv_lshr(expr* arg1, expr* arg2) { return m_manager.mk_app(get_fid(), OP_BLSHR, arg1, arg2); }
|
||||
|
||||
app * mk_bv2int(expr* e);
|
||||
app * mk_int2bv(unsigned sz, expr* e);
|
||||
|
||||
// TODO: all these binary ops commute (right?) but it'd be more logical to swap `n` & `m` in the `return`
|
||||
app * mk_bvsmul_no_ovfl(expr* m, expr* n) { return m_manager.mk_app(get_fid(), OP_BSMUL_NO_OVFL, n, m); }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue