Implement star-normal-form rewriting.

* 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.
This commit is contained in:
Alexandre Duret-Lutz 2012-04-25 18:50:31 +02:00
parent e7cf7b422d
commit 6eb830c8ae
8 changed files with 327 additions and 10 deletions

View file

@ -1407,6 +1407,30 @@ SERE.
\sere{r_1\FUSION b_1}\AND \sere{r_2\FUSION b_2} &\equiv \sere{r_1\ANDALT r_2}\FUSION\sere{b_1\AND b_2} \\
\end{align*}
Stared subformul\ae{} are rewritten in Star Normal
Form~\cite{bruggeman.96.tcs} with:
\[r\STAR{\mvar{0}..\mvar{j}} \equiv r^\circ\STAR{\mvar{0}..\mvar{j}} \]
where $r^\circ$ is recursively defined as follows:
\begin{align*}
r^\circ &= r\text{~if~} \varepsilon\not\VDash r \\
\eword^\circ &= \0 &
(r_1\CONCAT r_2)^\circ &= r_1^\circ\OR r_2^\circ \text{~if~} \varepsilon\VDash r_1\text{~and~}\varepsilon\VDash r_2\\
r\STAR{\mvar{0}..\mvar{j}}^\circ &= r^\circ &
(r_1\AND r_2)^\circ &= r_1^\circ\OR r_2^\circ \text{~if~} \varepsilon\VDash r_1\text{~and~}\varepsilon\VDash r_2\\
(r_1\OR r_2)^\circ &= r_1^\circ \OR r_2^\circ &
(r_1\ANDALT r_2)^\circ &= r_1 \ANDALT r_2
\end{align*}
Note: the original SNF definition~\cite{bruggeman.96.tcs} does not
include \samp{$\FUSION$}, \samp{$\AND$}, and \samp{$\ANDALT$}
operators, and it guarantees that $\forall r,\,\varepsilon\not\VDash
r^\circ$ because $r^\circ$ is stripping all the stars and empty words
that occur in $r$. For instance $\sere{a\STAR{}\CONCAT
b\STAR{}\CONCAT\sere{\1\OR c}}^\circ\STAR{} = \sere{a\OR b\OR
c}\STAR{}$. Our extended definition still respects this property in
presence of \samp{$\FUSION$} and \samp{$\AND$} operators, but
unfortunately not when the \samp{$\ANDALT$} operator is used.
\subsection{Simplifications for Eventual and Universal Formul\ae}
\label{sec:eventunivrew}