3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-27 08:28:44 +00:00

small updates

This commit is contained in:
Nikolaj Bjorner 2020-04-30 19:31:39 -07:00
parent 397bf2dec6
commit 5b6255e3d1
2 changed files with 24 additions and 35 deletions

View file

@ -49,21 +49,17 @@ namespace smt {
* Synthesize induction lemmas from induction candidates
*/
class create_induction_lemmas {
context& ctx;
ast_manager& m;
value_sweep& vs;
context& ctx;
ast_manager& m;
value_sweep& vs;
datatype::util m_dt;
arith_util m_a;
obj_map<sort, func_decl*> m_sort2skolem;
ast_ref_vector m_pinned;
unsigned m_num_lemmas;
unsigned m_num_lemmas;
typedef svector<std::pair<expr*,expr*>> expr_pair_vector;
func_decl* mk_skolem(sort* s);
struct abstraction {
expr_ref m_term;
expr_ref m_term;
expr_pair_vector m_eqs;
abstraction(expr_ref& e): m_term(e) {}
abstraction(ast_manager& m, expr* e, expr* n1, expr* n2): m_term(e, m) {
@ -71,8 +67,7 @@ namespace smt {
}
abstraction(ast_manager& m, expr* e, expr_pair_vector const& eqs):
m_term(e, m), m_eqs(eqs) {
}
}
};
typedef vector<abstraction> abstractions;
@ -90,6 +85,7 @@ namespace smt {
bool is_induction_candidate(enode* n);
enode_vector induction_positions(enode* n);
void abstract(enode* n, enode* t, expr* x, abstractions& result);
void abstract1(enode* n, enode* t, expr* x, abstractions& result);
void filter_abstractions(bool sign, abstractions& abs);
void create_lemmas(expr* t, expr* sk, abstraction& a, literal lit);
literal mk_literal(expr* e);