Skip to content

Commit 3f102f5

Browse files
committed
ebmc: move transition system printing code to its class
1 parent 6806280 commit 3f102f5

File tree

3 files changed

+46
-11
lines changed

3 files changed

+46
-11
lines changed

src/ebmc/show_trans.cpp

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -243,17 +243,7 @@ int show_transt::show_trans()
243243

244244
PRECONDITION(transition_system.trans_expr.has_value());
245245

246-
std::cout << "Initial state constraints:\n\n";
247-
248-
print_verilog_constraints(transition_system.trans_expr->init(), std::cout);
249-
250-
std::cout << "State constraints:\n\n";
251-
252-
print_verilog_constraints(transition_system.trans_expr->invar(), std::cout);
253-
254-
std::cout << "Transition constraints:\n\n";
255-
256-
print_verilog_constraints(transition_system.trans_expr->trans(), std::cout);
246+
transition_system.output(std::cout);
257247

258248
return 0;
259249
}

src/ebmc/transition_system.cpp

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,49 @@ Author: Daniel Kroening, [email protected]
2828
#include <fstream>
2929
#include <iostream>
3030

31+
static void output(
32+
const exprt &expr,
33+
std::ostream &out,
34+
languaget &language,
35+
const namespacet &ns)
36+
{
37+
if(expr.id() == ID_and)
38+
{
39+
for(auto &conjunct : expr.operands())
40+
output(conjunct, out, language, ns);
41+
}
42+
else
43+
{
44+
std::string text;
45+
46+
if(language.from_expr(expr, text, ns))
47+
{
48+
throw ebmc_errort() << "failed to convert expression";
49+
}
50+
51+
out << " " << text << '\n' << '\n';
52+
}
53+
}
54+
55+
void transition_systemt::output(std::ostream &out) const
56+
{
57+
auto language = get_language_from_mode(main_symbol->mode);
58+
59+
const namespacet ns{symbol_table};
60+
61+
out << "Initial state constraints:\n\n";
62+
63+
::output(trans_expr->init(), out, *language, ns);
64+
65+
out << "State constraints:\n\n";
66+
67+
::output(trans_expr->invar(), out, *language, ns);
68+
69+
out << "Transition constraints:\n\n";
70+
71+
::output(trans_expr->trans(), out, *language, ns);
72+
}
73+
3174
int preprocess(const cmdlinet &cmdline, message_handlert &message_handler)
3275
{
3376
messaget message(message_handler);

src/ebmc/transition_system.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ class transition_systemt
2121
symbol_tablet symbol_table;
2222
const symbolt *main_symbol;
2323
optionalt<transt> trans_expr; // transition system expression
24+
25+
void output(std::ostream &) const;
2426
};
2527

2628
transition_systemt get_transition_system(const cmdlinet &, message_handlert &);

0 commit comments

Comments
 (0)