@@ -370,6 +370,13 @@ static obligationst property_obligations_rec(
370
370
return obligationst{no_timeframes - 1 , true_exprt ()}; // works on NNF only
371
371
}
372
372
}
373
+ else if (property_expr.id () == ID_sva_indexed_s_nexttime)
374
+ {
375
+ auto &nexttime = to_sva_indexed_s_nexttime_expr (property_expr);
376
+ auto s_always = sva_ranged_always_exprt{
377
+ nexttime.index (), nexttime.index (), nexttime.op ()};
378
+ return property_obligations_rec (s_always, current, no_timeframes);
379
+ }
373
380
else if (property_expr.id () == ID_sva_s_until || property_expr.id () == ID_U)
374
381
{
375
382
auto &p = to_binary_expr (property_expr).lhs ();
@@ -552,6 +559,28 @@ static obligationst property_obligations_rec(
552
559
auto equal_expr = equal_exprt{sva_iff_expr.lhs (), sva_iff_expr.rhs ()};
553
560
return property_obligations_rec (equal_expr, current, no_timeframes);
554
561
}
562
+ else if (property_expr.id () == ID_sva_not)
563
+ {
564
+ auto ¬_expr = to_sva_not_expr (property_expr);
565
+ return property_obligations_rec (not_expr.lower (), current, no_timeframes);
566
+ }
567
+ else if (property_expr.id () == ID_sva_implies)
568
+ {
569
+ auto &implies_expr = to_sva_implies_expr (property_expr);
570
+ return property_obligations_rec (
571
+ implies_expr.lower (), current, no_timeframes);
572
+ }
573
+ else if (property_expr.id () == ID_sva_iff)
574
+ {
575
+ auto &iff_expr = to_sva_iff_expr (property_expr);
576
+ return property_obligations_rec (iff_expr.lower (), current, no_timeframes);
577
+ }
578
+ else if (property_expr.id () == ID_sva_case)
579
+ {
580
+ auto &case_expr = to_sva_case_expr (property_expr);
581
+ return property_obligations_rec (
582
+ case_expr.lowering (), current, no_timeframes);
583
+ }
555
584
else
556
585
{
557
586
return obligationst{
0 commit comments