diff --git a/src/goto-checker/goto_symex_fault_localizer.cpp b/src/goto-checker/goto_symex_fault_localizer.cpp index ef69f465679..7e70100657c 100644 --- a/src/goto-checker/goto_symex_fault_localizer.cpp +++ b/src/goto-checker/goto_symex_fault_localizer.cpp @@ -95,7 +95,7 @@ bool goto_symex_fault_localizert::check( } // lock the failed assertion - assumptions.push_back(solver.handle(not_exprt(failed_step.cond_handle))); + assumptions.push_back(not_exprt(failed_step.cond_handle)); solver.push(assumptions); diff --git a/src/solvers/prop/prop_conv_solver.cpp b/src/solvers/prop/prop_conv_solver.cpp index 804ed91ce6d..cd0e5392c1f 100644 --- a/src/solvers/prop/prop_conv_solver.cpp +++ b/src/solvers/prop/prop_conv_solver.cpp @@ -463,7 +463,7 @@ prop_conv_solvert::dec_solve(const exprt &assumption) if(assumption.is_nil()) push(); else - push({literal_exprt(convert(assumption))}); + push({assumption}); auto prop_result = prop.prop_solve(assumption_stack); @@ -539,7 +539,12 @@ void prop_conv_solvert::push(const std::vector &assumptions) // We push the given assumptions as a single context onto the stack. assumption_stack.reserve(assumption_stack.size() + assumptions.size()); for(const auto &assumption : assumptions) - assumption_stack.push_back(to_literal_expr(assumption).get_literal()); + { + auto literal = convert(assumption); + if(!literal.is_constant()) + set_frozen(literal); + assumption_stack.push_back(literal); + } context_size_stack.push_back(assumptions.size()); }