mirror of
https://github.com/Z3Prover/z3
synced 2025-04-28 19:35:50 +00:00
52 lines
1.3 KiB
C++
52 lines
1.3 KiB
C++
/*++
|
|
Copyright (c) 2011 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
bv1_blaster_tactic.h
|
|
|
|
Author:
|
|
|
|
Leonardo (leonardo) 2011-10-25
|
|
|
|
Tactic Documentation:
|
|
|
|
## Tactic bv1-blast
|
|
|
|
### Short Description
|
|
|
|
Reduce bit-vector expressions into bit-vectors of size 1 (notes: only equality, extract and concat are supported).
|
|
|
|
### Long Description
|
|
|
|
Rewriter for "blasting" bit-vectors of size n into bit-vectors of size 1.
|
|
This rewriter only supports concat and extract operators.
|
|
This transformation is useful for handling benchmarks that contain
|
|
many BV equalities.
|
|
|
|
_Remark_: other operators can be mapped into concat/extract by using
|
|
the simplifiers.
|
|
|
|
### Example
|
|
|
|
```z3
|
|
(declare-const x (_ BitVec 8))
|
|
(declare-const y (_ BitVec 4))
|
|
(declare-const z (_ BitVec 4))
|
|
(assert (= (concat y z) x))
|
|
(apply bv1-blast)
|
|
```
|
|
|
|
--*/
|
|
#pragma once
|
|
|
|
#include "util/params.h"
|
|
class ast_manager;
|
|
class tactic;
|
|
|
|
tactic * mk_bv1_blaster_tactic(ast_manager & m, params_ref const & p = params_ref());
|
|
probe * mk_is_qfbv_eq_probe();
|
|
/*
|
|
ADD_TACTIC("bv1-blast", "reduce bit-vector expressions into bit-vectors of size 1 (notes: only equality, extract and concat are supported).", "mk_bv1_blaster_tactic(m, p)")
|
|
ADD_PROBE("is-qfbv-eq", "true if the goal is in a fragment of QF_BV which uses only =, extract, concat.", "mk_is_qfbv_eq_probe()")
|
|
*/
|