sawine@55
|
1 |
\documentclass[9pt]{beamer}
|
sawine@55
|
2 |
\usetheme{Boadilla}
|
sawine@58
|
3 |
\usecolortheme{dove}
|
sawine@58
|
4 |
\usecolortheme{orchid}
|
sawine@58
|
5 |
\usecolortheme{dolphin}
|
sawine@58
|
6 |
%\usecolortheme{seagull}
|
sawine@58
|
7 |
|
sawine@60
|
8 |
\usepackage{amsmath, amsthm, amssymb, amsfonts, verbatim}
|
sawine@62
|
9 |
\usepackage{pifont}
|
sawine@72
|
10 |
\usepackage{multicol}
|
sawine@61
|
11 |
\usepackage{xcolor}
|
sawine@58
|
12 |
\usepackage{ulem}
|
sawine@66
|
13 |
\usepackage{graphics}
|
sawine@58
|
14 |
\usepackage{tikz}
|
sawine@58
|
15 |
\usetikzlibrary{automata}
|
sawine@58
|
16 |
\usepackage{subfigure}
|
sawine@55
|
17 |
|
sawine@61
|
18 |
\renewcommand{\emph}{\textit}
|
sawine@66
|
19 |
\renewcommand{\em}{\it}
|
sawine@62
|
20 |
|
sawine@62
|
21 |
\newcommand{\cross}{\ding{55}}
|
sawine@55
|
22 |
\newcommand{\M}{\mathcal{M}}
|
sawine@55
|
23 |
\newcommand{\N}{\mathbb{N}_0}
|
sawine@55
|
24 |
\newcommand{\F}{\mathcal{F}}
|
sawine@57
|
25 |
\newcommand{\Fs}{\mathbb{F}}
|
sawine@55
|
26 |
\newcommand{\Prop}{\mathcal{P}}
|
sawine@55
|
27 |
\newcommand{\A}{\mathcal{A}}
|
sawine@55
|
28 |
\newcommand{\X}{\mathcal{X}}
|
sawine@55
|
29 |
\newcommand{\U}{\mathcal{U}}
|
sawine@55
|
30 |
\newcommand{\V}{\mathcal{V}}
|
sawine@55
|
31 |
\newcommand{\dnf}{\mathsf{dnf}}
|
sawine@55
|
32 |
\newcommand{\consq}{\mathsf{consq}}
|
sawine@55
|
33 |
|
sawine@55
|
34 |
\theoremstyle{definition} %plain, definition, remark, proof, corollary
|
sawine@55
|
35 |
\newtheorem*{def:finite words}{Finite words}
|
sawine@55
|
36 |
\newtheorem*{def:infinite words}{Infinite words}
|
sawine@55
|
37 |
\newtheorem*{def:regular languages}{Regular languages}
|
sawine@55
|
38 |
\newtheorem*{def:regular languages closure}{Regular closure}
|
sawine@55
|
39 |
\newtheorem*{def:omega regular languages}{$\omega$-regular languages}
|
sawine@55
|
40 |
\newtheorem*{def:omega regular languages closure}{$\omega$-regular closure}
|
sawine@55
|
41 |
\newtheorem*{def:buechi automata}{Automaton}
|
sawine@56
|
42 |
\newtheorem*{def:automata runs}{Run}
|
sawine@56
|
43 |
\newtheorem*{def:inf}{Infinite occurrences}
|
sawine@55
|
44 |
\newtheorem*{def:automata acceptance}{Acceptance}
|
sawine@56
|
45 |
\newtheorem*{def:automata language}{Recognised language}
|
sawine@57
|
46 |
\newtheorem*{def:general automata}{Generalised automaton}
|
sawine@55
|
47 |
\newtheorem*{def:general acceptance}{Acceptance}
|
sawine@61
|
48 |
\newtheorem*{def:syntax}{Syntax}
|
sawine@74
|
49 |
\newtheorem*{def:derived syntax}{Derived connectives}
|
sawine@72
|
50 |
\newtheorem*{def:program}{Program}
|
sawine@72
|
51 |
\newtheorem*{def:program automaton}{System automaton}
|
sawine@61
|
52 |
|
sawine@55
|
53 |
\newtheorem*{def:vocabulary}{Vocabulary}
|
sawine@62
|
54 |
\newtheorem*{def:frames}{Frame}
|
sawine@62
|
55 |
\newtheorem*{def:models}{Model}
|
sawine@55
|
56 |
\newtheorem*{def:satisfiability}{Satisfiability}
|
sawine@55
|
57 |
\newtheorem*{def:fs closure}{Closure}
|
sawine@55
|
58 |
\newtheorem*{def:atoms}{Atoms}
|
sawine@55
|
59 |
\newtheorem*{def:rep function}{Representation function}
|
sawine@55
|
60 |
\newtheorem*{def:next}{Next function}
|
sawine@55
|
61 |
\newtheorem*{def:dnf}{Disjunctive normal form}
|
sawine@55
|
62 |
\newtheorem*{def:positive formulae}{Positive formulae}
|
sawine@55
|
63 |
\newtheorem*{def:consq}{Logical consequences}
|
sawine@55
|
64 |
\newtheorem*{def:partial automata}{Partial automata}
|
sawine@55
|
65 |
|
sawine@55
|
66 |
\theoremstyle{plain}
|
sawine@55
|
67 |
\newtheorem{prop:vocabulary sat}{Proposition}[section]
|
sawine@55
|
68 |
\newtheorem{prop:general equiv}{Proposition}[section]
|
sawine@55
|
69 |
\newtheorem{prop:computation set=language}{Proposition}[section]
|
sawine@55
|
70 |
|
sawine@55
|
71 |
\theoremstyle{plain}
|
sawine@55
|
72 |
\newtheorem{thm:model language}{Theorem}[section]
|
sawine@55
|
73 |
\newtheorem{cor:mod=model language}{Corollary}[thm:model language]
|
sawine@55
|
74 |
\newtheorem{cor:mod=program language}[cor:mod=model language]{Corollary}
|
sawine@55
|
75 |
\newtheorem{thm:model checking}{Theorem}[section]
|
sawine@55
|
76 |
\newtheorem{lem:dnf}{Lemma}[section]
|
sawine@55
|
77 |
\newtheorem{lem:consq}[lem:dnf]{Lemma}
|
sawine@55
|
78 |
|
sawine@55
|
79 |
\title[Algorithmic Verification]{Algorithmic Verification of Reactive Systems}
|
sawine@55
|
80 |
\author{Eugen Sawin}
|
sawine@55
|
81 |
\institute[University of Freiburg]
|
sawine@55
|
82 |
{
|
sawine@55
|
83 |
Research Group for Foundations in Artificial Intelligence\\
|
sawine@55
|
84 |
Computer Science Department\\
|
sawine@55
|
85 |
University of Freiburg
|
sawine@55
|
86 |
}
|
sawine@55
|
87 |
\date[SS 2011]{Seminar: Automata Constructions in Model Checking}
|
sawine@55
|
88 |
\subject{Model Checking}
|
sawine@55
|
89 |
|
sawine@55
|
90 |
\begin{document}
|
sawine@55
|
91 |
\frame{\titlepage}
|
sawine@66
|
92 |
|
sawine@55
|
93 |
\begin{frame}
|
sawine@55
|
94 |
\frametitle{Motivation}
|
sawine@67
|
95 |
\framesubtitle{Model Checking 1/2}
|
sawine@66
|
96 |
\begin{center}
|
sawine@66
|
97 |
%\only<1>{\colorbox{black}{\makebox(35,10){\color{white} $\M \models \varphi$}}}
|
sawine@67
|
98 |
\[\M \models \varphi\]
|
sawine@66
|
99 |
\end{center}
|
sawine@66
|
100 |
\end{frame}
|
sawine@66
|
101 |
|
sawine@66
|
102 |
\begin{frame}
|
sawine@66
|
103 |
\frametitle{Motivation}
|
sawine@67
|
104 |
\framesubtitle{Model Checking 2/2}
|
sawine@67
|
105 |
\begin{center}
|
sawine@67
|
106 |
Given a program $P$ and specification $\varphi$:\\
|
sawine@67
|
107 |
\colorbox{black}{\makebox(150,10){\color{white} does every run of $P$ satisfy $\varphi$?}}
|
sawine@67
|
108 |
\end{center}
|
sawine@67
|
109 |
\end{frame}
|
sawine@67
|
110 |
|
sawine@67
|
111 |
\begin{frame}
|
sawine@67
|
112 |
\frametitle{Motivation}
|
sawine@67
|
113 |
\framesubtitle{Industry}
|
sawine@66
|
114 |
\begin{figure}
|
sawine@66
|
115 |
\centering
|
sawine@73
|
116 |
\only<1>{
|
sawine@67
|
117 |
\subfigure{\includegraphics[width=70pt,height=50pt]{images/intel.jpg}}
|
sawine@67
|
118 |
\subfigure{\includegraphics[width=70pt,height=50pt]{images/airbag.jpg}}
|
sawine@67
|
119 |
\subfigure{\includegraphics[width=70pt,height=50pt]{images/atc.jpg}}
|
sawine@73
|
120 |
}
|
sawine@73
|
121 |
\only<2>{
|
sawine@74
|
122 |
\subfigure{\includegraphics[width=35pt,height=20pt]{images/sun.jpg}}
|
sawine@74
|
123 |
\subfigure{\includegraphics[width=20pt,height=20pt]{images/hp.jpg}}
|
sawine@74
|
124 |
\subfigure{\includegraphics[width=40pt,height=20pt]{images/siemens.jpg}}
|
sawine@74
|
125 |
\subfigure{\includegraphics[width=15pt,height=20pt]{images/att.jpg}}
|
sawine@74
|
126 |
%\subfigure{\includegraphics[width=20pt,height=20pt]{images/motorola.jpg}}
|
sawine@74
|
127 |
\subfigure{\includegraphics[width=20pt,height=20pt]{images/sgi.jpg}}
|
sawine@74
|
128 |
\subfigure{\includegraphics[width=25pt,height=20pt]{images/fujitsu.jpg}}
|
sawine@74
|
129 |
\subfigure{\includegraphics[width=20pt,height=18pt]{images/nec.jpg}}
|
sawine@74
|
130 |
\subfigure{\includegraphics[width=20pt,height=20pt]{images/intel2.jpg}}
|
sawine@74
|
131 |
\subfigure{\includegraphics[width=25pt,height=20pt]{images/ibm.jpg}}
|
sawine@73
|
132 |
}
|
sawine@66
|
133 |
\end{figure}
|
sawine@55
|
134 |
\end{frame}
|
sawine@55
|
135 |
|
sawine@67
|
136 |
{
|
sawine@67
|
137 |
\setbeamercolor{normal text}{bg=black, fg=white}
|
sawine@67
|
138 |
\setbeamercolor{frametitle}{fg=white!30!black}
|
sawine@67
|
139 |
\usebeamercolor*{normal text}
|
sawine@67
|
140 |
\usebeamercolor*{frametitle}
|
sawine@67
|
141 |
\begin{frame}
|
sawine@67
|
142 |
\frametitle{Linear Temporal Logic}
|
sawine@70
|
143 |
\framesubtitle{Natural language 1/2}
|
sawine@67
|
144 |
\begin{center}
|
sawine@67
|
145 |
``It is dark.''\\
|
sawine@67
|
146 |
\visible<2->{``It is \emph{always} dark.''\\}
|
sawine@67
|
147 |
\visible<3->{``It is \emph{currently} dark.''\\}
|
sawine@69
|
148 |
\visible<4->{``It will \emph{necessarily} be dark.''\\}
|
sawine@67
|
149 |
\visible<5->{``It is dark \emph{until} someone puts the light on.''}
|
sawine@67
|
150 |
\end{center}
|
sawine@67
|
151 |
\end{frame}
|
sawine@67
|
152 |
}
|
sawine@67
|
153 |
|
sawine@67
|
154 |
\begin{frame}
|
sawine@67
|
155 |
\frametitle{Linear Temporal Logic}
|
sawine@70
|
156 |
\framesubtitle{Natural language 2/2}
|
sawine@67
|
157 |
\begin{center}
|
sawine@67
|
158 |
\only<1->{
|
sawine@67
|
159 |
\color{white}
|
sawine@67
|
160 |
\colorbox{black}{\makebox(50,10){It is dark}} \colorbox{orange}{\makebox(30,10){until}} \colorbox{black!30}{\makebox(50,10){there is light}}\\
|
sawine@67
|
161 |
\visible<2->{
|
sawine@67
|
162 |
\colorbox{black}{\makebox(50,10){$p_0$}} \colorbox{orange}{\makebox(30,10){$\U$}} \colorbox{black!30}{\makebox(50,10){$p_1$}}}
|
sawine@67
|
163 |
}
|
sawine@67
|
164 |
\end{center}
|
sawine@67
|
165 |
\end{frame}
|
sawine@67
|
166 |
|
sawine@67
|
167 |
\begin{frame}
|
sawine@67
|
168 |
\frametitle{Linear Temporal Logic}
|
sawine@67
|
169 |
\framesubtitle{Syntax}
|
sawine@67
|
170 |
\begin{def:syntax}
|
sawine@67
|
171 |
Let $\Prop$ be the countable set of \emph{atomic propositions}, LTL-formulae $\varphi$ are defined using following productions:
|
sawine@67
|
172 |
\[\varphi ::= p \in \Prop \,|\, \neg \varphi \,|\, \varphi \lor \varphi \,|\, \X \varphi \,|\, \varphi \U \varphi\]
|
sawine@67
|
173 |
\begin{itemize}
|
sawine@67
|
174 |
\item $\neg, \lor$ corresponds to the Boolean \emph{negation} and \emph{disjunction}.
|
sawine@67
|
175 |
\item $\X$ reads \emph{next}.
|
sawine@67
|
176 |
\item $\U$ reads \emph{until}.
|
sawine@67
|
177 |
\end{itemize}
|
sawine@67
|
178 |
\end{def:syntax}
|
sawine@74
|
179 |
|
sawine@74
|
180 |
\visible<2>{
|
sawine@74
|
181 |
\begin{def:derived syntax}
|
sawine@74
|
182 |
Let $\varphi$ and $\psi$ be formulae:
|
sawine@74
|
183 |
\begin{multicols}{2}
|
sawine@74
|
184 |
\begin{itemize}
|
sawine@74
|
185 |
\item $\top \equiv p \lor \neg p$ for $p \in \Prop$
|
sawine@74
|
186 |
\item $\bot \equiv \neg \top$
|
sawine@74
|
187 |
\item $\varphi \land \psi \equiv \neg (\neg \varphi \lor \neg \psi)$
|
sawine@74
|
188 |
\item $\varphi \rightarrow \psi \equiv \neg \varphi \lor \psi$
|
sawine@74
|
189 |
\item $\varphi \leftrightarrow \psi \equiv (\varphi \rightarrow \psi) \land (\psi \rightarrow \varphi)$
|
sawine@74
|
190 |
\item $\Diamond \varphi \equiv \top \U \varphi$
|
sawine@74
|
191 |
\item $\Box \varphi \equiv \neg \Diamond \neg \varphi$
|
sawine@74
|
192 |
\end{itemize}
|
sawine@74
|
193 |
\end{multicols}
|
sawine@74
|
194 |
\end{def:derived syntax}
|
sawine@74
|
195 |
}
|
sawine@67
|
196 |
\end{frame}
|
sawine@67
|
197 |
|
sawine@67
|
198 |
\begin{frame}
|
sawine@67
|
199 |
\frametitle{Linear Temporal Logic}
|
sawine@67
|
200 |
\framesubtitle{Semantics}
|
sawine@67
|
201 |
\begin{def:frames}
|
sawine@67
|
202 |
An LTL-\emph{frame} is a tuple $\F = (S, R)$:
|
sawine@67
|
203 |
\begin{itemize}
|
sawine@67
|
204 |
\item $S = \{s_i \mid i \in \N\}$ is the set of states.
|
sawine@67
|
205 |
\item $R = \{(s_i, s_{i+1}) \mid i \in \N\}$ is the accessibility relation.
|
sawine@67
|
206 |
\end{itemize}
|
sawine@67
|
207 |
\end{def:frames}
|
sawine@67
|
208 |
|
sawine@67
|
209 |
\begin{def:models}
|
sawine@67
|
210 |
An LTL-\emph{model} is a tuple $\M = (\F, V)$:
|
sawine@67
|
211 |
\begin{itemize}
|
sawine@67
|
212 |
\item $\F$ is a \emph{frame}.
|
sawine@67
|
213 |
\item $V: S \to 2^\Prop$ is a \emph{valuation function}.
|
sawine@67
|
214 |
\item Intuitively we say $p \in \Prop$ is \emph{true} at time instant $i$ iff $p \in V(i)$.
|
sawine@67
|
215 |
\end{itemize}
|
sawine@67
|
216 |
\end{def:models}
|
sawine@67
|
217 |
\end{frame}
|
sawine@67
|
218 |
|
sawine@67
|
219 |
\begin{frame}
|
sawine@67
|
220 |
\frametitle{Linear Temporal Logic}
|
sawine@67
|
221 |
\framesubtitle{Model Example}
|
sawine@67
|
222 |
\begin{figure}
|
sawine@67
|
223 |
\centering
|
sawine@67
|
224 |
\begin{tikzpicture}[shorten >=1pt, node distance=2.5cm, auto, semithick, >=stealth
|
sawine@67
|
225 |
,accepting/.style={fill, gray!50!black, text=white}]
|
sawine@67
|
226 |
\node[state, initial, initial text=] (s_0) {$\{p_0\}$};
|
sawine@67
|
227 |
\path (s_0) [late options={label=below:$s_0$}];
|
sawine@67
|
228 |
\node[state] (s_1) [right of= s_0] {$\{p_0, p_2\}$};
|
sawine@67
|
229 |
\path (s_1) [late options={label=below:$s_1$}];
|
sawine@67
|
230 |
\node[state] (s_2) [right of= s_1] {$\{p_1\}$};
|
sawine@67
|
231 |
\path (s_2) [late options={label=below:$s_2$}];
|
sawine@67
|
232 |
\node[state] (s_i) [right of= s_2] {$\{p_1\}$};
|
sawine@67
|
233 |
\path (s_i) [late options={label=below:$s_i$}];
|
sawine@67
|
234 |
\path[->]
|
sawine@67
|
235 |
(s_0) edge node {$R$} (s_1)
|
sawine@67
|
236 |
(s_1) edge node {$R$} (s_2);
|
sawine@67
|
237 |
\path[dashed,->]
|
sawine@67
|
238 |
(s_2) edge node {$R$} (s_i);
|
sawine@67
|
239 |
\end{tikzpicture}
|
sawine@67
|
240 |
\end{figure}
|
sawine@67
|
241 |
\end{frame}
|
sawine@67
|
242 |
|
sawine@67
|
243 |
\begin{frame}
|
sawine@67
|
244 |
\frametitle{Linear Temporal Logic}
|
sawine@67
|
245 |
\framesubtitle{Satisfiability}
|
sawine@67
|
246 |
\begin{def:satisfiability}
|
sawine@67
|
247 |
A model $\M = (\F, V)$ \emph{satisfies} a formula $\varphi$ at time instant $i$ is denoted by $\M,i \models \varphi$:
|
sawine@67
|
248 |
\begin{itemize}
|
sawine@67
|
249 |
\item $\M,i \models p$ for $p \in \Prop \iff p \in V(i)$
|
sawine@67
|
250 |
\item $\M,i \models \neg \varphi \iff$ not $\M,i \models \varphi$
|
sawine@67
|
251 |
\item $\M,i \models \varphi \lor \psi \iff \M,i \models \varphi$ or $\M,i \models \psi$
|
sawine@67
|
252 |
\item $\M,i \models \X \varphi \iff \M,i+1 \models \varphi$
|
sawine@67
|
253 |
\item $\M,i \models \varphi \U \psi \iff \exists{k \geq i}: \M,k \models \psi$ and $\forall{i \leq j < k}: \M,j \models\varphi$
|
sawine@67
|
254 |
\end{itemize}
|
sawine@67
|
255 |
\end{def:satisfiability}
|
sawine@67
|
256 |
\end{frame}
|
sawine@67
|
257 |
|
sawine@55
|
258 |
\begin{frame}
|
sawine@70
|
259 |
\frametitle{Reactive Systems}
|
sawine@70
|
260 |
\framesubtitle{Infinite inputs}
|
sawine@71
|
261 |
\begin{center}
|
sawine@66
|
262 |
\begin{figure}
|
sawine@71
|
263 |
\setcounter{subfigure}{0}
|
sawine@71
|
264 |
\subfigure[Terminating program]{
|
sawine@70
|
265 |
\begin{tikzpicture}[shorten >=1pt, node distance=1.5cm, semithick, >=stealth
|
sawine@70
|
266 |
,accepting/.style={fill, gray!50!black, text=white}]
|
sawine@71
|
267 |
\node[state, initial, initial text=$input$] (p) {$P$};
|
sawine@71
|
268 |
\coordinate (b) at (1,0);
|
sawine@70
|
269 |
%\coordinate (b) at ($(a)+1/2*(3,3)$);
|
sawine@71
|
270 |
\draw (p) edge[->] node[right] {$\hspace{8pt}output$} (b);
|
sawine@70
|
271 |
%\draw[->] (p) -- (b);
|
sawine@70
|
272 |
\end{tikzpicture}
|
sawine@70
|
273 |
}
|
sawine@71
|
274 |
\hspace{10pt}
|
sawine@71
|
275 |
\visible<2>{\subfigure[Reactive program]{
|
sawine@66
|
276 |
\begin{tikzpicture}[shorten >=1pt, node distance=1.5cm, semithick, >=stealth
|
sawine@66
|
277 |
,accepting/.style={fill, gray!50!black, text=white}]
|
sawine@71
|
278 |
\node[state, initial, initial text=$event$] (p) {$RP$};
|
sawine@71
|
279 |
\coordinate (b) at (1.1,0);
|
sawine@71
|
280 |
%\coordinate (b) at ($(a)+1/2*(3,3)$);
|
sawine@71
|
281 |
\path[->]
|
sawine@71
|
282 |
(p) edge [loop right] node {$action$} ();
|
sawine@66
|
283 |
\end{tikzpicture}
|
sawine@71
|
284 |
}}
|
sawine@66
|
285 |
\end{figure}
|
sawine@71
|
286 |
\end{center}
|
sawine@55
|
287 |
\end{frame}
|
sawine@55
|
288 |
|
sawine@55
|
289 |
\begin{frame}
|
sawine@56
|
290 |
\frametitle{Automata}
|
sawine@59
|
291 |
\framesubtitle{Example 1/2}
|
sawine@58
|
292 |
\begin{figure}
|
sawine@58
|
293 |
\centering
|
sawine@60
|
294 |
\only<-3>{
|
sawine@58
|
295 |
\begin{tikzpicture}[shorten >=1pt, node distance=2cm, auto, semithick, >=stealth
|
sawine@58
|
296 |
%every state/.style={fill, draw=none, gray, text=white},
|
sawine@58
|
297 |
,accepting/.style={fill, gray!50!black, text=white}
|
sawine@58
|
298 |
%initial/.style ={gray, text=white}]%, thick]
|
sawine@58
|
299 |
]
|
sawine@58
|
300 |
\node[state,initial, initial text=] (q_0) {$q_0$};
|
sawine@58
|
301 |
\node[state] (q_1) [above right of= q_0] {$q_1$};
|
sawine@58
|
302 |
\node[state,accepting](q_2) [below right of= q_1] {$q_2$};
|
sawine@58
|
303 |
\path[->]
|
sawine@58
|
304 |
(q_0) edge node {$a$} (q_1)
|
sawine@58
|
305 |
edge [loop above] node {$b$} ()
|
sawine@58
|
306 |
(q_1) edge node {$b$} (q_2)
|
sawine@58
|
307 |
edge [loop above] node {$a$} ()
|
sawine@58
|
308 |
(q_2) %edge node {$a$} (q_1)
|
sawine@58
|
309 |
edge node {$b$} (q_0);
|
sawine@58
|
310 |
\draw[->] (q_2) .. controls +(up:1cm) and +(right:1cm) .. node[above] {$a$} (q_1);
|
sawine@60
|
311 |
\end{tikzpicture}\\
|
sawine@60
|
312 |
\vspace{10pt}
|
sawine@60
|
313 |
\visible<2-3>{$w_1 = \overline{bbaa} \implies \rho_1 = q_0q_0\overline{q_0q_1q_1q_2}$}\\
|
sawine@60
|
314 |
\visible<3>{$w_2 = bb\overline{ab} \implies \rho_2 = q_0q_0\overline{q_1q_2}$}\\
|
sawine@60
|
315 |
\vspace{10pt}
|
sawine@60
|
316 |
\visible<4>{Accepts all inputs with infinite occurrences of $ab$.}
|
sawine@58
|
317 |
}
|
sawine@58
|
318 |
|
sawine@60
|
319 |
\only<4>{
|
sawine@58
|
320 |
\begin{tikzpicture}[shorten >=1pt, node distance=2cm, auto, semithick, >=stealth
|
sawine@58
|
321 |
%every state/.style={fill, draw=none, gray, text=white},
|
sawine@58
|
322 |
,accepting/.style={fill, gray!50!black, text=white}
|
sawine@58
|
323 |
%initial/.style ={gray, text=white}]%, thick]
|
sawine@58
|
324 |
]
|
sawine@58
|
325 |
\node[state,initial, initial text=] (q_0) {$q_0$};
|
sawine@58
|
326 |
\node[state] (q_1) [above right of= q_0] {$q_1$};
|
sawine@58
|
327 |
\node[state,accepting](q_2) [below right of= q_1] {$q_2$};
|
sawine@58
|
328 |
\path[->]
|
sawine@58
|
329 |
(q_0)
|
sawine@58
|
330 |
edge [loop above] node {$b$} ()
|
sawine@58
|
331 |
(q_1)
|
sawine@58
|
332 |
edge [loop above] node {$a$} ()
|
sawine@58
|
333 |
(q_2) %edge node {$a$} (q_1)
|
sawine@58
|
334 |
edge node {$b$} (q_0);
|
sawine@58
|
335 |
\color{green}
|
sawine@58
|
336 |
\path[->]
|
sawine@58
|
337 |
(q_0) edge node {$a$} (q_1)
|
sawine@58
|
338 |
(q_1) edge node {$b$} (q_2);
|
sawine@58
|
339 |
\draw[->] (q_2) .. controls +(up:1cm) and +(right:1cm) .. node[above] {$a$} (q_1);
|
sawine@59
|
340 |
\end{tikzpicture}\\
|
sawine@58
|
341 |
\color{black}
|
sawine@60
|
342 |
\vspace{10pt}
|
sawine@60
|
343 |
\visible<2->{$w_1 = \overline{\textcolor{green}{b}ba\textcolor{green}{a}} \implies \rho_1 = q_0q_0\overline{q_0q_1q_1\textcolor{green}{q_2}}$}\\
|
sawine@60
|
344 |
\visible<3->{$w_2 = bb\overline{\textcolor{green}{ab}} \implies \rho_2 = q_0q_0\overline{q_1\textcolor{green}{q_2}}$}\\
|
sawine@60
|
345 |
\vspace{10pt}
|
sawine@60
|
346 |
\visible<4>{Accepts all inputs with infinite occurrences of $ab$.}
|
sawine@58
|
347 |
}
|
sawine@58
|
348 |
%Automaton $\A_1$
|
sawine@58
|
349 |
\end{figure}
|
sawine@58
|
350 |
\end{frame}
|
sawine@58
|
351 |
|
sawine@58
|
352 |
\begin{frame}
|
sawine@58
|
353 |
\frametitle{Automata}
|
sawine@59
|
354 |
\framesubtitle{Example 2/2 (Complement)}
|
sawine@58
|
355 |
\begin{figure}
|
sawine@58
|
356 |
\centering
|
sawine@60
|
357 |
\only<1>{
|
sawine@58
|
358 |
\subfigure
|
sawine@58
|
359 |
{
|
sawine@58
|
360 |
\begin{tikzpicture}[shorten >=1pt, node distance=2cm, auto, semithick, >=stealth
|
sawine@58
|
361 |
%every state/.style={fill, draw=none, gray, text=white},
|
sawine@58
|
362 |
,accepting/.style={fill, gray!50!black, text=white}
|
sawine@58
|
363 |
%initial/.style ={gray, text=white}]%, thick]
|
sawine@58
|
364 |
]
|
sawine@58
|
365 |
\node[state,initial, initial text=, accepting] (q_0) {$q_0$};
|
sawine@58
|
366 |
\node[state, accepting] (q_1) [above right of= q_0] {$q_1$};
|
sawine@58
|
367 |
\node[state](q_2) [below right of= q_1] {$q_2$};
|
sawine@58
|
368 |
\path[->]
|
sawine@58
|
369 |
(q_0) edge node {$a$} (q_1)
|
sawine@58
|
370 |
edge [loop above] node {$b$} ()
|
sawine@58
|
371 |
(q_1) edge node {$b$} (q_2)
|
sawine@58
|
372 |
edge [loop above] node {$a$} ()
|
sawine@58
|
373 |
(q_2) %edge node {$a$} (q_1)
|
sawine@58
|
374 |
edge node {$b$} (q_0);
|
sawine@58
|
375 |
\draw[->] (q_2) .. controls +(up:1cm) and +(right:1cm) .. node[above] {$a$} (q_1);
|
sawine@58
|
376 |
\end{tikzpicture}
|
sawine@58
|
377 |
}
|
sawine@58
|
378 |
}
|
sawine@58
|
379 |
\only<2>{
|
sawine@58
|
380 |
\subfigure
|
sawine@58
|
381 |
{
|
sawine@58
|
382 |
\begin{tikzpicture}[shorten >=1pt, node distance=2cm, auto, semithick, >=stealth
|
sawine@58
|
383 |
%every state/.style={fill, draw=none, gray, text=white},
|
sawine@58
|
384 |
,accepting/.style={fill, gray!50!black, text=white}
|
sawine@58
|
385 |
%initial/.style ={gray, text=white}]%, thick]
|
sawine@58
|
386 |
]
|
sawine@58
|
387 |
\node[state,initial, initial text=, accepting] (q_0) {$q_0$};
|
sawine@58
|
388 |
\node[state, accepting] (q_1) [above right of= q_0] {$q_1$};
|
sawine@58
|
389 |
\node[state](q_2) [below right of= q_1] {$q_2$};
|
sawine@58
|
390 |
\path[->]
|
sawine@58
|
391 |
(q_0)
|
sawine@58
|
392 |
edge [loop above] node {$b$} ()
|
sawine@58
|
393 |
(q_1)
|
sawine@58
|
394 |
edge [loop above] node {$a$} ();
|
sawine@58
|
395 |
\color{red}
|
sawine@58
|
396 |
\path[->]
|
sawine@58
|
397 |
(q_0) edge node {$a$} (q_1)
|
sawine@58
|
398 |
(q_1) edge node {$b$} (q_2)
|
sawine@58
|
399 |
(q_2) edge node {$b$} (q_0);
|
sawine@58
|
400 |
\draw[->] (q_2) .. controls +(up:1cm) and +(right:1cm) .. node[above] {$a$} (q_1);
|
sawine@58
|
401 |
\end{tikzpicture} \color{red}
|
sawine@58
|
402 |
}
|
sawine@58
|
403 |
\color{black}
|
sawine@58
|
404 |
}
|
sawine@58
|
405 |
\only<3->{ \setcounter{subfigure}{0}
|
sawine@62
|
406 |
\subfigure[Complement automaton \cross]
|
sawine@58
|
407 |
{
|
sawine@58
|
408 |
\begin{tikzpicture}[shorten >=1pt, node distance=2cm, auto, semithick, >=stealth
|
sawine@58
|
409 |
%every state/.style={fill, draw=none, gray, text=white},
|
sawine@58
|
410 |
,accepting/.style={fill, gray!50!black, text=white}
|
sawine@58
|
411 |
%initial/.style ={gray, text=white}]%, thick]
|
sawine@58
|
412 |
]
|
sawine@58
|
413 |
\node[state,initial, initial text=, accepting] (q_0) {$q_0$};
|
sawine@58
|
414 |
\node[state, accepting] (q_1) [above right of= q_0] {$q_1$};
|
sawine@58
|
415 |
\node[state](q_2) [below right of= q_1] {$q_2$};
|
sawine@58
|
416 |
\path[->]
|
sawine@58
|
417 |
(q_0)
|
sawine@58
|
418 |
edge [loop above] node {$b$} ()
|
sawine@58
|
419 |
(q_1)
|
sawine@58
|
420 |
edge [loop above] node {$a$} ();
|
sawine@58
|
421 |
\path[->]
|
sawine@58
|
422 |
(q_0) edge node {$a$} (q_1)
|
sawine@58
|
423 |
(q_1) edge node {$b$} (q_2)
|
sawine@58
|
424 |
(q_2) edge node {$b$} (q_0);
|
sawine@58
|
425 |
\draw[->] (q_2) .. controls +(up:1cm) and +(right:1cm) .. node[above] {$a$} (q_1);
|
sawine@58
|
426 |
\end{tikzpicture} \color{red}
|
sawine@58
|
427 |
}
|
sawine@58
|
428 |
\color{black}
|
sawine@58
|
429 |
}
|
sawine@60
|
430 |
%\hspace{10pt}
|
sawine@58
|
431 |
\visible<3->{
|
sawine@62
|
432 |
\subfigure[Complement automaton \checkmark]
|
sawine@58
|
433 |
{
|
sawine@58
|
434 |
\label{fig:complement automaton}
|
sawine@58
|
435 |
\begin{tikzpicture}[shorten >=1pt, node distance=2cm, auto, semithick, >=stealth
|
sawine@58
|
436 |
,accepting/.style={fill, gray!50!black, text=white}]
|
sawine@58
|
437 |
\node[state, initial, initial text=] (q_0) {$q_0$};
|
sawine@58
|
438 |
\node[state, accepting] (q_1) [above right of= q_0] {$q_1$};
|
sawine@58
|
439 |
\node[state, accepting](q_2) [below right of= q_1] {$q_2$};
|
sawine@58
|
440 |
\path[->]
|
sawine@58
|
441 |
(q_0) edge node {$a$} (q_1)
|
sawine@58
|
442 |
edge node {$b$} (q_2)
|
sawine@58
|
443 |
edge [loop above] node {$a, b$} ()
|
sawine@58
|
444 |
(q_1) edge [loop above] node {$a$} ()
|
sawine@58
|
445 |
(q_2)
|
sawine@58
|
446 |
edge [loop above] node {$b$} ();
|
sawine@58
|
447 |
\end{tikzpicture}\color{green}
|
sawine@59
|
448 |
}\\
|
sawine@58
|
449 |
\color{black}
|
sawine@59
|
450 |
\vspace{20pt}
|
sawine@66
|
451 |
Accepts all inputs with finite many $ab$.
|
sawine@58
|
452 |
}
|
sawine@58
|
453 |
%\caption{Automata from Example \ref{ex:automaton}}
|
sawine@58
|
454 |
\end{figure}
|
sawine@58
|
455 |
\end{frame}
|
sawine@61
|
456 |
\color{black}
|
sawine@58
|
457 |
|
sawine@58
|
458 |
\begin{frame}
|
sawine@58
|
459 |
\frametitle{Automata}
|
sawine@56
|
460 |
\framesubtitle{Definition}
|
sawine@55
|
461 |
\begin{def:buechi automata}
|
sawine@56
|
462 |
A non-deterministic B\"uchi automaton is a tuple $\A = (\Sigma, S, S_0, \Delta, F)$ with:
|
sawine@55
|
463 |
\begin{itemize}
|
sawine@57
|
464 |
\item $\Sigma$ is a finite \emph{alphabet}.
|
sawine@57
|
465 |
\item $S$ is a finite set of \emph{states}.
|
sawine@57
|
466 |
\item $S_0 \subseteq S$ is the set of \emph{initial states}.
|
sawine@57
|
467 |
\item $\Delta: S \times \Sigma \times S$ is a \emph{transition relation}.
|
sawine@57
|
468 |
\item $F \subseteq S$ is the set of \emph{accepting states}.
|
sawine@55
|
469 |
\end{itemize}
|
sawine@55
|
470 |
\end{def:buechi automata}
|
sawine@55
|
471 |
\end{frame}
|
sawine@55
|
472 |
|
sawine@55
|
473 |
\begin{frame}
|
sawine@56
|
474 |
\frametitle{Automata}
|
sawine@56
|
475 |
\framesubtitle{Runs}
|
sawine@56
|
476 |
\begin{def:automata runs}
|
sawine@56
|
477 |
Let $\A = (\Sigma, S, S_0, \Delta, F)$ be an automaton:
|
sawine@56
|
478 |
\begin{itemize}
|
sawine@56
|
479 |
\item A run $\rho$ of $\A$ on an infinite word $w = a_0,a_1,...$ is a sequence $\rho = s_0,s_1,...$:
|
sawine@56
|
480 |
\begin{itemize}
|
sawine@57
|
481 |
\item $s_0 \in S_0$.
|
sawine@57
|
482 |
\item $(s_i, a_i, s_{i+1}) \in \Delta$, for all $i \geq 0$.
|
sawine@56
|
483 |
\end{itemize}
|
sawine@57
|
484 |
\item Alternative view of a run $\rho$ as a function $\rho : \N \to S$, with $\rho(i) = s_i$.
|
sawine@56
|
485 |
\end{itemize}
|
sawine@56
|
486 |
\end{def:automata runs}
|
sawine@66
|
487 |
\visible<2->{\[w_1 = \overline{\textcolor{green}{b}ba\textcolor{green}{a}} \implies \rho_1 = q_0q_0\overline{q_0q_1q_1\textcolor{green}{q_2}}\]
|
sawine@66
|
488 |
\[w_2 = bb\overline{\textcolor{green}{ab}} \implies \rho_2 = q_0q_0\overline{q_1\textcolor{green}{q_2}}\]}
|
sawine@56
|
489 |
\end{frame}
|
sawine@56
|
490 |
|
sawine@56
|
491 |
\begin{frame}
|
sawine@56
|
492 |
\frametitle{Automata}
|
sawine@56
|
493 |
\framesubtitle{Acceptance}
|
sawine@56
|
494 |
\begin{def:inf}
|
sawine@56
|
495 |
Let $\A = (\Sigma, S, S_0, \Delta, F)$ be an automaton and let $\rho$ be a run of $\A$:
|
sawine@56
|
496 |
\begin{itemize}
|
sawine@59
|
497 |
\item $\exists^\omega$ denotes the existential quantifier for \emph{infinitely} many occurrences.
|
sawine@57
|
498 |
\item $inf(\rho) = \{s \in S \mid \exists^\omega{n \in \N}: \rho(n) = s\}$.
|
sawine@56
|
499 |
\end{itemize}
|
sawine@56
|
500 |
\end{def:inf}
|
sawine@56
|
501 |
|
sawine@56
|
502 |
\begin{def:automata acceptance}
|
sawine@56
|
503 |
Let $\A = (\Sigma, S, S_0, \Delta, F)$ be an automaton and let $\rho$ be a run of $\A$:
|
sawine@56
|
504 |
\begin{itemize}
|
sawine@56
|
505 |
\item $\rho$ is \emph{accepting} iff $inf(\rho) \cap F \neq \emptyset$.
|
sawine@59
|
506 |
\item $\A$ \emph{accepts} an input word $w$ iff there exists a run $\rho$ of $\A$ on $w$, such that $\rho$ is accepting.
|
sawine@56
|
507 |
\end{itemize}
|
sawine@56
|
508 |
\end{def:automata acceptance}
|
sawine@56
|
509 |
\end{frame}
|
sawine@56
|
510 |
|
sawine@56
|
511 |
\begin{frame}
|
sawine@56
|
512 |
\frametitle{Automata}
|
sawine@56
|
513 |
\framesubtitle{Language}
|
sawine@56
|
514 |
\begin{def:automata language}
|
sawine@56
|
515 |
Let $\A = (\Sigma, S, S_0, \Delta, F)$ be an automaton:
|
sawine@56
|
516 |
\begin{itemize}
|
sawine@57
|
517 |
\item $L_\omega(\A) = \{w \in \Sigma^\omega \mid \A \text{ accepts } w\}$, we say $\A$ recognises language $L_\omega(\A)$.
|
sawine@57
|
518 |
\item Language $L$ is \emph{B\"uchi-recognisable} iff there is an automaton $\A$ with $L = L_\omega(\A)$.
|
sawine@56
|
519 |
\end{itemize}
|
sawine@56
|
520 |
\end{def:automata language}
|
sawine@56
|
521 |
\end{frame}
|
sawine@56
|
522 |
|
sawine@56
|
523 |
\begin{frame}
|
sawine@57
|
524 |
\frametitle{Generalised Automata}
|
sawine@57
|
525 |
\begin{def:general automata}
|
sawine@65
|
526 |
A \emph{generalised B\"uchi automaton} is a tuple $\A_G = (\Sigma, S, S_0, \Delta, \{F_i\}_{i<k})$:
|
sawine@57
|
527 |
\begin{itemize}
|
sawine@57
|
528 |
\item $\{F_i\}$ is a finite set of sets for a given $k$.
|
sawine@57
|
529 |
\item Each $F_i \subseteq S$ is a finite set of accepting states.
|
sawine@57
|
530 |
\end{itemize}
|
sawine@57
|
531 |
\end{def:general automata}
|
sawine@57
|
532 |
|
sawine@57
|
533 |
\begin{def:general acceptance}
|
sawine@65
|
534 |
Let $\A_G = (\Sigma, S, S_0, \Delta, \{F_i\}_{i<k})$ be a generalised automaton and let $\rho$ be a run of $\A_G$:
|
sawine@57
|
535 |
\begin{itemize}
|
sawine@57
|
536 |
\item $\rho$ is \emph{accepting} iff $\forall{i < k}: inf(\rho) \cap F_i \neq \emptyset$.
|
sawine@65
|
537 |
\item $\A_G$ \emph{accepts} an input word $w$ iff there exists a run $\rho$ of $\A_G$ on $w$, such that $\rho$ is accepting.
|
sawine@57
|
538 |
\end{itemize}
|
sawine@57
|
539 |
\end{def:general acceptance}
|
sawine@57
|
540 |
|
sawine@57
|
541 |
\begin{prop:general equiv}
|
sawine@65
|
542 |
Let $\A_G = (\Sigma, S, S_0, \Delta, \{F_i\}_{i < k})$ be a generalised automaton and let $\A_i = (\Sigma, S, S_0, \Delta, F_i)$ be non-deterministic automata:
|
sawine@65
|
543 |
\[L_\omega(\A_G) = \bigcap_{i < k} L_\omega(\A_i)\]
|
sawine@57
|
544 |
\end{prop:general equiv}
|
sawine@57
|
545 |
\end{frame}
|
sawine@57
|
546 |
|
sawine@65
|
547 |
\begin{frame}
|
sawine@68
|
548 |
\frametitle{Automata Construction}
|
sawine@68
|
549 |
\framesubtitle{Formula automata}
|
sawine@68
|
550 |
\begin{center}
|
sawine@68
|
551 |
Model $\M_\varphi$ for formula $\varphi$\\
|
sawine@68
|
552 |
$\Downarrow$\\
|
sawine@68
|
553 |
Closure $CL(\varphi)$ of $\varphi$\\
|
sawine@68
|
554 |
$\Downarrow$\\
|
sawine@68
|
555 |
Automaton $\A_\varphi$ for $\varphi$\\
|
sawine@68
|
556 |
\vspace{20pt}
|
sawine@74
|
557 |
\visible<2>{\textcolor{red}{On-the-fly method} \`a la Gerth et al.}
|
sawine@68
|
558 |
\end{center}
|
sawine@68
|
559 |
\end{frame}
|
sawine@68
|
560 |
|
sawine@68
|
561 |
\begin{frame}
|
sawine@68
|
562 |
\frametitle{Automata Construction}
|
sawine@72
|
563 |
\framesubtitle{System automata 1/2}
|
sawine@72
|
564 |
\begin{def:program}
|
sawine@72
|
565 |
Given a program $P = (S_P, s_0, R, V)$:
|
sawine@72
|
566 |
\begin{itemize}
|
sawine@72
|
567 |
\begin{multicols}{2}
|
sawine@72
|
568 |
\item $S$ is the set of possible states.
|
sawine@72
|
569 |
\item $s_0$ is the initial state.
|
sawine@72
|
570 |
\item $R : S \times \Prop \times S$ is the transition relation.
|
sawine@72
|
571 |
\item $V : S \to 2^\Prop$ is a valuation function.
|
sawine@72
|
572 |
\end{multicols}
|
sawine@72
|
573 |
\end{itemize}
|
sawine@72
|
574 |
A \emph{computation} of $P$ is a run $\rho = (V(s_0), V(s_1), ...)$.
|
sawine@72
|
575 |
\end{def:program}
|
sawine@72
|
576 |
|
sawine@72
|
577 |
\begin{def:program automaton}
|
sawine@72
|
578 |
We construct automaton $\A_P = (\Sigma, S, S_0, \Delta, F)$ for program $P$:
|
sawine@72
|
579 |
\begin{itemize}
|
sawine@72
|
580 |
\begin{multicols}{2}
|
sawine@72
|
581 |
\item $\Sigma = 2^\Prop$
|
sawine@72
|
582 |
\item $S = S_P$
|
sawine@72
|
583 |
\item $S_0 = \{s_0\}$
|
sawine@72
|
584 |
\item $F = S$
|
sawine@72
|
585 |
\end{multicols}
|
sawine@72
|
586 |
\vspace{-1.1em}
|
sawine@72
|
587 |
\item $\Delta = \{(s, V(s), s') \mid \exists{a \in \Prop}: (s, a, s') \in R\}$
|
sawine@72
|
588 |
\end{itemize}
|
sawine@72
|
589 |
\end{def:program automaton}
|
sawine@68
|
590 |
\end{frame}
|
sawine@68
|
591 |
|
sawine@68
|
592 |
\begin{frame}
|
sawine@72
|
593 |
\frametitle{Automata Construction}
|
sawine@72
|
594 |
\framesubtitle{System automata 2/2}
|
sawine@72
|
595 |
\begin{prop:computation set=language}
|
sawine@72
|
596 |
Let $\A_P = (\Sigma, S, S_0, \Delta, F)$, note that $F = S$, it follows:
|
sawine@72
|
597 |
\[L_\omega(\A_P) = \{\rho \mid \rho \text{ is a run of } \A_P\}\]
|
sawine@72
|
598 |
\end{prop:computation set=language}
|
sawine@72
|
599 |
\end{frame}
|
sawine@72
|
600 |
|
sawine@72
|
601 |
\begin{frame}
|
sawine@72
|
602 |
\frametitle{Verification}
|
sawine@72
|
603 |
\begin{center}
|
sawine@72
|
604 |
Given a program $P$ and specification $\varphi$:\\
|
sawine@72
|
605 |
\colorbox{black}{\makebox(150,10){\color{white}
|
sawine@72
|
606 |
\only<1>{does every run of $P$ satisfy $\varphi$?}
|
sawine@72
|
607 |
\only<2>{$L_\omega(\A_P) \subseteq L_\omega(\A_\varphi)$}
|
sawine@72
|
608 |
\only<3>{$L_\omega(\A_P) \cap L_\omega(\A_{\neg \varphi}) = \emptyset$}}}
|
sawine@72
|
609 |
\end{center}
|
sawine@55
|
610 |
\end{frame}
|
sawine@55
|
611 |
|
sawine@55
|
612 |
\begin{frame}[allowframebreaks]
|
sawine@55
|
613 |
\frametitle<presentation>{Literature}
|
sawine@55
|
614 |
\begin{thebibliography}{10}
|
sawine@55
|
615 |
|
sawine@72
|
616 |
%\beamertemplatearticlebibitems
|
sawine@55
|
617 |
\bibitem{ref:ltl&büchi}
|
sawine@55
|
618 |
Madhavan Mukund.
|
sawine@55
|
619 |
\newblock {\em Linear-Time Temporal Logic and B\"uchi Automata}.
|
sawine@55
|
620 |
\newblock Winter School on Logic and Computer Science, Indian Statistical Institute, Calcutta, 1997.
|
sawine@55
|
621 |
|
sawine@72
|
622 |
%\beamertemplatearticlebibitems
|
sawine@55
|
623 |
\bibitem{ref:alternating verification}
|
sawine@55
|
624 |
Moshe Y. Vardi.
|
sawine@55
|
625 |
\newblock {\em Alternating Automata and Program Verification}.
|
sawine@55
|
626 |
\newblock Computer Science Today, Volume 1000 of Lecture Notes in Computer Science, Springer-Verlag, Berlin, 1995.
|
sawine@55
|
627 |
|
sawine@72
|
628 |
\bibitem{ref:on-the-fly verification}
|
sawine@72
|
629 |
Rob Gerth, Doron Peled, Moshe Y. Vardi and Pierre Wolper.
|
sawine@72
|
630 |
\newblock {\em Simple On-the-fly Automatic Verification of Linear Temporal Logic}.
|
sawine@72
|
631 |
\newblock Proceeding IFIO/WG6.1 Symposium on Protocol Specification, Testing and Verification, Warsaw, 1995.
|
sawine@72
|
632 |
|
sawine@55
|
633 |
\beamertemplatebookbibitems
|
sawine@55
|
634 |
\bibitem{ref:handbook}
|
sawine@72
|
635 |
Patrick Blackburn, Frank Wolter and Johan van Benthem.
|
sawine@55
|
636 |
\newblock {\em Handbook of Modal Logic}.
|
sawine@55
|
637 |
\newblock 3rd Edition, Elsevier, Amsterdam, Chapter 11 P. 655-720 and Chapter 17 P. 975-989, 2007.
|
sawine@55
|
638 |
|
sawine@72
|
639 |
\beamertemplatearticlebibitems
|
sawine@72
|
640 |
\bibitem{ref:automated verification}
|
sawine@72
|
641 |
Moshe Y. Vardi.
|
sawine@72
|
642 |
\newblock {\em Automated Verification: Graphs, Logic and Automata}.
|
sawine@72
|
643 |
\newblock Proceeding of the International Joint Conference on Artificial Intelligence, Acapulco, 2003.
|
sawine@72
|
644 |
|
sawine@55
|
645 |
\end{thebibliography}
|
sawine@55
|
646 |
\end{frame}
|
sawine@55
|
647 |
|
sawine@55
|
648 |
\end{document}
|