slides/src/slides.tex
author Eugen Sawin <sawine@me73.com>
Fri, 22 Jul 2011 23:39:42 +0200
changeset 74 9938ea8ed067
parent 73 271b2a5270c1
permissions -rw-r--r--
Final.
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}