@@ -530,6 +530,23 @@ static obligationst property_obligations_rec(
530530 instantiate_property (property_expr, current, no_timeframes)};
531531 }
532532 }
533+ else if (property_expr.id () == ID_sva_implies)
534+ {
535+ // We need NNF, hence we go via implies_exprt.
536+ // Note that this is not an SVA sequence operator.
537+ auto &sva_implies_expr = to_sva_implies_expr (property_expr);
538+ auto implies_expr =
539+ implies_exprt{sva_implies_expr.lhs (), sva_implies_expr.rhs ()};
540+ return property_obligations_rec (implies_expr, current, no_timeframes);
541+ }
542+ else if (property_expr.id () == ID_sva_iff)
543+ {
544+ // We need NNF, hence we go via equal_exprt.
545+ // Note that this is not an SVA sequence operator.
546+ auto &sva_iff_expr = to_sva_iff_expr (property_expr);
547+ auto equal_expr = equal_exprt{sva_iff_expr.lhs (), sva_iff_expr.rhs ()};
548+ return property_obligations_rec (equal_expr, current, no_timeframes);
549+ }
533550 else
534551 {
535552 return obligationst{
@@ -549,6 +566,26 @@ Function: property_obligations
549566
550567\*******************************************************************/
551568
569+ obligationst property_obligations (
570+ const exprt &property_expr,
571+ const mp_integer &t,
572+ const mp_integer &no_timeframes)
573+ {
574+ return property_obligations_rec (property_expr, t, no_timeframes);
575+ }
576+
577+ /* ******************************************************************\
578+
579+ Function: property_obligations
580+
581+ Inputs:
582+
583+ Outputs:
584+
585+ Purpose:
586+
587+ \*******************************************************************/
588+
552589obligationst property_obligations (
553590 const exprt &property_expr,
554591 const mp_integer &no_timeframes)
0 commit comments