* doc/tl/tl.tex: More text for the temporal hierarchy.

This commit is contained in:
Alexandre Duret-Lutz 2011-12-07 12:23:26 +01:00
parent dc5a0620b7
commit 2c37367075

View file

@ -16,6 +16,13 @@
\usepackage{tabulary} \usepackage{tabulary}
\usepackage[numbers]{natbib} \usepackage[numbers]{natbib}
\usepackage{rotating} \usepackage{rotating}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\usetikzlibrary{shadows}
\usetikzlibrary{arrows}
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}
% TODO % TODO
\usepackage{todonotes} \usepackage{todonotes}
@ -115,6 +122,10 @@
\makeindex \makeindex
\newcommand{\Index}[1]{\index{#1}#1} \newcommand{\Index}[1]{\index{#1}#1}
% Tikz
\tikzstyle{annote}=[overlay,thick,<-,red,>=stealth']
% Make sure we can compile this file even without use the version % Make sure we can compile this file even without use the version
% supplied by the Makefile. % supplied by the Makefile.
\ifdefined\SpotVersion\else \ifdefined\SpotVersion\else
@ -959,6 +970,7 @@ properties can be queried from any \texttt{spot::ltl::formula}
instance using the following methods: instance using the following methods:
\noindent \noindent
\label{property-methods}
\begin{tabulary}{\textwidth}{lL} \begin{tabulary}{\textwidth}{lL}
\texttt{is\_boolean()}& Whether the formula uses only Boolean \texttt{is\_boolean()}& Whether the formula uses only Boolean
operators. operators.
@ -1057,43 +1069,100 @@ rules:
\mid \0 \R \varphi \mid \0 \R \varphi
\mid \varphi_U\W \varphi_U \mid \varphi_U\W \varphi_U
\mid \varphi \W \0 \mid \varphi \W \0
\mid \varphi_U\M \varphi_U\\ \mid \varphi_U\M \varphi_U
\end{align*} \end{align*}
\section{Syntactic Hierarchy Classes} \section{Syntactic Hierarchy Classes}
\begin{figure}[tbp]
\centering
\begin{tikzpicture}
\draw[drop shadow,fill=white] (0,0) rectangle (6,7);
\path[fill=yellow!20] (0,6) -- (3,4.5) -- (0,3);
\path[fill=red!20] (6,6) -- (3,4.5) -- (6,3);
\path[fill=orange!20] (0,3) -- (3,4.5) -- (6,3) -- (3,1);
\path[fill=blue!40,fill opacity=.5] (0,0) -- (0,3) -- (4.5,0);
\path[fill=green!40,fill opacity=.5] (6,0) -- (1.5,0) -- (6,3);
\draw (0,0) rectangle (6,7);
\node[align=center] (rea) at (3,6) {Reactivity\\ $\bigwedge\G\F p_i\lor \F\G q_i$};
\node[align=center] (rec) at (1,4.5) {Recurrence\\ $\G\F p$};
\node[align=center] (per) at (5,4.5) {Persistence\\ $\F\G p$};
\node[align=center] (obl) at (3,2.85) {Obligation\\ $\bigwedge\G p_i\lor \F q_i$};
\node[align=center] (saf) at (1,1) {Safety\\ $\G p$};
\node[align=center] (gua) at (5,1) {Guarantee\\ $\F p$};
\node[align=center,below left] (det) at (-.2,6.7) {Deterministic\\Büchi Automata};
\node[align=center,below right](weak) at (6.2,6.7) {Weak Büchi\\Automata};
\node[align=center,right](wdba) at (6.2,4.3) {Weak Deteterministic\\Büchi Automata};
\node[align=center,above right](ter) at (6.2,2) {Terminal\\Büchi Automata};
\node[align=center,above left](occ) at (-.2,2) {Terminal\\co-Büchi Automata};
\node[above right] (buc) at (3.35,7) {General Büchi Automata};
\draw[annote] (rec) -- (det);
\draw[annote] (per) -- (weak);
\draw[annote] (obl.east) -- (wdba);
\draw[annote] (gua) -- (ter);
\draw[annote] (saf) -- (occ);
\draw[annote] (rea.north) .. controls +(north:5mm) and +(west:5mm) .. (buc.west);
\end{tikzpicture}
\caption{The temporal hierarchy of \citet{manna.87.podc} with their
associated classes of automata~\citep{cerna.03.mfcs}. The
formul\ae{} associated to each class are more than canonical
examples: they show the normal forms under which any LTL formula of
the class can be rewritten, assuming that $p,p_i,q,q_i$ denote
subformul\ae{} involving only Boolean operators, $\X$, and past
temporal operators (Spot does not support the
latter). \label{fig:hierarchy}}
\end{figure}
The hierarchy of linear temporal properties was introduced The hierarchy of linear temporal properties was introduced
by~\citet{manna.87.podc}. A first syntactic characterization of the by~\citet{manna.87.podc} and is illustrated on
classes was presented by~\citet{chang.92.icalp}, but other Fig.~\ref{fig:hierarchy}. In the case of the LTL subset of the
presentations have been done including negation~\citep{cerna.03.mfcs} hierarchy, a first syntactic characterization of the classes was
and weak until~\citep{schneider.01.lpar}. presented by~\citet{chang.92.icalp}, but other presentations have been
done including negation~\citep{cerna.03.mfcs} and weak
until~\citep{schneider.01.lpar}.
In the following grammar rules, the symbols $\varphi_G$, $\varphi_S$, The following grammar rules describes extend the aforementioned
$\varphi_O$, $\varphi_P$, $\varphi_R$ designate any formula belonging work slightly by dealing with PSL operators. These are the
respectively to the Guarantee, Safety, Obligation, Persistence, or rules used by Spot to decide upon
Recurrence classes. $v$ designates any variable, $r$ any SERE, $r_F$ construction to which class a formula belongs (see the methods
a bounded SERE (no loops), and $r_I$ an unbounded SERE. \texttt{is\_syntactic\_safety()}, \texttt{is\_syntactic\_guaranty()},
\texttt{is\_syntactic\_obligation()},
\texttt{is\_syntactic\_recurrence()}, and
\texttt{is\_syntactic\_persistence()} listed on
page~\pageref{property-methods}).
The symbols $\varphi_G$, $\varphi_S$, $\varphi_O$, $\varphi_P$,
$\varphi_R$ designate any formula belonging respectively to the
Guarantee, Safety, Obligation, Persistence, or Recurrence classes.
$v$ denotes any variable, $r$ any SERE, $r_F$ any bounded SERE (no
loops), and $r_I$ any unbounded SERE.
\begin{align*} \begin{align*}
\varphi_G ::=&\, \0\mid\1\mid v\mid \NOT\varphi_S\mid \varphi_G ::=&\, \0\mid\1\mid v\mid \NOT\varphi_S\mid
\varphi_G\AND \varphi_G\mid (\varphi_G\OR \varphi_G)\mid \varphi_G\AND \varphi_G\mid (\varphi_G\OR \varphi_G)\mid
\X\varphi_G \mid \F\varphi_G\mid \X\varphi_G \mid \F\varphi_G\mid
\varphi_G\U\varphi_G\mid \varphi_G\M\varphi_G\\ \varphi_G\U\varphi_G\mid \varphi_G\M\varphi_G\\
\mid&\, \sere{r}\Esuffix \varphi_G\mid \mid&\, \sere{r_F}\mid
\sere{r}\Esuffix \varphi_G\mid
\sere{r_F}\Asuffix \varphi_G \\ \sere{r_F}\Asuffix \varphi_G \\
\varphi_S ::=&\, \0\mid\1\mid v\mid \NOT\varphi_G\mid \varphi_S ::=&\, \0\mid\1\mid v\mid \NOT\varphi_G\mid
\varphi_S\AND \varphi_S\mid (\varphi_S\OR \varphi_S)\mid \varphi_S\AND \varphi_S\mid (\varphi_S\OR \varphi_S)\mid
\X\varphi_S \mid \G\varphi_S\mid \X\varphi_S \mid \G\varphi_S\mid
\varphi_S\R\varphi_S\mid \varphi_S\W\varphi_S\\ \varphi_S\R\varphi_S\mid \varphi_S\W\varphi_S\\
\mid&\, \sere{r_F}\Esuffix \varphi_S\mid \mid&\, \nsere{r_F}\mid
\sere{r_F}\Esuffix \varphi_S\mid
\sere{r}\Asuffix \varphi_S\\ \sere{r}\Asuffix \varphi_S\\
\varphi_O ::=&\, \varphi_G \mid \varphi_S\mid \NOT\varphi_O\mid \varphi_O ::=&\, \varphi_G \mid \varphi_S\mid \NOT\varphi_O\mid
\varphi_O\AND \varphi_O\mid (\varphi_O\OR \varphi_O)\mid \varphi_O\AND \varphi_O\mid (\varphi_O\OR \varphi_O)\mid
\X\varphi_O \mid \X\varphi_O \mid
\varphi_O\U\varphi_G\mid\varphi_O\R\varphi_S \mid \varphi_O\U\varphi_G\mid\varphi_O\R\varphi_S \mid
\varphi_S\W\varphi_O\mid \varphi_G\M\varphi_O\\ \varphi_S\W\varphi_O\mid \varphi_G\M\varphi_O\\
\mid&\, \sere{r_F}\Esuffix \varphi_O \mid \sere{r_I}\Esuffix \varphi_G\mid \mid&\, \sere{r} \mid \nsere{r}\mid
\sere{r_F}\Esuffix \varphi_O \mid \sere{r_I}\Esuffix \varphi_G\mid
\sere{r_F}\Asuffix \varphi_O\mid \sere{r_F}\Asuffix \varphi_O\mid
\sere{r_I}\Asuffix \varphi_S\\ \sere{r_I}\Asuffix \varphi_S\\
\varphi_P ::=&\, \varphi_O \mid \NOT\varphi_R\mid \varphi_P ::=&\, \varphi_O \mid \NOT\varphi_R\mid
@ -1112,6 +1181,13 @@ a bounded SERE (no loops), and $r_I$ an unbounded SERE.
\mid&\, \sere{r_F}\Esuffix \varphi_R \mid \sere{r_I}\Esuffix \varphi_G\mid \sere{r}\Asuffix \varphi_P\\ \mid&\, \sere{r_F}\Esuffix \varphi_R \mid \sere{r_I}\Esuffix \varphi_G\mid \sere{r}\Asuffix \varphi_P\\
\end{align*} \end{align*}
It should be noted that a formula can belong to a class of the
temporal hierarchy even if it does not syntactically appears so. For
instance the formula $(\G(q\OR \F\G p)\AND \G(r\OR \F\G\NOT p))\OR\G
q\OR \G r$ is not syntactically safe, yet it is a safety formula
equivalent to $\G q\OR \G r$. Such a formula is usually said
\emph{pathologically safe}.
\chapter{Rewritings} \chapter{Rewritings}
The LTL rewritings described in this section are all implemented in The LTL rewritings described in this section are all implemented in