@@ -27,8 +27,9 @@ exprt normalize_pre_sva_non_overlapped_implication(
2727 {
2828 const auto &lhs_cond = to_sva_boolean_expr (expr.lhs ()).op ();
2929 auto one = natural_typet{}.one_expr ();
30- return or_exprt{
31- not_exprt{lhs_cond}, sva_ranged_always_exprt{one, one, expr.rhs ()}};
30+ auto ranged_always = sva_ranged_always_exprt{one, one, expr.rhs ()};
31+ ranged_always.type () = bool_typet{};
32+ return or_exprt{not_exprt{lhs_cond}, ranged_always};
3233 }
3334 else
3435 return std::move (expr);
@@ -63,24 +64,32 @@ exprt normalize_property_rec(exprt expr)
6364 else if (expr.id () == ID_sva_nexttime)
6465 {
6566 auto one = natural_typet{}.one_expr ();
66- expr = sva_ranged_always_exprt{one, one, to_sva_nexttime_expr (expr).op ()};
67+ expr = sva_ranged_always_exprt{
68+ one, one, to_sva_nexttime_expr (expr).op (), bool_typet{}};
6769 }
6870 else if (expr.id () == ID_sva_s_nexttime)
6971 {
7072 auto one = natural_typet{}.one_expr ();
71- expr = sva_s_always_exprt{one, one, to_sva_s_nexttime_expr (expr).op ()};
73+ expr = sva_s_always_exprt{
74+ one, one, to_sva_s_nexttime_expr (expr).op (), bool_typet{}};
7275 }
7376 else if (expr.id () == ID_sva_indexed_nexttime)
7477 {
7578 auto &nexttime_expr = to_sva_indexed_nexttime_expr (expr);
7679 expr = sva_ranged_always_exprt{
77- nexttime_expr.index (), nexttime_expr.index (), nexttime_expr.op ()};
80+ nexttime_expr.index (),
81+ nexttime_expr.index (),
82+ nexttime_expr.op (),
83+ bool_typet{}};
7884 }
7985 else if (expr.id () == ID_sva_indexed_s_nexttime)
8086 {
8187 auto &nexttime_expr = to_sva_indexed_s_nexttime_expr (expr);
8288 expr = sva_s_always_exprt{
83- nexttime_expr.index (), nexttime_expr.index (), nexttime_expr.op ()};
89+ nexttime_expr.index (),
90+ nexttime_expr.index (),
91+ nexttime_expr.op (),
92+ bool_typet{}};
8493 }
8594
8695 // normalize the operands
@@ -104,7 +113,7 @@ exprt normalize_property(exprt expr)
104113{
105114 // top-level only
106115 if (expr.id () == ID_sva_cover)
107- expr = sva_always_exprt{not_exprt {to_sva_cover_expr (expr).op ()}};
116+ expr = sva_always_exprt{sva_not_exprt {to_sva_cover_expr (expr).op ()}};
108117
109118 expr = trivial_sva (expr);
110119
0 commit comments