3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-09-02 16:20:41 +00:00
z3/src/tactic/fpa/fpa2bv_model_converter.h
Nikolaj Bjorner eacde16b3e fix #3199
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-04-04 23:55:44 -07:00

61 lines
1.2 KiB
C++

/*++
Copyright (c) 2012 Microsoft Corporation
Module Name:
fpa2bv_model_converter.h
Abstract:
Model conversion for fpa2bv_converter
Author:
Christoph (cwinter) 2012-02-09
Notes:
--*/
#ifndef FPA2BV_MODEL_CONVERTER_H_
#define FPA2BV_MODEL_CONVERTER_H_
#include "ast/fpa/fpa2bv_converter.h"
#include "tactic/model_converter.h"
#include "ast/fpa/bv2fpa_converter.h"
class fpa2bv_model_converter : public model_converter {
ast_manager & m;
bv2fpa_converter * m_bv2fp;
public:
fpa2bv_model_converter(ast_manager & m, fpa2bv_converter & conv):
m(m),
m_bv2fp(alloc(bv2fpa_converter, m, conv)) {
}
~fpa2bv_model_converter() override {
dealloc(m_bv2fp);
}
void operator()(model_ref & md) override {
model_ref new_model = alloc(model, m);
convert(md.get(), new_model.get());
md = new_model;
}
void display(std::ostream & out) override;
model_converter * translate(ast_translation & translator) override;
protected:
fpa2bv_model_converter(ast_manager & m) :
m(m),
m_bv2fp(nullptr) {}
void convert(model_core * mc, model * float_mdl);
};
model_converter * mk_fpa2bv_model_converter(ast_manager & m, fpa2bv_converter & conv);
#endif