|
| | user_propagator_base (context &c) |
| | user_propagator_base (solver *s) |
| virtual void | push ()=0 |
| virtual void | pop (unsigned num_scopes)=0 |
| virtual | ~user_propagator_base () |
| context & | ctx () |
| virtual user_propagator_base * | fresh (context &ctx)=0 |
| | user_propagators created using fresh() are created during search and their lifetimes are restricted to search time. They should be garbage collected by the propagator used to invoke fresh(). The life-time of the Z3_context object can only be assumed valid during callbacks, such as fixed(), which contains expressions based on the context.
|
| void | register_fixed (fixed_eh_t &f) |
| | register callbacks. Callbacks can only be registered with user_propagators that were created using a solver.
|
| void | register_fixed () |
| void | register_eq (eq_eh_t &f) |
| void | register_eq () |
| void | register_final (final_eh_t &f) |
| | register a callback on final-check. During the final check stage, all propagations have been processed. This is an opportunity for the user-propagator to delay some analysis that could be expensive to perform incrementally. It is also an opportunity for the propagator to implement branch and bound optimization.
|
| void | register_final () |
| void | register_created (created_eh_t &c) |
| void | register_created () |
| void | register_decide (decide_eh_t &c) |
| void | register_decide () |
| void | register_on_binding () |
| virtual void | fixed (expr const &, expr const &) |
| virtual void | eq (expr const &, expr const &) |
| virtual void | final () |
| virtual void | created (expr const &) |
| virtual void | decide (expr const &, unsigned, bool) |
| virtual bool | on_binding (expr const &, expr const &) |
| bool | next_split (expr const &e, unsigned idx, Z3_lbool phase) |
| void | add (expr const &e) |
| | tracks e by a unique identifier that is returned by the call.
|
| void | conflict (expr_vector const &fixed) |
| void | conflict (expr_vector const &fixed, expr_vector const &lhs, expr_vector const &rhs) |
| bool | propagate (expr_vector const &fixed, expr const &conseq) |
| bool | propagate (expr_vector const &fixed, expr_vector const &lhs, expr_vector const &rhs, expr const &conseq) |
Definition at line 4515 of file z3++.h.
| void add |
( |
expr const & | e | ) |
|
|
inline |
tracks e by a unique identifier that is returned by the call.
If the fixed() callback is registered and if e is a Boolean or Bit-vector, the fixed() callback gets invoked when e is bound to a value. If the eq() callback is registered, then equalities between registered expressions are reported. A consumer can use the propagate or conflict functions to invoke propagations or conflicts as a consequence of these callbacks. These functions take a list of identifiers for registered expressions that have been fixed. The list of identifiers must correspond to already fixed values. Similarly, a list of propagated equalities can be supplied. These must correspond to equalities that have been registered during a callback.
Definition at line 4773 of file z3++.h.
4773 {
4774 if (cb)
4776 else if (s)
4778 else
4779 assert(false);
4780 }
void Z3_API Z3_solver_propagate_register_cb(Z3_context c, Z3_solver_callback cb, Z3_ast e)
register an expression to propagate on with the solver. Only expressions of type Bool and type Bit-Ve...
void Z3_API Z3_solver_propagate_register(Z3_context c, Z3_solver s, Z3_ast e)
register an expression to propagate on with the solver. Only expressions of type Bool and type Bit-Ve...