@@ -186,6 +186,7 @@ namespace nlsat {
186
186
bool m_inline_vars;
187
187
bool m_log_lemmas;
188
188
unsigned m_max_conflicts;
189
+ unsigned m_lemma_count;
189
190
190
191
// statistics
191
192
unsigned m_conflicts;
@@ -218,6 +219,7 @@ namespace nlsat {
218
219
updt_params (p);
219
220
reset_statistics ();
220
221
mk_true_bvar ();
222
+ m_lemma_count = 0 ;
221
223
}
222
224
223
225
~imp () {
@@ -738,7 +740,7 @@ namespace nlsat {
738
740
display_smt2 (out);
739
741
out << " (assert (not " ;
740
742
display_smt2 (out, cls) << " ))\n " ;
741
- display (out << " (echo \" " , cls) << " \" )\n " ;
743
+ display (out << " (echo \" # " << m_lemma_count << " " , cls) << " \" )\n " ;
742
744
out << " (check-sat)\n (reset)\n " ;
743
745
}
744
746
@@ -750,9 +752,10 @@ namespace nlsat {
750
752
for (unsigned i = 0 ; i < num_lits; i++)
751
753
inc_ref (lits[i]);
752
754
inc_ref (a);
753
- TRACE (" nlsat_sort" , tout << " mk_clause:\n " ; display (tout, *cls); tout << " \n " ;);
755
+ ++m_lemma_count;
756
+ TRACE (" nlsat_sort" , display (tout << " mk_clause:\n " , *cls) << " \n " ;);
754
757
std::sort (cls->begin (), cls->end (), lit_lt (*this ));
755
- TRACE (" nlsat_sort" , tout << " after sort:\n " ; display (tout , *cls); tout << " \n " ;);
758
+ TRACE (" nlsat_sort" , display ( tout << " # " << m_lemma_count << " after sort:\n " , *cls) << " \n " ;);
756
759
if (learned && m_log_lemmas) {
757
760
log_lemma (std::cout, *cls);
758
761
}
@@ -1599,7 +1602,7 @@ namespace nlsat {
1599
1602
}
1600
1603
1601
1604
void resolve_lazy_justification (bool_var b, lazy_justification const & jst) {
1602
- TRACE (" nlsat_resolve" , tout << " resolving lazy_justification for b: " << b << " \n " ;);
1605
+ TRACE (" nlsat_resolve" , tout << " resolving lazy_justification for b" << b << " \n " ;);
1603
1606
unsigned sz = jst.num_lits ();
1604
1607
1605
1608
// Dump lemma as Mathematica formula that must be true,
@@ -1785,7 +1788,7 @@ namespace nlsat {
1785
1788
if (t.m_kind == trail::BVAR_ASSIGNMENT) {
1786
1789
bool_var b = t.m_b ;
1787
1790
if (is_marked (b)) {
1788
- TRACE (" nlsat_resolve" , tout << " found marked bool_var: " << b << " \n " ; display_atom (tout, b) << " \n " ;);
1791
+ TRACE (" nlsat_resolve" , tout << " found marked: b " << b << " \n " ; display_atom (tout, b) << " \n " ;);
1789
1792
m_num_marks--;
1790
1793
reset_mark (b);
1791
1794
justification jst = m_justifications[b];
@@ -2737,7 +2740,7 @@ namespace nlsat {
2737
2740
break ;
2738
2741
case justification::LAZY: {
2739
2742
lazy_justification const & lz = *j.get_lazy ();
2740
- display (out, lz.num_lits (), lz.lits ()) << " \n " ;
2743
+ display_not (out, lz.num_lits (), lz.lits ()) << " \n " ;
2741
2744
for (unsigned i = 0 ; i < lz.num_clauses (); ++i) {
2742
2745
display (out, lz.clause (i)) << " \n " ;
2743
2746
}
@@ -3015,6 +3018,19 @@ namespace nlsat {
3015
3018
std::ostream& display (std::ostream & out, unsigned num, literal const * ls) const {
3016
3019
return display (out, num, ls, m_display_var);
3017
3020
}
3021
+
3022
+ std::ostream& display_not (std::ostream & out, unsigned num, literal const * ls, display_var_proc const & proc) const {
3023
+ for (unsigned i = 0 ; i < num; i++) {
3024
+ if (i > 0 )
3025
+ out << " or " ;
3026
+ display (out, ~ls[i], proc);
3027
+ }
3028
+ return out;
3029
+ }
3030
+
3031
+ std::ostream& display_not (std::ostream & out, unsigned num, literal const * ls) const {
3032
+ return display_not (out, num, ls, m_display_var);
3033
+ }
3018
3034
3019
3035
std::ostream& display (std::ostream & out, scoped_literal_vector const & cs) {
3020
3036
return display (out, cs.size (), cs.c_ptr (), m_display_var);
0 commit comments