20 for(
const auto &in_clause : in_clauses)
22 const auto &
id = in_clause.first;
23 const auto &it_guard = neg_guards.find(
id);
26 if(it_guard == neg_guards.end())
28 result[id] =
and_exprt(in_clause.second, post_clauses.at(
id));
34 or_exprt(it_guard->second, in_clause.second),
invariant_mapt combine_in_and_post_invariant_clauses(const invariant_mapt &in_clauses, const invariant_mapt &post_clauses, const invariant_mapt &neg_guards)
Combine invariant of form (in_inv || !guard) && (!guard -> pos_inv)
std::map< loop_idt, exprt > invariant_mapt