Skip to content

Commit 11725a2

Browse files
committed
SVA-to-Buechi: eventually
This adds support for SVA eventually to the SVA-to-Buechi translation.
1 parent b97a3e7 commit 11725a2

File tree

3 files changed

+23
-7
lines changed

3 files changed

+23
-7
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
../../verilog/SVA/eventually1.sv
3+
--buechi --bound 20
4+
^\[main\.p0\] always \(main\.counter == 1 implies \(eventually \[1:2\] main\.counter == 3\)\): PROVED up to bound 20$
5+
^EXIT=0$
6+
^SIGNAL=0$
7+
--
8+
^warning: ignoring
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
../../verilog/SVA/eventually2.sv
3+
--buechi --bound 20
4+
^\[main\.p0\] always \(eventually \[0:2\] main\.counter == 3\): REFUTED$
5+
^EXIT=10$
6+
^SIGNAL=0$
7+
--
8+
^warning: ignoring

src/temporal-logic/ltl_sva_to_string.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -184,20 +184,20 @@ ltl_sva_to_stringt::rec(const exprt &expr, modet mode)
184184
PRECONDITION(mode == PROPERTY);
185185
return prefix("F", expr, mode);
186186
}
187-
else if(expr.id() == ID_sva_ranged_s_eventually)
187+
else if(expr.id() == ID_sva_ranged_s_eventually || expr.id() == ID_sva_eventually)
188188
{
189189
PRECONDITION(mode == PROPERTY);
190-
auto &s_eventually = to_sva_ranged_s_eventually_expr(expr);
191-
auto new_expr = unary_exprt{ID_sva_ranged_s_eventually, s_eventually.op()};
192-
auto lower = numeric_cast_v<mp_integer>(s_eventually.lower());
193-
if(!s_eventually.is_range())
190+
auto &eventually = to_sva_ranged_predicate_exprt(expr);
191+
auto new_expr = unary_exprt{expr.id(), eventually.op()};
192+
auto lower = numeric_cast_v<mp_integer>(eventually.lower());
193+
if(!eventually.is_range())
194194
return prefix("F[" + integer2string(lower) + "]", new_expr, mode);
195-
else if(s_eventually.is_unbounded())
195+
else if(eventually.is_unbounded())
196196
return prefix("F[" + integer2string(lower) + ":]", new_expr, mode);
197197
else
198198
{
199199
auto upper =
200-
numeric_cast_v<mp_integer>(to_constant_expr(s_eventually.upper()));
200+
numeric_cast_v<mp_integer>(to_constant_expr(eventually.upper()));
201201
return prefix(
202202
"F[" + integer2string(lower) + ":" + integer2string(upper) + "]",
203203
new_expr,

0 commit comments

Comments
 (0)