Skip to content

Commit

Permalink
Freeze property literal for incremental analysis
Browse files Browse the repository at this point in the history
MiniSAT melts assumed literals that were not explicitly frozen before. Therefore
checking two equal properties could result in the property literal being
eliminated if the solver was run with different assumptions between the two
checks.
  • Loading branch information
mgudemann committed Sep 22, 2023
1 parent 19fdf3f commit b33f223
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/ebmc/ebmc_base.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,8 @@ int ebmc_baset::finish_bmc(prop_conv_solvert &solver) {
disjuncts.push_back(literal_exprt(!l));

auto converted_or = solver.convert(disjunction(disjuncts));
solver.push({literal_exprt{converted_or}});
solver.push({literal_exprt(converted_or)});
solver.set_frozen(converted_or);

decision_proceduret::resultt dec_result=
solver.dec_solve();
Expand Down

0 comments on commit b33f223

Please sign in to comment.