mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	move to get_sort as method, add opt_lns pass, disable xor simplification unless configured, fix perf bug in model converter update trail
This commit is contained in:
		
							parent
							
								
									c623e2db28
								
							
						
					
					
						commit
						4455f6caf8
					
				
					 36 changed files with 391 additions and 90 deletions
				
			
		| 
						 | 
				
			
			@ -132,7 +132,7 @@ void anti_unifier::operator()(expr *e1, expr *e2, expr_ref &res,
 | 
			
		|||
        unsigned num_arg2 = n2->get_num_args();
 | 
			
		||||
        if (n1->get_decl() != n2->get_decl() || num_arg1 != num_arg2) {
 | 
			
		||||
            expr_ref v(m);
 | 
			
		||||
            v = m.mk_var(m_subs.size(), get_sort(n1));
 | 
			
		||||
            v = m.mk_var(m_subs.size(), n1->get_sort());
 | 
			
		||||
            m_pinned.push_back(v);
 | 
			
		||||
            m_subs.push_back(expr_pair(n1, n2));
 | 
			
		||||
            m_cache.insert(n1, n2, v);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -119,7 +119,7 @@ void pob::get_skolems(app_ref_vector &v) {
 | 
			
		|||
    for (unsigned i = 0, sz = m_binding.size(); i < sz; ++i) {
 | 
			
		||||
        expr* e;
 | 
			
		||||
        e = m_binding.get(i);
 | 
			
		||||
        v.push_back (mk_zk_const (get_ast_manager(), i, get_sort(e)));
 | 
			
		||||
        v.push_back (mk_zk_const (get_ast_manager(), i, e->get_sort()));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -237,7 +237,7 @@ void derivation::exist_skolemize(expr* fml, app_ref_vector& vars, expr_ref& res)
 | 
			
		|||
    expr_safe_replace sub(m);
 | 
			
		||||
    for (unsigned i = 0, sz = vars.size(); i < sz; ++i) {
 | 
			
		||||
        expr* e = vars.get(i);
 | 
			
		||||
        sub.insert(e, mk_zk_const(m, i, get_sort(e)));
 | 
			
		||||
        sub.insert(e, mk_zk_const(m, i, e->get_sort()));
 | 
			
		||||
    }
 | 
			
		||||
    sub(fml, res);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -541,7 +541,7 @@ void lemma::mk_expr_core() {
 | 
			
		|||
        ptr_buffer<sort> sorts;
 | 
			
		||||
        svector<symbol> names;
 | 
			
		||||
        for (app* z : zks) {
 | 
			
		||||
            sorts.push_back(get_sort(z));
 | 
			
		||||
            sorts.push_back(z->get_sort());
 | 
			
		||||
            names.push_back(z->get_decl()->get_name());
 | 
			
		||||
        }
 | 
			
		||||
        m_body = m.mk_quantifier(forall_k, zks.size(),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -195,8 +195,8 @@ public:
 | 
			
		|||
    void operator()(app* a)
 | 
			
		||||
    {
 | 
			
		||||
        if (a->get_family_id() == null_family_id && m_au.is_array(a)) {
 | 
			
		||||
            if (m_sort && m_sort != get_sort(a)) { return; }
 | 
			
		||||
            if (!m_sort) { m_sort = get_sort(a); }
 | 
			
		||||
            if (m_sort && m_sort != a->get_sort()) { return; }
 | 
			
		||||
            if (!m_sort) { m_sort = a->get_sort(); }
 | 
			
		||||
            m_symbs.insert(a->get_decl());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -230,7 +230,7 @@ namespace spacer {
 | 
			
		|||
            if (a.is_numeral(e)) return false;
 | 
			
		||||
            if (!var || var == e) {
 | 
			
		||||
                var = e;
 | 
			
		||||
                val = a.mk_numeral(rational(1), get_sort(e));
 | 
			
		||||
                val = a.mk_numeral(rational(1), e->get_sort());
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -226,7 +226,7 @@ expr* times_minus_one(expr *e, arith_util &arith) {
 | 
			
		|||
    expr *r;
 | 
			
		||||
    if (arith.is_times_minus_one (e, r)) { return r; }
 | 
			
		||||
 | 
			
		||||
    return arith.mk_mul(arith.mk_numeral(rational(-1), arith.is_int(get_sort(e))), e);
 | 
			
		||||
    return arith.mk_mul(arith.mk_numeral(rational(-1), arith.is_int(e->get_sort())), e);
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -502,7 +502,7 @@ bool lemma_quantifier_generalizer::generalize (lemma_ref &lemma, app *term) {
 | 
			
		|||
    expr_ref_vector abs_cube(m);
 | 
			
		||||
 | 
			
		||||
    var_ref var(m);
 | 
			
		||||
    var = m.mk_var (m_offset, get_sort(term));
 | 
			
		||||
    var = m.mk_var (m_offset, term->get_sort());
 | 
			
		||||
 | 
			
		||||
    mk_abs_cube(lemma, term, var, gnd_cube, abs_cube, lb, ub, stride);
 | 
			
		||||
    if (abs_cube.empty()) {return false;}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue