3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-08 02:15:19 +00:00

make generation of "some" Boolean value fair

This commit is contained in:
Nikolaj Bjorner 2023-03-15 21:43:26 +01:00
parent d1c7ff1a36
commit a9e6e567b0
3 changed files with 7 additions and 6 deletions

View file

@ -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;
}

View file

@ -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;

View file

@ -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();