- 05 Dec, 2014 1 commit
-
-
Alexandre Duret-Lutz authored
* src/ltlvisit/simplify.cc, doc/tl/tl.tex: Remove the rule. * src/ltltest/reduc0.test: Add a regression test. * src/ltltest/reduccmp.test: Adjust test cases for its removal. * NEWS: Mention it.
-
- 17 May, 2014 1 commit
-
-
Alexandre Duret-Lutz authored
star_normal_form() used to be called under bounded repetitions like [*0..4], but some of these rewritings are only correct for [*0..]. For instance (a*|1)[*] can be rewritten to 1[*] but (a*|1)[*0..1] cannot be rewritten to 1[*0..1] it would be correct to rewrite the latter as (a[+]|1)[*0..1], canceling the empty word in a*. Also (a*;b*)[*] can be rewritten to (a|b)[*] but (a*;b*)[*0..1] cannot be rewritten to (a|b)[*0..1] and it cannot either be rewritten to (a[+]|b[+])[*0..1]. This patch introduces a new function to implement rewritings under bounded repetition. * src/ltlvisit/snf.hh, src/ltlvisit/snf.cc (star_normal_form_unbounded): New function. * src/ltlvisit/simplify.cc: Use it. * src/ltltest/reduccmp.test: Add tests. * doc/tl/tl.tex: Document the rewritings implemented.
-
- 16 May, 2014 1 commit
-
-
Alexandre Duret-Lutz authored
star_normal_form() used to be called under bounded repetitions like [*0..4], but some of these rewritings are only correct for [*0..]. For instance (a*|1)[*] can be rewritten to 1[*] but (a*|1)[*0..1] cannot be rewritten to 1[*0..1] it would be correct to rewrite the latter as (a[+]|1)[*0..1], canceling the empty word in a*. Also (a*;b*)[*] can be rewritten to (a|b)[*] but (a*;b*)[*0..1] cannot be rewritten to (a|b)[*0..1] and it cannot either be rewritten to (a[+]|b[+])[*0..1]. This patch introduces a new function to implement rewritings under bounded repetition. * src/ltlvisit/snf.hh, src/ltlvisit/snf.cc (star_normal_form_unbounded): New function. * src/ltlvisit/simplify.cc: Use it. * src/ltltest/reduccmp.test: Add tests. * doc/tl/tl.tex: Document the rewritings implemented.
-
- 13 May, 2014 2 commits
-
-
Alexandre Duret-Lutz authored
Fortunately was only enabled with the ltl_simplifier_options::favor_event_univ option, which cannot yet be turned on from the command-line tools. * src/ltlvisit/simplify.cc, doc/tl/tl.tex: Remove the rule. * src/ltltest/eventuniv.test: Adjust. * NEWS: Mention the bug.
-
Alexandre Duret-Lutz authored
* src/ltlvisit/simplify.cc: Remove two incorrect rules, and partially disable another one. * doc/tl/tl.tex: Reflect the change. * src/ltltest/reduccmp.test: Likewise. * src/ltltest/equals.cc: Add safety checks to catch such errors in the future. * NEWS: Mention the bug.
-
- 17 Oct, 2013 1 commit
-
-
Alexandre Duret-Lutz authored
-
- 29 Jul, 2013 1 commit
-
-
Alexandre Duret-Lutz authored
This follows from a discussion with Ernesto Posse. The semantics for the {...} operator we use in Spot comes from the cl(...) operator defined by Dax et al. (ATVA'09). This is slightly different from the the way the PSL spec interprets a SERE used in the context of a temporal formula (appendix B.3.1.1.2, item 7). cl({a;b}[*]) would match any infinite word that starts with a;b, while in PSL {a;b}[*] would match any infinite word that alternates a and b. Spot documents that {SERE} in a temporal formula is interpreted like cl(SERE) however it failed to ignore the empty prefix of SERE. So {{a;b}[*]} would match anything, because the empty word is a prefix of any word, and is also accepted by {a;b}[*]. Some trivial identities and basic rewritings were also wrongly considering these empty prefixes as well. This patch therefore fixes the translation and syntactic simplification rules, to really ignore these empty prefixes. In some future version it should probably be wise to rename this {...} operator as cl(...), and use {...} for the semantics given in appendix B.3.1.1.2 (item 7) of the PSL specs. * src/ltlast/unop.cc: Fix trivial identities. We have {[*0]} = 0 and !{[*0]} = 1. * src/ltlvisit/simplify.cc: Fix basic rewriting rules. {e[*]} = {e} and !{e[*]} = !{e}. * doc/tl/tl.tex: Adjust documentation. * doc/tl/tl.bib (dax.09.atva): New entry. * src/tgbaalgos/ltl2tgba_fm.cc: Do not accept any infinite word for {e[*]} just because the empty prefix is matched by e[*]. * src/tgbatest/ltl2tgba.test: Add a test case. * NEWS: Mention it. * THANKS: Add Ernesto.
-
- 27 Apr, 2013 1 commit
-
-
Alexandre Duret-Lutz authored
The set of rules enabled by favor_even_univ try to "lift" the subformulae that are both eventual and universal, so they appear higher in the AST. This is contrary to what we used to do (and still do when the option is unset), were we try to postpone such subformulae (by moving them down the AST). It is still a bit experimental. * src/ltlvisit/simplify.hh: Add option favor_event_univ. * src/ltlvisit/simplify.cc: Implement new rewriting rules. * doc/tl/tl.tex: Document them. * src/tgbatest/ltl2tgba.cc: Add option -ra to enable them. * src/tgbatest/spotlbtt.test: Test the translation with this option. * src/ltltest/reduc.cc, src/ltltest/equals.cc: Add option to enable the new rules. * src/ltltest/eventuniv.test: New file to test them. * src/ltltest/Makefile.am: Add it.
-
- 11 Jan, 2013 1 commit
-
-
Alexandre Duret-Lutz authored
GF(a|Xb) = GF(a|b) GF(a|Fb) = GF(a|b) FG(a&Xb) = FG(a&b) FG(a&Gb) = FG(a&b) * src/ltlvisit/simplify.cc: Implement them. * NEWS, doc/tl/tl.tex: Document them. * src/ltltest/reduccmp.test: Test then.
-
- 14 Oct, 2012 1 commit
-
-
Alexandre Duret-Lutz authored
* src/ltlast/formula.hh (has_lbt_atomic_props): New method. * src/ltlast/formula.cc (printprops): Display it. * src/ltlast/atomic_prop.cc: Update it. * src/bin/ltlcheck.cc, src/bin/genltl.cc: Use it. * doc/tl/tl.tex: Menton has_lbt_atomic_props().
-
- 24 Sep, 2012 2 commits
-
-
Alexandre Duret-Lutz authored
* src/ltlvisit/simplify.cc: Here. * doc/tl/tl.tex: Document them. * src/ltltest/reduccmp.test: Test them.
-
Alexandre Duret-Lutz authored
* src/ltlvisit/simplify.cc: Add them. * src/ltltest/reduccmp.test: Check them. * doc/tl/tl.tex: Document them.
-
- 29 Aug, 2012 1 commit
-
-
Alexandre Duret-Lutz authored
This somehow revert changes from 2010-01-30 which killed this use of star to make room for the Kleen star. Here we only allow '*' in the temporal formula, so that it can still be the Kleen star in SERE. The motivation for '*' available as And is better compatibility with Wring and VIS. * src/ltlparse/ltlscan.ll: Distinguish * from [*]. * src/ltlparse/ltlparse.yy: Allows * to be used as AND between temporal formulae. * src/ltltest/equals.test, src/ltltest/parse.test: Add a few tests. * doc/tl/tl.tex: Document it.
-
- 05 Jun, 2012 1 commit
-
-
Alexandre Duret-Lutz authored
-
- 04 Jun, 2012 2 commits
-
-
Alexandre Duret-Lutz authored
-
Alexandre Duret-Lutz authored
-
- 12 May, 2012 1 commit
-
-
Alexandre Duret-Lutz authored
We need a marked version of !{r} to perform breakpoint unroling. * src/ltlast/unop.cc, src/ltlast/unop.hh: Declare a NegClosureMarked operator. * src/ltlvisit/mark.hh, src/ltlvisit/mark.cc, src/tgbaalgos/ltl2tgba_fm.cc: Adjust to deal with NegClosureMarked and NegClosure as apropriate. * src/ltlvisit/simplify.cc, src/ltlvisit/tostring.cc, src/ltlvisit/tunabbrev.cc, src/tgbaalgos/eltl2tgba_lacim.cc, src/tgbaalgos/ltl2taa.cc, src/tgbaalgos/ltl2tgba_lacim.cc, src/tgba/formula2bdd.cc: Deal with NegClosureMarked in the same way as we deal with NegClosure. * src/tgbatest/ltl2tgba.test: More tests. * src/ltltest/kind.test: Adjust. * doc/tl/tl.tex: Mention the marked negated closure.
-
- 07 May, 2012 1 commit
-
-
Alexandre Duret-Lutz authored
* doc/tl/tl.tex, src/ltlvisit/simplify.cc: Fix the rule. * src/ltltest/reduccmp.test, src/ltltest/syntimpl.test: Add more tests.
-
- 02 May, 2012 1 commit
-
-
Alexandre Duret-Lutz authored
* doc/tl/tl.tex: Fix a few typos, and comment a missplaced paragraph. * doc/tl/tl.bib: Typos.
-
- 30 Apr, 2012 8 commits
-
-
Alexandre Duret-Lutz authored
-
Alexandre Duret-Lutz authored
* src/ltlvisit/simplify.cc: Here. * src/ltltest/reduccmp.test: Test them. * doc/tl/tl.tex: Document them.
-
Alexandre Duret-Lutz authored
* doc/tl/tl.tex, doc/tl/tl.bib: Here.
-
Alexandre Duret-Lutz authored
* src/ltlvisit/simplify.cc: Here. * src/ltltest/reduccmp.test: Test it. * doc/tl/tl.tex: Document it.
-
Alexandre Duret-Lutz authored
* src/ltlvisit/wmunabbrev.hh, src/ltlvisit/wmunabbrev.cc: New files. * src/ltlvisit/Makefile.am: Add them. * src/ltlvisit/tostring.cc (to_spin_string): Use the new rewriting. * wrap/python/ajax/spot.in: Warn when a "Spin" still contain PSL operators. * wrap/python/ajax/ltl2tgba.html: Adjust help text. * doc/tl/tl.tex, NEWS: Document the new rewriting.
-
Alexandre Duret-Lutz authored
* src/ltlparse/ltlscan.ll: Understand the combining overline, and combining overbar as synonym for =0. * src/ltlvisit/tostring.cc: Emit a combining overline for single-letter atomic propositions. * src/ltlast/atomic_prop.hh (is_atomic_prop): New function. * doc/tl/tl.tex: Document these two characters.
-
Alexandre Duret-Lutz authored
* doc/tl/tl.tex: Here.
-
Alexandre Duret-Lutz authored
* src/ltlparse/ltlparse.yy: Make all the above operators right-associative. Also let `:' have precedence over `;'. * src/ltltest/reduccmp.test: Adjust for the `:' precedence. * doc/tl/tl.tex, NEWS: Document this.
-
- 28 Apr, 2012 13 commits
-
-
Alexandre Duret-Lutz authored
* src/ltlvisit/simplify.cc: Here. * src/ltltest/reduccmp.test: Test them. * doc/tl/tl.tex: Document them.
-
Alexandre Duret-Lutz authored
* src/ltlvisit/simplify.cc (reduce_sere_ltl): New function, to factor the code of the []-> and <>-> rewrittings. * src/ltltest/reduccmp.test: Add more tests. * doc/tl/tl.tex: Document these rewritings.
-
Alexandre Duret-Lutz authored
* src/ltlvisit/simplify.cc: Here. * doc/tl/tl.tex: Document then. * src/ltlast/bunop.hh (as_KleenStar): New helper function. * src/ltltest/reduccmp.test: Add more tests. * src/ltltest/reduc.cc: Also display the resulting formula without reduce_size_stricly.
-
Alexandre Duret-Lutz authored
* src/ltlvisit/snf.cc, src/ltlvisit/snf.hh: New files. * src/ltlvisit/Makefile.am: Distribute them. * src/ltlvisit/simplify.cc, src/ltlvisit/simplify.hh: Call snf(f) for all f[*]. * src/ltltest/reduccmp.test: Test it. * doc/tl/tl.tex, doc/tl/tl.bib: Document it.
-
Alexandre Duret-Lutz authored
* src/ltlast/multop.cc (instance): Implement the reduction. * src/ltlast/multop.hh, doc/tl/tl.tex: Document it. * src/ltltest/equals.test: Add a test.
-
Alexandre Duret-Lutz authored
* src/ltlast/multop.cc (instance): Implement the reduction. * src/ltlast/multop.hh, doc/tl/tl.tex: Document it. * src/ltltest/equals.test: Test it.
-
Alexandre Duret-Lutz authored
* src/ltlast/bunop.hh (one_star): New static method building 1[*]. * src/ltlast/bunop.cc (bunop::~bunop, bunop::instance_count): Adjust. * src/ltlast/multop.cc: Implement the trivial rewriting. * src/ltlast/multop.hh, doc/tl/tl.tex: Document it. * src/ltltest/equals.test: Test it.
-
Alexandre Duret-Lutz authored
Especially, 1&f and 1:f were mistakenly always reduced to f, which is incorrect when f accept the empty word. * src/ltlast/multop.cc: Here. * src/ltlast/multop.hh, doc/tl/tl.tex: Adjust documentation. * src/ltltest/equals.test: Add more tests.
-
Alexandre Duret-Lutz authored
* src/ltlvisit/simplify.cc: Here. * src/ltltest/reduccmp.test: More tests. * doc/tl/tl.tex: Document them.
-
Alexandre Duret-Lutz authored
* src/ltlast/multop.cc (instance): Here. * src/ltlast/multop.hh, doc/tl/tl.tex: Adjust documentation. * src/ltltest/equals.test: Adjust test cases.
-
Alexandre Duret-Lutz authored
* src/ltlast/bunop.cc (bunop::instance): Here. * src/ltlast/bunop.hh, doc/tl/tl.tex: Document it. * src/ltltest/equals.test: Test it.
-
Alexandre Duret-Lutz authored
* src/ltlast/bunop.hh, src/ltlast/bunop.cc, src/ltlvisit/randomltl.cc, src/ltlvisit/simplify.cc, src/ltlvisit/tostring.cc, src/tgbaalgos/ltl2tgba_fm.cc: Remove all traces of these two operators since they are not handled like sugar. * doc/tl/tl.tex: Adjust documentation to reflect the fact that these two operators are sugar.
-
Alexandre Duret-Lutz authored
* src/ltlast/multop.hh (is_multop): Take a constant formula as input. * src/ltlvisit/tostring.cc (to_string_visitor::visit(multop*)): Output []=> or <>=> when the left argument of a []-> or <>-> is a concatenation that ends in 1. * doc/tl/tl.tex: Document this desugaring.
-