Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 1 addition & 11 deletions src/ebmc/show_trans.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -243,17 +243,7 @@ int show_transt::show_trans()

PRECONDITION(transition_system.trans_expr.has_value());

std::cout << "Initial state constraints:\n\n";

print_verilog_constraints(transition_system.trans_expr->init(), std::cout);

std::cout << "State constraints:\n\n";

print_verilog_constraints(transition_system.trans_expr->invar(), std::cout);

std::cout << "Transition constraints:\n\n";

print_verilog_constraints(transition_system.trans_expr->trans(), std::cout);
transition_system.output(std::cout);

return 0;
}
Expand Down
43 changes: 43 additions & 0 deletions src/ebmc/transition_system.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,49 @@ Author: Daniel Kroening, dkr@amazon.com
#include <fstream>
#include <iostream>

static void output(
const exprt &expr,
std::ostream &out,
languaget &language,
const namespacet &ns)
{
if(expr.id() == ID_and)
{
for(auto &conjunct : expr.operands())
output(conjunct, out, language, ns);
}
else
{
std::string text;

if(language.from_expr(expr, text, ns))
{
throw ebmc_errort() << "failed to convert expression";
}

out << " " << text << '\n' << '\n';
}
}

void transition_systemt::output(std::ostream &out) const
{
auto language = get_language_from_mode(main_symbol->mode);

const namespacet ns{symbol_table};

out << "Initial state constraints:\n\n";

::output(trans_expr->init(), out, *language, ns);

out << "State constraints:\n\n";

::output(trans_expr->invar(), out, *language, ns);

out << "Transition constraints:\n\n";

::output(trans_expr->trans(), out, *language, ns);
}

int preprocess(const cmdlinet &cmdline, message_handlert &message_handler)
{
messaget message(message_handler);
Expand Down
2 changes: 2 additions & 0 deletions src/ebmc/transition_system.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ class transition_systemt
symbol_tablet symbol_table;
const symbolt *main_symbol;
optionalt<transt> trans_expr; // transition system expression

void output(std::ostream &) const;
};

transition_systemt get_transition_system(const cmdlinet &, message_handlert &);
Expand Down