@@ -726,44 +726,27 @@ struct purify_arith_proc {
726
726
r (q->get_expr (), new_body, new_body_pr);
727
727
unsigned num_vars = r.cfg ().m_new_vars .size ();
728
728
expr_ref_vector & cnstrs = r.cfg ().m_new_cnstrs ;
729
- if (true || !cnstrs.empty ()) {
729
+ if (num_vars == 0 && !cnstrs.empty ()) {
730
730
cnstrs.push_back (new_body);
731
- new_body = m ().mk_and (cnstrs. size (), cnstrs. c_ptr () );
731
+ new_body = m ().mk_and (cnstrs);
732
732
}
733
733
TRACE (" purify_arith" ,
734
734
tout << " num_vars: " << num_vars << " \n " ;
735
- tout << " body: " << mk_ismt2_pp (q->get_expr (), m ()) << " \n new_body: " << mk_ismt2_pp ( new_body, m ()) << " \n " ;);
735
+ tout << " body: " << mk_ismt2_pp (q->get_expr (), m ()) << " \n new_body: " << new_body << " \n " ;);
736
736
if (num_vars == 0 ) {
737
737
result = m ().update_quantifier (q, new_body);
738
+ if (m_produce_proofs) {
739
+ auto & cnstr_prs = r.cfg ().m_new_cnstr_prs ;
740
+ result_pr = m ().mk_rewrite_star (q->get_expr (), new_body, cnstr_prs.size (), cnstr_prs.c_ptr ());
741
+ result_pr = m ().mk_quant_intro (q, to_quantifier (result.get ()), result_pr);
742
+ r.cfg ().push_cnstr_pr (result_pr);
743
+ }
738
744
}
739
745
else {
740
- // Add new constraints
741
- // Open space for new variables
742
- var_shifter shifter (m ());
743
- shifter (new_body, num_vars, new_body);
744
- // Rename fresh constants in r.cfg().m_new_vars to variables
745
- ptr_buffer<sort> sorts;
746
- buffer<symbol> names;
747
- expr_substitution subst (m (), false , false );
748
- for (unsigned i = 0 ; i < num_vars; i++) {
749
- expr * c = r.cfg ().m_new_vars .get (i);
750
- sort * s = get_sort (c);
751
- sorts.push_back (s);
752
- names.push_back (m ().mk_fresh_var_name (" x" ));
753
- unsigned idx = num_vars - i - 1 ;
754
- subst.insert (c, m ().mk_var (idx, s));
746
+ result = q;
747
+ if (m_produce_proofs) {
748
+ r.cfg ().push_cnstr_pr (nullptr );
755
749
}
756
- scoped_ptr<expr_replacer> replacer = mk_default_expr_replacer (m (), false );
757
- replacer->set_substitution (&subst);
758
- (*replacer)(new_body, new_body);
759
- new_body = m ().mk_exists (num_vars, sorts.c_ptr (), names.c_ptr (), new_body, q->get_weight ());
760
- result = m ().update_quantifier (q, new_body);
761
- }
762
- if (m_produce_proofs) {
763
- auto & cnstr_prs = r.cfg ().m_new_cnstr_prs ;
764
- result_pr = m ().mk_rewrite_star (q->get_expr (), new_body, cnstr_prs.size (), cnstr_prs.c_ptr ());
765
- result_pr = m ().mk_quant_intro (q, to_quantifier (result.get ()), result_pr);
766
- r.cfg ().push_cnstr_pr (result_pr);
767
750
}
768
751
}
769
752
0 commit comments