mirror of
https://github.com/Z3Prover/z3
synced 2025-05-11 01:35:47 +00:00
force-push on new_eq, new_diseq in user propagator, other fixes to Python bindings for user propagator
This update allows the python bindings for user-propagator to handle functions that are declared to be registered with the user propagator plugin. It fixes a bug in UserPropagateBase.add to allow registering terms dynamically during search. It also fixes a bug in theory_user_propagate as scopes were not fully pushed when the solver gets the callbacks for new equalities and new disequalities. It also adds equality and disequality interfaces to the sat/smt solver version (which isn't being exercised in earnest yet)
This commit is contained in:
parent
3e38bbb009
commit
5c2c0ae900
7 changed files with 93 additions and 25 deletions
|
@ -821,6 +821,8 @@ namespace smt {
|
|||
SASSERT(t2 != null_theory_id);
|
||||
theory_var v1 = m_fparams.m_new_core2th_eq ? get_closest_var(n1, t2) : r1->get_th_var(t2);
|
||||
|
||||
TRACE("merge_theory_vars", tout << get_theory(t2)->get_name() << ": " << v2 << " == " << v1 << "\n");
|
||||
|
||||
if (v1 != null_theory_var) {
|
||||
// only send the equality to the theory, if the equality was not propagated by it.
|
||||
if (t2 != from_th)
|
||||
|
@ -839,6 +841,7 @@ namespace smt {
|
|||
SASSERT(v1 != null_theory_var);
|
||||
SASSERT(t1 != null_theory_id);
|
||||
theory_var v2 = r2->get_th_var(t1);
|
||||
TRACE("merge_theory_vars", tout << get_theory(t1)->get_name() << ": " << v2 << " == " << v1 << "\n");
|
||||
if (v2 == null_theory_var) {
|
||||
r2->add_th_var(v1, t1, m_region);
|
||||
push_new_th_diseqs(r2, v1, get_theory(t1));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue