File tree 3 files changed +29
-4
lines changed
3 files changed +29
-4
lines changed Original file line number Diff line number Diff line change @@ -63,6 +63,16 @@ bool has_low_completeness_threshold(const exprt &expr)
63
63
upper_int <= 1 ;
64
64
}
65
65
}
66
+ else if (
67
+ expr.id () == ID_sva_strong || expr.id () == ID_sva_weak ||
68
+ expr.id () == ID_sva_sequence_property)
69
+ {
70
+ auto &sequence = to_sva_sequence_property_expr_base (expr).sequence ();
71
+ if (!is_SVA_sequence_operator (sequence))
72
+ return true ;
73
+ else
74
+ return false ;
75
+ }
66
76
else
67
77
return false ;
68
78
}
Original file line number Diff line number Diff line change @@ -132,7 +132,9 @@ bool is_SVA_operator(const exprt &expr)
132
132
id == ID_sva_overlapped_implication ||
133
133
id == ID_sva_non_overlapped_implication ||
134
134
id == ID_sva_overlapped_followed_by ||
135
- id == ID_sva_nonoverlapped_followed_by;
135
+ id == ID_sva_nonoverlapped_followed_by ||
136
+ id == ID_sva_sequence_property || id == ID_sva_weak ||
137
+ id == ID_sva_strong;
136
138
}
137
139
138
140
bool is_SVA (const exprt &expr)
Original file line number Diff line number Diff line change @@ -527,10 +527,23 @@ static obligationst property_obligations_rec(
527
527
return property_obligations_rec (
528
528
op_negated_opt.value (), current, no_timeframes);
529
529
}
530
- else if (is_SVA_sequence_operator (op))
530
+ else if (
531
+ op.id () == ID_sva_strong || op.id () == ID_sva_weak ||
532
+ op.id () == ID_sva_sequence_property)
531
533
{
532
- return obligationst{
533
- instantiate_property (property_expr, current, no_timeframes)};
534
+ // The sequence must not match.
535
+ auto &sequence = to_sva_sequence_property_expr_base (op).sequence ();
536
+
537
+ const auto matches =
538
+ instantiate_sequence (sequence, current, no_timeframes);
539
+ obligationst obligations;
540
+
541
+ for (auto &match : matches)
542
+ {
543
+ obligations.add (match.end_time , not_exprt{match.condition });
544
+ }
545
+
546
+ return obligations;
534
547
}
535
548
else if (is_temporal_operator (op))
536
549
{
You can’t perform that action at this time.
0 commit comments