@@ -238,6 +238,38 @@ exprt SVA_to_LTL(exprt expr)
238238 {
239239 return expr;
240240 }
241+ else if (expr.id () == ID_sva_implies)
242+ {
243+ // maps cleanly to 'implies'
244+ auto &sva_implies = to_sva_implies_expr (expr);
245+ auto rec_lhs = SVA_to_LTL (sva_implies.lhs ());
246+ auto rec_rhs = SVA_to_LTL (sva_implies.rhs ());
247+ return implies_exprt{rec_rhs, rec_lhs};
248+ }
249+ else if (expr.id () == ID_sva_iff)
250+ {
251+ // maps cleanly to =
252+ auto &sva_iff = to_sva_iff_expr (expr);
253+ auto rec_lhs = SVA_to_LTL (sva_iff.lhs ());
254+ auto rec_rhs = SVA_to_LTL (sva_iff.rhs ());
255+ return equal_exprt{rec_rhs, rec_lhs};
256+ }
257+ else if (expr.id () == ID_sva_and)
258+ {
259+ // maps cleanly to Boolean and
260+ auto &sva_iff = to_sva_iff_expr (expr);
261+ auto rec_lhs = SVA_to_LTL (sva_iff.lhs ());
262+ auto rec_rhs = SVA_to_LTL (sva_iff.rhs ());
263+ return and_exprt{rec_rhs, rec_lhs};
264+ }
265+ else if (expr.id () == ID_sva_or)
266+ {
267+ // maps cleanly to Boolean or
268+ auto &sva_iff = to_sva_iff_expr (expr);
269+ auto rec_lhs = SVA_to_LTL (sva_iff.lhs ());
270+ auto rec_rhs = SVA_to_LTL (sva_iff.rhs ());
271+ return or_exprt{rec_rhs, rec_lhs};
272+ }
241273 else if (
242274 expr.id () == ID_and || expr.id () == ID_implies || expr.id () == ID_or ||
243275 expr.id () == ID_not)
0 commit comments