Skip to content

Commit 5aa5782

Browse files
committed
SVA-to-Buechi: s_always
This adds conversion for SVA s_always to the SVA-to-Buechi translation.
1 parent 2384b44 commit 5aa5782

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

src/temporal-logic/ltl_sva_to_string.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,19 @@ ltl_sva_to_stringt::rec(const exprt &expr, modet mode)
177177
}
178178
else if(expr.id() == ID_sva_s_always)
179179
{
180-
throw ebmc_errort{} << "cannot convert " << expr.id() << " to Buechi";
180+
auto &always = to_sva_s_always_expr(expr);
181+
auto new_expr = unary_exprt{ID_sva_s_always, always.op()};
182+
auto from = numeric_cast_v<mp_integer>(always.from());
183+
if(!always.is_range())
184+
return prefix("F[" + integer2string(from) + "]", new_expr, mode);
185+
else
186+
{
187+
auto to = numeric_cast_v<mp_integer>(always.to());
188+
return prefix(
189+
"F[" + integer2string(from) + ":" + integer2string(to) + "]",
190+
new_expr,
191+
mode);
192+
}
181193
}
182194
else if(expr.id() == ID_sva_s_eventually)
183195
{

0 commit comments

Comments
 (0)