3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-05-13 02:34:43 +00:00

fix and enable learning

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2013-11-19 20:47:16 -08:00
parent 696db3a6a4
commit 33895d522b
6 changed files with 91 additions and 28 deletions

View file

@ -32,6 +32,7 @@ hence:
enum pb_op_kind {
OP_AT_MOST_K, // at most K Booleans are true.
OP_PB_LE, // pseudo-Boolean <= (generalizes at_most_k)
OP_PB_GE, // pseudo-Boolean >=
LAST_PB_OP
};
@ -39,8 +40,10 @@ enum pb_op_kind {
class pb_decl_plugin : public decl_plugin {
symbol m_at_most_sym;
symbol m_pble_sym;
symbol m_pbge_sym;
func_decl * mk_at_most(unsigned arity, unsigned k);
func_decl * mk_le(unsigned arity, int const* coeffs, int k);
func_decl * mk_ge(unsigned arity, int const* coeffs, int k);
public:
pb_decl_plugin();
virtual ~pb_decl_plugin() {}
@ -74,14 +77,19 @@ public:
family_id get_family_id() const { return m_fid; }
app * mk_at_most_k(unsigned num_args, expr * const * args, unsigned k);
app * mk_le(unsigned num_args, int const * coeffs, expr * const * args, int k);
app * mk_ge(unsigned num_args, int const * coeffs, expr * const * args, int k);
bool is_at_most_k(app *a) const;
bool is_at_most_k(app *a, unsigned& k) const;
int get_k(app *a) const;
bool is_le(app *a) const;
bool is_le(app* a, int& k) const;
int get_le_coeff(app* a, unsigned index);
bool is_ge(app* a) const;
bool is_ge(app* a, int& k) const;
int get_coeff(app* a, unsigned index);
};
#endif /* _PB_DECL_PLUGIN_H_ */