mirror of
https://github.com/Z3Prover/z3
synced 2025-04-08 18:31:49 +00:00
fix model generation for underspecified operators in theory_lra
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
283aa04d68
commit
876bd80bea
|
@ -3484,6 +3484,15 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
bool include_func_interp(func_decl* f) {
|
||||
return
|
||||
a.is_div0(f) ||
|
||||
a.is_idiv0(f) ||
|
||||
a.is_power0(f) ||
|
||||
a.is_rem0(f) ||
|
||||
a.is_mod0(f);
|
||||
}
|
||||
|
||||
bool get_lower(enode* n, rational& val, bool& is_strict) {
|
||||
theory_var v = n->get_th_var(get_id());
|
||||
if (!can_get_bound(v)) {
|
||||
|
@ -3980,6 +3989,9 @@ bool theory_lra::get_value(enode* n, rational& r) {
|
|||
bool theory_lra::get_value(enode* n, expr_ref& r) {
|
||||
return m_imp->get_value(n, r);
|
||||
}
|
||||
bool theory_lra::include_func_interp(func_decl* f) {
|
||||
return m_imp->include_func_interp(f);
|
||||
}
|
||||
bool theory_lra::get_lower(enode* n, expr_ref& r) {
|
||||
return m_imp->get_lower(n, r);
|
||||
}
|
||||
|
|
|
@ -82,6 +82,7 @@ namespace smt {
|
|||
model_value_proc * mk_value(enode * n, model_generator & mg) override;
|
||||
|
||||
bool get_value(enode* n, expr_ref& r) override;
|
||||
bool include_func_interp(func_decl* f) override;
|
||||
bool get_value(enode* n, rational& r);
|
||||
bool get_lower(enode* n, expr_ref& r);
|
||||
bool get_upper(enode* n, expr_ref& r);
|
||||
|
|
Loading…
Reference in a new issue