@@ -1347,11 +1347,6 @@ namespace smt {
1347
1347
lits.push_back (antecedent);
1348
1348
literal eq = mk_eq (get_enode (v1)->get_owner (), get_enode (v2)->get_owner (), false );
1349
1349
lits.push_back (~eq);
1350
- if (m.has_trace_stream ()) {
1351
- app_ref body (m);
1352
- body = m.mk_implies (ctx.bool_var2expr (eq.var ()), m.mk_implies (ctx.bool_var2expr (consequent.var ()), ctx.bool_var2expr (antecedent.var ())));
1353
- log_axiom_instantiation (body);
1354
- }
1355
1350
//
1356
1351
// Issue #3035:
1357
1352
// merge_eh invokes assign_bit, which updates the propagation queue and includes the
@@ -1364,8 +1359,10 @@ namespace smt {
1364
1359
ctx.mark_as_relevant (lits[0 ]);
1365
1360
ctx.mark_as_relevant (lits[1 ]);
1366
1361
ctx.mark_as_relevant (lits[2 ]);
1367
- ctx.mk_th_axiom (get_id (), lits.size (), lits.c_ptr ());
1368
- if (m.has_trace_stream ()) m.trace_stream () << " [end-of-instance]\n " ;
1362
+ {
1363
+ scoped_trace_stream _sts (*this , lits);
1364
+ ctx.mk_th_axiom (get_id (), lits.size (), lits.c_ptr ());
1365
+ }
1369
1366
1370
1367
if (m_wpos[v2] == idx)
1371
1368
find_wpos (v2);
@@ -1459,7 +1456,6 @@ namespace smt {
1459
1456
1460
1457
final_check_status theory_bv::final_check_eh () {
1461
1458
SASSERT (check_invariant ());
1462
- check_invariant ();
1463
1459
if (m_approximates_large_bvs) {
1464
1460
return FC_GIVEUP;
1465
1461
}
@@ -1556,7 +1552,7 @@ namespace smt {
1556
1552
if (val1 != l_undef && val2 != l_undef) {
1557
1553
TRACE (" bv" , tout << " inconsistent " ; display_var (tout, v1); display_var (tout, v2); tout << " idx: " << idx << " \n " ;);
1558
1554
}
1559
- if (val1 != l_undef) {
1555
+ if (val1 != l_undef && bit2 != false_literal && bit2 != true_literal ) {
1560
1556
literal antecedent = bit1;
1561
1557
literal consequent = bit2;
1562
1558
if (val1 == l_false) {
@@ -1826,7 +1822,8 @@ namespace smt {
1826
1822
tout << " equivalence class is inconsistent, i: " << i << " \n " ;
1827
1823
display_var (tout, v1);
1828
1824
display_var (tout, v2);
1829
- tout << " relevant: " << ctx.is_relevant (bit1) << " " << ctx.is_relevant (bit2) << " \n " ;
1825
+ if (bit1 != true_literal && bit1 != false_literal) tout << " bit1 relevant: " << ctx.is_relevant (bit1) << " " ;
1826
+ if (bit2 != true_literal && bit2 != false_literal) tout << " bit2 relevant: " << ctx.is_relevant (bit2) << " \n " ;
1830
1827
tout << " val1: " << val1 << " lvl: " << ctx.get_assign_level (bit1.var ()) << " bit " << bit1 << " \n " ;
1831
1828
tout << " val2: " << val2 << " lvl: " << ctx.get_assign_level (bit2.var ()) << " bit " << bit2 << " \n " ;
1832
1829
tout << " level: " << ctx.get_scope_level () << " \n " ;
0 commit comments