spot/src
Alexandre Duret-Lutz cb7bdf8c1f Fix interpretation of {e[*]} and !{e[*]}.
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.
2013-07-29 00:25:13 +02:00
..
bin * src/bin/man/ltlcross.x: Typo. 2013-07-27 12:31:52 +02:00
eltlparse Upgrade GPL v2+ to GPL v3+. 2012-10-12 22:05:18 +02:00
eltltest eltl2tgba: slight cleanup of the tests. 2013-01-17 14:06:31 +01:00
kripke Move \ingroup before \brief in all Doxygen comments. 2013-06-08 23:24:37 +02:00
kripkeparse Upgrade GPL v2+ to GPL v3+. 2012-10-12 22:05:18 +02:00
kripketest more files to ignore 2012-11-28 16:45:04 +01:00
ltlast Fix interpretation of {e[*]} and !{e[*]}. 2013-07-29 00:25:13 +02:00
ltlenv Move \ingroup before \brief in all Doxygen comments. 2013-06-08 23:24:37 +02:00
ltlparse Move \ingroup before \brief in all Doxygen comments. 2013-06-08 23:24:37 +02:00
ltltest bin: Ignore empty lines on input. 2013-05-12 17:32:46 +02:00
ltlvisit Fix interpretation of {e[*]} and !{e[*]}. 2013-07-29 00:25:13 +02:00
misc Fix verbatim blocks of Doxygen comments. 2013-06-09 15:55:03 +02:00
neverparse neverparse: accept more unparenthesised guards 2013-07-26 12:04:45 +02:00
saba Fix verbatim blocks of Doxygen comments. 2013-06-09 15:55:03 +02:00
sabaalgos Move \ingroup before \brief in all Doxygen comments. 2013-06-08 23:24:37 +02:00
sabatest more files to ignore 2012-11-28 16:45:04 +01:00
sanity Fix verbatim blocks of Doxygen comments. 2013-06-09 15:55:03 +02:00
ta Improve documentation here and there. 2013-06-09 15:55:57 +02:00
taalgos Fix verbatim blocks of Doxygen comments. 2013-06-09 15:55:03 +02:00
tgba Improve documentation here and there. 2013-06-09 15:55:57 +02:00
tgbaalgos Fix interpretation of {e[*]} and !{e[*]}. 2013-07-29 00:25:13 +02:00
tgbaparse Add a parse_boolean() function to use in parsers for Automata. 2012-10-20 19:18:54 +02:00
tgbatest Fix interpretation of {e[*]} and !{e[*]}. 2013-07-29 00:25:13 +02:00
.cvsignore * src/ltlvisit/Makefile.am (lib_LTLIBRARIES): Rename as ... 2003-04-30 12:46:12 +00:00
.gitignore more files to ignore 2009-09-02 10:41:18 +02:00
Makefile.am Remove anything related to evtgba. 2013-01-06 19:26:32 +01:00