mirror of
https://github.com/Z3Prover/z3
synced 2025-05-07 07:45:46 +00:00
54 lines
1.4 KiB
C++
54 lines
1.4 KiB
C++
/*++
|
|
Copyright (c) 2011 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
bit_blaster.h
|
|
|
|
Abstract:
|
|
|
|
Apply bit-blasting
|
|
|
|
Author:
|
|
|
|
Leonardo (leonardo) 2011-10-25
|
|
|
|
--*/
|
|
#include "ast/rewriter/bit_blaster/bit_blaster_rewriter.h"
|
|
#include "ast/ast_pp.h"
|
|
#include "model/model_pp.h"
|
|
#include "ast/rewriter/rewriter_types.h"
|
|
#include "ast/simplifiers/dependent_expr_state.h"
|
|
|
|
|
|
class bit_blaster_simplifier : public dependent_expr_simplifier {
|
|
|
|
bit_blaster_rewriter m_rewriter;
|
|
unsigned m_num_steps = 0;
|
|
params_ref m_params;
|
|
|
|
public:
|
|
bit_blaster_simplifier(ast_manager & m, params_ref const & p, dependent_expr_state& s):
|
|
dependent_expr_simplifier(m, s),
|
|
m_rewriter(m, p) {
|
|
updt_params(p);
|
|
}
|
|
char const* name() const override { return "bit-blast"; }
|
|
void updt_params(params_ref const & p) override;
|
|
void collect_param_descrs(param_descrs & r) override;
|
|
void reduce() override;
|
|
void collect_statistics(statistics& st) const override;
|
|
void push() override;
|
|
void pop(unsigned n) override;
|
|
|
|
/*
|
|
* Expose the bit-blaster rewriter so that assumptions and implied bit-vectors can be reconstructed
|
|
* after bit-blasting.
|
|
*/
|
|
bit_blaster_rewriter& rewriter() { return m_rewriter; }
|
|
|
|
};
|
|
|
|
/*
|
|
ADD_SIMPLIFIER("bit-blast", "reduce bit-vector expressions into SAT.", "alloc(bit_blaster_simplifier, m, p, s)")
|
|
*/
|