gc-ing definitions leads to unsoundness when they are not replayed.
Instead of attempting to replay definitions theory internalization is irredundant by default.
This is also the old solver behavior where TH_LEMMA is essentially never used, but is valid for top-level theory lemmas.
move self-checking functionality to inside sat/smt so it can be used on-line and not just off-line.
when self-validation fails, use vs, not clause, to check. It allows self-validation without checking and maintaining RUP validation.
new options sat.smt.proof.check_rup, sat.smt.proof.check for online validation.
z3 sat.smt.proof.check=true sat.euf=true /v:1 sat.smt.proof.check_rup=true /st file.smt2 sat.smt.proof=p.smt2
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)
Issue #5586 reported that Android builds (targetting, e.g., x86) failed
to compile due to a conflict between:
* `struct user` in `sys/user.h`; and
* `namespace user` in z3's `user_solver.h`
This issue is resolved by renaming `namespace user` to `namespace
user_solver` (matching the header name) to avoid this conflict.
Reported-by: Jamie Collinson <jamiecollinson@gmail.com>
Signed-off-by: Andrew V. Jones <andrewvaughanj@gmail.com>
* use value function in lar_solver
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* add missing return
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* check_feasible is called after column is added for fixed variable
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* na