3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-14 21:08:46 +00:00
z3/src/ackermannization/lackr_model_converter_lazy.cpp
2022-07-30 10:07:03 +01:00

61 lines
1.5 KiB
C++

/*++
Copyright (c) 2015 Microsoft Corporation
Module Name:
lackr_model_converter_lazy.cpp
Abstract:
Author:
Mikolas Janota
Revision History:
--*/
#include "ackermannization/lackr_model_converter_lazy.h"
#include "model/model_evaluator.h"
#include "ast/ast_smt2_pp.h"
#include "ackermannization/ackr_info.h"
#include "ackermannization/lackr_model_constructor.h"
class lackr_model_converter_lazy : public model_converter {
public:
lackr_model_converter_lazy(ast_manager & m,
const lackr_model_constructor_ref& lmc)
: m(m)
, model_constructor(lmc)
{ }
void operator()(model_ref & md) override {
SASSERT(md.get() == 0 || (!md->get_num_constants() && !md->get_num_functions()));
SASSERT(model_constructor.get());
model * new_model = alloc(model, m);
md = new_model;
model_constructor->make_model(md);
}
void get_units(obj_map<expr, bool>& units) override { units.reset(); }
//void display(std::ostream & out);
model_converter * translate(ast_translation & translator) override {
NOT_IMPLEMENTED_YET();
return nullptr;
}
void display(std::ostream & out) override {
out << "(lackr-model-converter)\n";
}
protected:
ast_manager& m;
const lackr_model_constructor_ref model_constructor;
};
model_converter * mk_lackr_model_converter_lazy(ast_manager & m,
const lackr_model_constructor_ref& model_constructor) {
return alloc(lackr_model_converter_lazy, m, model_constructor);
}