diff --git a/src/model/value_factory.cpp b/src/model/value_factory.cpp index 2b412f850..30fa82caf 100644 --- a/src/model/value_factory.cpp +++ b/src/model/value_factory.cpp @@ -28,13 +28,13 @@ value_factory::value_factory(ast_manager & m, family_id fid): value_factory::~value_factory() { } -basic_factory::basic_factory(ast_manager & m): - value_factory(m, m.get_basic_family_id()) { +basic_factory::basic_factory(ast_manager & m, unsigned seed): + value_factory(m, m.get_basic_family_id()), m_rand(seed) { } expr * basic_factory::get_some_value(sort * s) { - if (m_manager.is_bool(s)) - return m_manager.mk_false(); + if (m_manager.is_bool(s)) + return (m_rand() % 2 == 0) ? m_manager.mk_false() : m_manager.mk_true(); return nullptr; } diff --git a/src/model/value_factory.h b/src/model/value_factory.h index cf56439d9..edb12b095 100644 --- a/src/model/value_factory.h +++ b/src/model/value_factory.h @@ -60,8 +60,9 @@ public: }; class basic_factory : public value_factory { + random_gen m_rand; public: - basic_factory(ast_manager & m); + basic_factory(ast_manager & m, unsigned seed); expr * get_some_value(sort * s) override; diff --git a/src/smt/proto_model/proto_model.cpp b/src/smt/proto_model/proto_model.cpp index d1614f521..d61bcf028 100644 --- a/src/smt/proto_model/proto_model.cpp +++ b/src/smt/proto_model/proto_model.cpp @@ -32,7 +32,7 @@ proto_model::proto_model(ast_manager & m, params_ref const & p): model_core(m), m_eval(*this), m_rewrite(m) { - register_factory(alloc(basic_factory, m)); + register_factory(alloc(basic_factory, m, m.get_num_asts())); m_user_sort_factory = alloc(user_sort_factory, m); register_factory(m_user_sort_factory); m_model_partial = model_params(p).partial();