@@ -1807,7 +1807,7 @@ namespace smt {
1807
1807
1808
1808
bool theory_pb::resolve_conflict (card& c, literal_vector const & confl) {
1809
1809
1810
- TRACE (" pb" , display (tout, c, true ); );
1810
+ TRACE (" pb" , display (tout << " resolve conflict \n " , c, true ); );
1811
1811
1812
1812
bool_var v;
1813
1813
m_conflict_lvl = 0 ;
@@ -1839,8 +1839,19 @@ namespace smt {
1839
1839
literal conseq = ~confl[2 ];
1840
1840
int bound = 1 ;
1841
1841
1842
+ auto clear_marks = [&]() {
1843
+ while (m_num_marks > 0 && idx > 0 ) {
1844
+ v = lits[idx].var ();
1845
+ if (ctx.is_marked (v)) {
1846
+ ctx.unset_mark (v);
1847
+ }
1848
+ --idx;
1849
+ }
1850
+ };
1851
+
1842
1852
while (m_num_marks > 0 ) {
1843
1853
1854
+ TRACE (" pb" , tout << " conseq: " << conseq << " \n " );
1844
1855
v = conseq.var ();
1845
1856
1846
1857
int offset = get_abs_coeff (v);
@@ -1850,13 +1861,7 @@ namespace smt {
1850
1861
}
1851
1862
SASSERT (validate_lemma ());
1852
1863
if (offset > 1000 ) {
1853
- while (m_num_marks > 0 && idx > 0 ) {
1854
- v = lits[idx].var ();
1855
- if (ctx.is_marked (v)) {
1856
- ctx.unset_mark (v);
1857
- }
1858
- --idx;
1859
- }
1864
+ clear_marks ();
1860
1865
return false ;
1861
1866
}
1862
1867
@@ -1884,8 +1889,11 @@ namespace smt {
1884
1889
clause& cls = *js.get_clause ();
1885
1890
justification* cjs = cls.get_justification ();
1886
1891
unsigned num_lits = cls.get_num_literals ();
1887
- if (cjs && typeid (smt::unit_resolution_justification) == typeid (*cjs))
1888
- ;
1892
+ CTRACE (" pb" , cjs, tout << (typeid (smt::unit_resolution_justification) == typeid (*cjs)) << " \n " );
1893
+ if (cjs && typeid (smt::unit_resolution_justification) == typeid (*cjs)) {
1894
+ clear_marks ();
1895
+ return false ;
1896
+ }
1889
1897
else if (cjs && !is_proof_justification (*cjs)) {
1890
1898
TRACE (" pb" , tout << " not processing justification over: " << conseq << " " << typeid (*cjs).name () << " \n " ;);
1891
1899
break ;
@@ -1954,7 +1962,8 @@ namespace smt {
1954
1962
while (true ) {
1955
1963
conseq = lits[idx];
1956
1964
v = conseq.var ();
1957
- if (ctx.is_marked (v)) break ;
1965
+ if (ctx.is_marked (v))
1966
+ break ;
1958
1967
SASSERT (idx > 0 );
1959
1968
--idx;
1960
1969
}
0 commit comments