@@ -86,9 +86,13 @@ exprt normalize_pre_sva_overlapped_implication(
86
86
exprt normalize_pre_sva_non_overlapped_implication (
87
87
sva_non_overlapped_implication_exprt expr)
88
88
{
89
- // Same as a->nexttime b if lhs is not a sequence.
89
+ // Same as a->always[1:1] b if lhs is not a sequence.
90
90
if (!is_SVA_sequence (expr.lhs ()))
91
- return or_exprt{not_exprt{expr.lhs ()}, sva_nexttime_exprt{expr.rhs ()}};
91
+ {
92
+ auto one = natural_typet{}.one_expr ();
93
+ return or_exprt{
94
+ not_exprt{expr.lhs ()}, sva_ranged_always_exprt{one, one, expr.rhs ()}};
95
+ }
92
96
else
93
97
return std::move (expr);
94
98
}
@@ -178,7 +182,7 @@ exprt normalize_property(exprt expr)
178
182
else if (expr.id () == ID_sva_s_nexttime)
179
183
{
180
184
auto one = natural_typet{}.one_expr ();
181
- expr = sva_ranged_always_exprt {one, one, to_sva_s_nexttime_expr (expr).op ()};
185
+ expr = sva_s_always_exprt {one, one, to_sva_s_nexttime_expr (expr).op ()};
182
186
}
183
187
else if (expr.id () == ID_sva_indexed_nexttime)
184
188
{
@@ -193,11 +197,18 @@ exprt normalize_property(exprt expr)
193
197
nexttime_expr.index (), nexttime_expr.index (), nexttime_expr.op ()};
194
198
}
195
199
else if (expr.id () == ID_sva_cycle_delay)
200
+ {
196
201
expr = normalize_pre_sva_cycle_delay (to_sva_cycle_delay_expr (expr));
202
+ }
197
203
else if (expr.id () == ID_sva_cycle_delay_plus)
198
- expr = F_exprt{X_exprt{to_sva_cycle_delay_plus_expr (expr).op ()}};
204
+ {
205
+ expr = sva_s_eventually_exprt{
206
+ sva_s_nexttime_exprt{to_sva_cycle_delay_plus_expr (expr).op ()}};
207
+ }
199
208
else if (expr.id () == ID_sva_cycle_delay_star)
200
- expr = F_exprt{to_sva_cycle_delay_star_expr (expr).op ()};
209
+ {
210
+ expr = sva_s_eventually_exprt{to_sva_cycle_delay_star_expr (expr).op ()};
211
+ }
201
212
else if (expr.id () == ID_sva_sequence_concatenation)
202
213
{
203
214
auto &sequence_concatenation = to_sva_sequence_concatenation_expr (expr);
0 commit comments