From 1a823fea96256e8848fe59dfe8d6e928fe75157b Mon Sep 17 00:00:00 2001 From: Alexandre Duret-Lutz Date: Sat, 25 Jun 2011 23:29:16 +0200 Subject: [PATCH] Revamp the ltl2tgba benchmark. * bench/ltl2tgba/algorithms: Reduce the number of Spot configuration tested. * bench/ltl2tgba/Makefile.am (run, small.txt, big.txt, known.txt): New rules. * bench/ltl2tgba/big, bench/ltl2tgba/small, bench/ltl2tgba/known: Add a 15min timeout to the lbtt configuration. * bench/ltl2tgba/defs.in: Adjust variable definitions to accept variable inderections. * bench/ltl2tgba/parseout.pl: Add an option to output the table in LaTeX. Also consider all formulae, not just the positive formulae. * bench/ltl2tgba/README: Update. --- ChangeLog | 17 ++ bench/ltl2tgba/Makefile.am | 10 ++ bench/ltl2tgba/README | 35 ++-- bench/ltl2tgba/algorithms | 351 +++++++------------------------------ bench/ltl2tgba/big | 3 + bench/ltl2tgba/defs.in | 19 +- bench/ltl2tgba/known | 3 + bench/ltl2tgba/parseout.pl | 21 ++- bench/ltl2tgba/small | 3 + 9 files changed, 145 insertions(+), 317 deletions(-) mode change 100644 => 100755 bench/ltl2tgba/big mode change 100644 => 100755 bench/ltl2tgba/known mode change 100644 => 100755 bench/ltl2tgba/small diff --git a/ChangeLog b/ChangeLog index 305e008fa..cfe4bb296 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2011-06-25 Alexandre Duret-Lutz + + Revamp the ltl2tgba benchmark. + + * bench/ltl2tgba/algorithms: Reduce the number of Spot configuration + tested. + * bench/ltl2tgba/Makefile.am (run, small.txt, big.txt, known.txt): + New rules. + * bench/ltl2tgba/big, bench/ltl2tgba/small, bench/ltl2tgba/known: + Add a 15min timeout to the lbtt configuration. + * bench/ltl2tgba/defs.in: Adjust variable definitions to accept + variable inderections. + * bench/ltl2tgba/parseout.pl: Add an option to output the table in + LaTeX. Also consider all formulae, not just the positive + formulae. + * bench/ltl2tgba/README: Update. + 2011-06-16 Alexandre Duret-Lutz * src/ltlvisit/tostring.cc (to_spin_string_visitor): Add missing break. diff --git a/bench/ltl2tgba/Makefile.am b/bench/ltl2tgba/Makefile.am index d1aaefb74..6bdcee220 100644 --- a/bench/ltl2tgba/Makefile.am +++ b/bench/ltl2tgba/Makefile.am @@ -9,3 +9,13 @@ CLEAN_FILES = \ big.cfg big.log big.txt \ small.cfg small.log small.txt \ known.cfg known.log known.txt + +.PHONY = run +run: small.txt big.txt known.txt wfair.txt + +small.txt: $(srcdir)/small $(srcdir)/algorithms $(top_srcdir)/configure.ac + $(srcdir)/small +big.txt: $(srcdir)/big $(srcdir)/algorithms $(top_srcdir)/configure.ac + $(srcdir)/big +known.txt: $(srcdir)/known $(srcdir)/algorithms $(srcdir)/formulae.ltl $(top_srcdir)/configure.ac + $(srcdir)/known diff --git a/bench/ltl2tgba/README b/bench/ltl2tgba/README index e2c4b6505..3420b8bd4 100644 --- a/bench/ltl2tgba/README +++ b/bench/ltl2tgba/README @@ -73,7 +73,7 @@ that are not available. + fputc('\n',output); } fprintf(output,"-1 "); - + * The automata produced by Wring are translated to the syntax understood by lbtt using `wring2lbtt' (by the same author of @@ -116,6 +116,11 @@ checking for wring2lbtt... wring2lbtt ./big or ./known + Alternatively running `make run' (in that directory) will run all + three scripts. If you have a multicore processor, you may want + to run `make -j3 run' to run these three scripts in parallel. + None of the tested translators use more than one core. + 5) Wait... ======================= @@ -126,22 +131,24 @@ The files small.txt, big.txt, and known.txt contain a summary of the results. Each algorithm is described as two lines formated as follows. - 18: FM, gen, +symb_merge, -exprop, LTLopt - 494 / 975 / 100 / 4.25 98798 / 3935920 (100) + 6: Spot FM (degen) + 834 / 2419 / 188 / 2.86 166579 / 8749162 (188) -The first line presents the name of the algorithm ("FM, gen, -+symb_merge, -exprop, LTLopt") and its number for lbtt (18). -The number is useless. See http://spot.lip6.fr/wiki/LtlTranslationBenchmark -for the naming conventions. +The first line presents the name of the algorithm ("Spot FM (degen)") +and its number for lbtt (6). The number is useless. In this example, +"FM (degen)" means that the Couvreur/FM algorithm is used to translate +LTL formula into a TGBA that is then DEGENeralized. You may want to +look in the file `algorithms' to see which options are used for each +name, if the naming is unclear. The second line display 7 values: - 1. the total number of states of all generated automata (494) - 2. the total number of transitions of all generated automata (975) - 3. the total number of acceptance conditions of all generated automata (100) - 4. the cumulated translation time in seconds (4.25) - 5. the total number of states in the synchronized products (98798) - 6. the total number of transitions in the synchronized products (3935920) - 7. the number of translated automata (100) + 1. the total number of states of all generated automata (834) + 2. the total number of transitions of all generated automata (2419) + 3. the total number of acceptance conditions of all generated automata (188) + 4. the cumulated translation time in seconds (2.86) + 5. the total number of states in the synchronized products (166579) + 6. the total number of transitions in the synchronized products (8749162) + 7. the number of translated formulae (188) Notes: diff --git a/bench/ltl2tgba/algorithms b/bench/ltl2tgba/algorithms index ee688d806..5fe7ba868 100644 --- a/bench/ltl2tgba/algorithms +++ b/bench/ltl2tgba/algorithms @@ -1,269 +1,4 @@ cat >"$conffile" <>>>>> & @>>>>>> & @>>>>>>>>> & @>>>>>>>>>>> \\ % @>> +$tool, sep($a), sep($b), sep($2), sep($3), sep($1) +. + format STDOUT2 = ||<:>@>>||@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<||<)>@>>>>>||<)>@>>>>>||<)>@>>>||<)>@#####.##||<)>@>>>>>>>>||<)>@>>>>>>>>||<)>@>>|| $num, $tool, $a, $b, $acc, $time, $2, $3, $1 @@ -39,7 +53,8 @@ $num, $tool $a, $b, $acc, $time, $2, $3, $1 . -$~ = STDOUT2 if (exists $ENV{'WIKI'}); +$~ = STDOUT2 if (exists $ENV{'WIKIOUTPUT'}); +$~ = STDOUT3 if (exists $ENV{'LATEXOUTPUT'}); my %impl; @@ -49,12 +64,12 @@ while (<>) { $impl{$1} = $2 unless exists $impl{$1}; } - if (/Pos\. formulae \|\s*([^|]*?)\s*\|\s*([^|]*?)\s*\|$/) + if (/All formulae\s*\|\s*([^|]*?)\s*\|\s*([^|]*?)\s*\|$/) { $acc = $1; $time = $2 || 0; } - next unless /Pos\. formulae \|\s*(.*?)\s*\|\s*(.*?)\s*\|\s*(.*?)\s*\|/; + next unless /All formulae\s+\|\s*(.*?)\s*\|\s*(.*?)\s*\|\s*(.*?)\s*\|/; if ($line % 2) { $num = $line >> 1; diff --git a/bench/ltl2tgba/small b/bench/ltl2tgba/small old mode 100644 new mode 100755 index 09d5bed1b..339e442eb --- a/bench/ltl2tgba/small +++ b/bench/ltl2tgba/small @@ -1,5 +1,7 @@ #!/bin/sh # -*- shell-script -*- +# Copyright (C) 2011 Laboratoire de Recherche et Developpement de +# l'Epita (LRDE) # Copyright (C) 2005 Laboratoire d'Informatique de Paris 6 (LIP6), # département Systèmes Répartis Coopératifs (SRC), Université Pierre # et Marie Curie. @@ -38,6 +40,7 @@ GlobalOptions # ComparisonCheck = no ConsistencyCheck = no # IntersectionCheck = no + TranslatorTimeout = 15min } StateSpaceOptions