@@ -519,6 +519,11 @@ static obligationst property_obligations_rec(
519
519
return property_obligations_rec (
520
520
op_negated_opt.value (), current, no_timeframes);
521
521
}
522
+ else if (is_SVA_sequence (op))
523
+ {
524
+ return obligationst{
525
+ instantiate_property (property_expr, current, no_timeframes)};
526
+ }
522
527
else if (is_temporal_operator (op))
523
528
{
524
529
throw ebmc_errort () << " failed to make NNF for " << op.id ();
@@ -530,6 +535,23 @@ static obligationst property_obligations_rec(
530
535
instantiate_property (property_expr, current, no_timeframes)};
531
536
}
532
537
}
538
+ else if (property_expr.id () == ID_sva_implies)
539
+ {
540
+ // We need NNF, hence we go via implies_exprt.
541
+ // Note that this is not an SVA sequence operator.
542
+ auto &sva_implies_expr = to_sva_implies_expr (property_expr);
543
+ auto implies_expr =
544
+ implies_exprt{sva_implies_expr.lhs (), sva_implies_expr.rhs ()};
545
+ return property_obligations_rec (implies_expr, current, no_timeframes);
546
+ }
547
+ else if (property_expr.id () == ID_sva_iff)
548
+ {
549
+ // We need NNF, hence we go via equal_exprt.
550
+ // Note that this is not an SVA sequence operator.
551
+ auto &sva_iff_expr = to_sva_iff_expr (property_expr);
552
+ auto equal_expr = equal_exprt{sva_iff_expr.lhs (), sva_iff_expr.rhs ()};
553
+ return property_obligations_rec (equal_expr, current, no_timeframes);
554
+ }
533
555
else
534
556
{
535
557
return obligationst{
@@ -549,6 +571,26 @@ Function: property_obligations
549
571
550
572
\*******************************************************************/
551
573
574
+ obligationst property_obligations (
575
+ const exprt &property_expr,
576
+ const mp_integer &t,
577
+ const mp_integer &no_timeframes)
578
+ {
579
+ return property_obligations_rec (property_expr, t, no_timeframes);
580
+ }
581
+
582
+ /* ******************************************************************\
583
+
584
+ Function: property_obligations
585
+
586
+ Inputs:
587
+
588
+ Outputs:
589
+
590
+ Purpose:
591
+
592
+ \*******************************************************************/
593
+
552
594
obligationst property_obligations (
553
595
const exprt &property_expr,
554
596
const mp_integer &no_timeframes)
0 commit comments