3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-05-08 00:05:46 +00:00
z3/src/ackermannization/lackr_model_converter_lazy.cpp
Nikolaj Bjorner b19f94ae5b make include paths uniformly use path relative to src. #534
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-07-31 13:24:11 -07:00

59 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)
{ }
virtual ~lackr_model_converter_lazy() { }
virtual void operator()(model_ref & md, unsigned goal_idx) {
SASSERT(goal_idx == 0);
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);
}
virtual void operator()(model_ref & md) {
operator()(md, 0);
}
//void display(std::ostream & out);
virtual model_converter * translate(ast_translation & translator) {
NOT_IMPLEMENTED_YET();
}
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);
}