tgba_digraph: add a copy constructor, and obsolete dupexp

* src/tgba/tgbagraph.hh, src/tgba/tgbagraph.cc: Add a copy constructor,
and some method to purge unreachable states.
* src/graph/graph.hh (defrag_states): Erase transition of removed
states.
* src/tgbaalgos/complete.cc, src/tgbaalgos/compsusp.cc,
src/tgbaalgos/dtgbacomp.cc, src/tgbaalgos/simulation.cc,
src/tgbatest/checkpsl.cc, src/tgbatest/emptchk.cc,
src/tgbatest/ltl2tgba.cc: Adjust to use make_tgba_digraph() instead
of tgba_dupexp_dfs() or tgba_dupexp_bfs().
* src/tgbaalgos/dupexp.cc, src/tgbaalgos/dupexp.hh: Use
make_tgba_digraph() when possible.
* src/tgbatest/det.test, src/tgbatest/sim.test: Adjust expected results.
This commit is contained in:
Alexandre Duret-Lutz 2014-10-28 18:47:19 +01:00
parent 971788fdbe
commit 923785f76a
14 changed files with 128 additions and 27 deletions

View file

@ -29,7 +29,6 @@
#include "tgbaalgos/sccfilter.hh"
#include "tgba/tgbaproduct.hh"
#include "tgbaalgos/dotty.hh"
#include "tgbaalgos/dupexp.hh"
void
syntax(char* prog)
@ -93,8 +92,8 @@ main(int argc, char** argv)
if (fpos->is_ltl_formula())
{
auto apos = scc_filter(spot::tgba_dupexp_dfs(ltl_to_taa(fpos, d)));
auto aneg = scc_filter(spot::tgba_dupexp_dfs(ltl_to_taa(fneg, d)));
auto apos = scc_filter(make_tgba_digraph(ltl_to_taa(fpos, d)));
auto aneg = scc_filter(make_tgba_digraph(ltl_to_taa(fneg, d)));
if (!spot::product(apos, aneg)->is_empty())
{
std::cerr << "non-empty intersection between pos and neg (TAA)\n";

View file

@ -103,9 +103,9 @@ digraph G {
2 -> 2 [label="1"]
2 -> 3 [label="!a"]
2 -> 4 [label="!b"]
3 [label="3"]
3 [label="3", peripheries=2]
3 -> 3 [label="!a\n{0}"]
4 [label="4"]
4 [label="4", peripheries=2]
4 -> 4 [label="!b\n{0}"]
}
EOF

View file

@ -31,7 +31,6 @@
#include "tgba/tgbaproduct.hh"
#include "tgbaalgos/gtec/gtec.hh"
#include "tgbaalgos/dotty.hh"
#include "tgbaalgos/dupexp.hh"
#include "tgbaalgos/emptiness.hh"
void
@ -103,7 +102,7 @@ main(int argc, char** argv)
{
auto a = spot::ltl_to_taa(f, d);
aut[0] = a;
aut[1] = spot::degeneralize_tba(spot::tgba_dupexp_bfs(a));
aut[1] = spot::degeneralize_tba(spot::make_tgba_digraph(a));
}
{
auto a = spot::ltl_to_tgba_fm(f, d);

View file

@ -324,7 +324,7 @@ spot::tgba_digraph_ptr ensure_digraph(const spot::tgba_ptr& a)
auto aa = std::dynamic_pointer_cast<spot::tgba_digraph>(a);
if (aa)
return aa;
return spot::tgba_dupexp_dfs(a);
return spot::make_tgba_digraph(a);
}
int

View file

@ -35,8 +35,8 @@ run 0 ../ltl2tgba -X -RDCS -b in.tgba > out.tgba
cat >expected.tgba <<EOF
acc = "0";
"0", "3", "b",;
"3", "3", "a", "0";
"0", "1", "b",;
"1", "1", "a", "0";
EOF
diff out.tgba expected.tgba
@ -44,8 +44,8 @@ diff out.tgba expected.tgba
run 0 ../ltl2tgba -RDCIS -b XXXXGFa > out.tgba
cat >expected.tgba <<EOF
acc = "a";
"0", "0", "a", "a";
acc = "0";
"0", "0", "a", "0";
"0", "0", "!a",;
EOF