mirror of
https://github.com/Z3Prover/z3
synced 2025-09-02 16:20:41 +00:00
61 lines
1.2 KiB
C++
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
|