File tree 1 file changed +21
-0
lines changed
1 file changed +21
-0
lines changed Original file line number Diff line number Diff line change @@ -337,6 +337,27 @@ std::optional<exprt> SVA_to_LTL(exprt expr)
337
337
else
338
338
return {};
339
339
}
340
+ else if (expr.id () == ID_sva_s_until)
341
+ {
342
+ auto &until = to_sva_s_until_expr (expr);
343
+ auto rec_lhs = SVA_to_LTL (until.lhs ());
344
+ auto rec_rhs = SVA_to_LTL (until.rhs ());
345
+ if (rec_lhs.has_value () && rec_rhs.has_value ())
346
+ return U_exprt{rec_lhs.value (), rec_rhs.value ()};
347
+ else
348
+ return {};
349
+ }
350
+ else if (expr.id () == ID_sva_s_until_with)
351
+ {
352
+ // This is release with swapped operands
353
+ auto &until_with = to_sva_s_until_with_expr (expr);
354
+ auto rec_lhs = SVA_to_LTL (until_with.lhs ());
355
+ auto rec_rhs = SVA_to_LTL (until_with.rhs ());
356
+ if (rec_lhs.has_value () && rec_rhs.has_value ())
357
+ return R_exprt{rec_lhs.value (), rec_rhs.value ()};
358
+ else
359
+ return {};
360
+ }
340
361
else if (!has_temporal_operator (expr))
341
362
{
342
363
return expr;
You can’t perform that action at this time.
0 commit comments