@@ -86,9 +86,13 @@ exprt normalize_pre_sva_overlapped_implication(
8686exprt normalize_pre_sva_non_overlapped_implication (
8787 sva_non_overlapped_implication_exprt expr)
8888{
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.
9090 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+ }
9296 else
9397 return std::move (expr);
9498}
@@ -178,7 +182,7 @@ exprt normalize_property(exprt expr)
178182 else if (expr.id () == ID_sva_s_nexttime)
179183 {
180184 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 ()};
182186 }
183187 else if (expr.id () == ID_sva_indexed_nexttime)
184188 {
@@ -193,11 +197,18 @@ exprt normalize_property(exprt expr)
193197 nexttime_expr.index (), nexttime_expr.index (), nexttime_expr.op ()};
194198 }
195199 else if (expr.id () == ID_sva_cycle_delay)
200+ {
196201 expr = normalize_pre_sva_cycle_delay (to_sva_cycle_delay_expr (expr));
202+ }
197203 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+ }
199208 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+ }
201212 else if (expr.id () == ID_sva_sequence_concatenation)
202213 {
203214 auto &sequence_concatenation = to_sva_sequence_concatenation_expr (expr);
0 commit comments