Implement W,M removal for Spin output.

* 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.
This commit is contained in:
Alexandre Duret-Lutz 2012-04-29 21:21:03 +02:00
parent e64a1bf565
commit a09ad6b4c6
8 changed files with 176 additions and 15 deletions

View file

@ -456,9 +456,9 @@ instance \samp{(a\&c\&b\&!d)->(c\&!d\&b\&a)} will be rewritten to
\subsection{Unabbreviations}\label{sec:unabbbool}
The `\verb=unabbreviate_logic_visitor=' rewrites all Boolean operators
using only the \samp{!}, \samp{\&}, and \samp{|} operators using the
following rewritings:
The `\verb=unabbreviate_logic()=' function rewrites all Boolean
operators using only the \samp{!}, \samp{\&}, and \samp{|} operators
using the following rewritings:
\begin{align*}
f\IMPLIES g &\equiv (\NOT f)\OR g\\
f\EQUIV g &\equiv (f\AND g)\OR ((\NOT g)\AND(\NOT f))\\
@ -544,16 +544,20 @@ and $\W$ if you are only familiar with $\X$ and $\U$.
\subsection{Unabbreviations}
The `\verb=unabbreviate_ltl_visitor=' applies all the rewritings from
The `\verb=unabbreviate_ltl()=' function applies all the rewritings from
section~\ref{sec:unabbbool} as well as the following two rewritings:
\begin{align*}
\F f&\equiv \1\U f\\
\G f&\equiv \0\R f
\end{align*}
\spottodo[inline]{Spot should offer some way to rewrite a formula to
selectively remove $\U$, $\R$, $\M$, or $\W$, using the equivalences
from Appendix~\ref{sec:ltl-equiv}.}
The `\verb=unabbreviate_wm()=` function removes only the $\W$ and $\M$
operators using the following two rewritings:
\begin{align*}
f \W g&\equiv g \R (g \OR f)\\
f \M g&\equiv g \U (g \AND f)
\end{align*}
\section{SERE Operators}