Keep track of conditions in SCC, and add a more verbose dump.

* src/tgbaalgos/scc.hh (scc_map::scc_of_state,
scc_map::cond_set_of, scc_map::acc_set_of, scc_map::states_of):
New functions.
(scc_map::scc::conds): New attribute.
(dump_scc_dot): Take an optional VERBOSE argument.
* src/tgbaalgos/scc.cc (scc_map::scc_of_state,
scc_map::cond_set_of, scc_map::acc_set_of, scc_map::states_of):
Implement these new functions.
(dump_scc_dot): Display number of states, conditions and
acceptance conditions, with VERBOSE is set.
(build_map): Fill the new scc_map::scc::cond field.
This commit is contained in:
Alexandre Duret-Lutz 2009-05-28 13:08:20 +02:00
parent cbfdcca1f9
commit 07ead6134e
4 changed files with 112 additions and 21 deletions

View file

@ -1,4 +1,4 @@
// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Laboratoire
// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Laboratoire
// d'Informatique de Paris 6 (LIP6), département Systèmes Répartis
// Coopératifs (SRC), Université Pierre et Marie Curie.
//
@ -93,7 +93,8 @@ syntax(char* prog)
<< " (requires -e)" << std::endl
<< " -k display statistics on the TGBA instead of dumping it"
<< std::endl
<< " -K dump the graph of SCCs in dot"
<< " -K dump the graph of SCCs in dot format" << std::endl
<< " -KV verbosely dump the graph of SCCs in dot format"
<< std::endl
<< " -L fair-loop approximation (implies -f)" << std::endl
<< " -m try to reduce accepting runs, in a second pass"
@ -332,6 +333,10 @@ main(int argc, char** argv)
{
output = 10;
}
else if (!strcmp(argv[formula_index], "-KV"))
{
output = 11;
}
else if (!strcmp(argv[formula_index], "-L"))
{
fair_loop_approx = true;
@ -742,7 +747,10 @@ main(int argc, char** argv)
build_scc_stats(a).dump(std::cout);
break;
case 10:
dump_scc_dot(a, std::cout);
dump_scc_dot(a, std::cout, false);
break;
case 11:
dump_scc_dot(a, std::cout, true);
break;
default:
assert(!"unknown output option");