sawine@55: \documentclass[9pt]{beamer} sawine@55: \usetheme{Boadilla} sawine@58: \usecolortheme{dove} sawine@58: \usecolortheme{orchid} sawine@58: \usecolortheme{dolphin} sawine@58: %\usecolortheme{seagull} sawine@58: sawine@60: \usepackage{amsmath, amsthm, amssymb, amsfonts, verbatim} sawine@62: \usepackage{pifont} sawine@61: \usepackage{xcolor} sawine@58: \usepackage{ulem} sawine@66: \usepackage{graphics} sawine@58: \usepackage{tikz} sawine@58: \usetikzlibrary{automata} sawine@58: \usepackage{subfigure} sawine@55: sawine@61: \renewcommand{\emph}{\textit} sawine@66: \renewcommand{\em}{\it} sawine@62: sawine@62: \newcommand{\cross}{\ding{55}} sawine@55: \newcommand{\M}{\mathcal{M}} sawine@55: \newcommand{\N}{\mathbb{N}_0} sawine@55: \newcommand{\F}{\mathcal{F}} sawine@57: \newcommand{\Fs}{\mathbb{F}} sawine@55: \newcommand{\Prop}{\mathcal{P}} sawine@55: \newcommand{\A}{\mathcal{A}} sawine@55: \newcommand{\X}{\mathcal{X}} sawine@55: \newcommand{\U}{\mathcal{U}} sawine@55: \newcommand{\V}{\mathcal{V}} sawine@55: \newcommand{\dnf}{\mathsf{dnf}} sawine@55: \newcommand{\consq}{\mathsf{consq}} sawine@55: sawine@55: \theoremstyle{definition} %plain, definition, remark, proof, corollary sawine@55: \newtheorem*{def:finite words}{Finite words} sawine@55: \newtheorem*{def:infinite words}{Infinite words} sawine@55: \newtheorem*{def:regular languages}{Regular languages} sawine@55: \newtheorem*{def:regular languages closure}{Regular closure} sawine@55: \newtheorem*{def:omega regular languages}{$\omega$-regular languages} sawine@55: \newtheorem*{def:omega regular languages closure}{$\omega$-regular closure} sawine@55: \newtheorem*{def:buechi automata}{Automaton} sawine@56: \newtheorem*{def:automata runs}{Run} sawine@56: \newtheorem*{def:inf}{Infinite occurrences} sawine@55: \newtheorem*{def:automata acceptance}{Acceptance} sawine@56: \newtheorem*{def:automata language}{Recognised language} sawine@57: \newtheorem*{def:general automata}{Generalised automaton} sawine@55: \newtheorem*{def:general acceptance}{Acceptance} sawine@61: \newtheorem*{def:syntax}{Syntax} sawine@61: sawine@61: sawine@55: \newtheorem*{def:vocabulary}{Vocabulary} sawine@62: \newtheorem*{def:frames}{Frame} sawine@62: \newtheorem*{def:models}{Model} sawine@55: \newtheorem*{def:satisfiability}{Satisfiability} sawine@55: \newtheorem*{def:fs closure}{Closure} sawine@55: \newtheorem*{def:atoms}{Atoms} sawine@55: \newtheorem*{def:rep function}{Representation function} sawine@55: \newtheorem*{def:next}{Next function} sawine@55: \newtheorem*{def:dnf}{Disjunctive normal form} sawine@55: \newtheorem*{def:positive formulae}{Positive formulae} sawine@55: \newtheorem*{def:consq}{Logical consequences} sawine@55: \newtheorem*{def:partial automata}{Partial automata} sawine@55: sawine@55: \theoremstyle{plain} sawine@55: \newtheorem{prop:vocabulary sat}{Proposition}[section] sawine@55: \newtheorem{prop:general equiv}{Proposition}[section] sawine@55: \newtheorem{prop:computation set=language}{Proposition}[section] sawine@55: sawine@55: \theoremstyle{plain} sawine@55: \newtheorem{thm:model language}{Theorem}[section] sawine@55: \newtheorem{cor:mod=model language}{Corollary}[thm:model language] sawine@55: \newtheorem{cor:mod=program language}[cor:mod=model language]{Corollary} sawine@55: \newtheorem{thm:model checking}{Theorem}[section] sawine@55: \newtheorem{lem:dnf}{Lemma}[section] sawine@55: \newtheorem{lem:consq}[lem:dnf]{Lemma} sawine@55: sawine@55: \title[Algorithmic Verification]{Algorithmic Verification of Reactive Systems} sawine@55: \author{Eugen Sawin} sawine@55: \institute[University of Freiburg] sawine@55: { sawine@55: Research Group for Foundations in Artificial Intelligence\\ sawine@55: Computer Science Department\\ sawine@55: University of Freiburg sawine@55: } sawine@55: \date[SS 2011]{Seminar: Automata Constructions in Model Checking} sawine@55: \subject{Model Checking} sawine@55: sawine@55: \begin{document} sawine@55: \frame{\titlepage} sawine@66: sawine@55: \begin{frame} sawine@55: \frametitle{Motivation} sawine@67: \framesubtitle{Model Checking 1/2} sawine@66: \begin{center} sawine@66: %\only<1>{\colorbox{black}{\makebox(35,10){\color{white} $\M \models \varphi$}}} sawine@67: \[\M \models \varphi\] sawine@66: \end{center} sawine@66: \end{frame} sawine@66: sawine@66: \begin{frame} sawine@66: \frametitle{Motivation} sawine@67: \framesubtitle{Model Checking 2/2} sawine@67: \begin{center} sawine@67: Given a program $P$ and specification $\varphi$:\\ sawine@67: \colorbox{black}{\makebox(150,10){\color{white} does every run of $P$ satisfy $\varphi$?}} sawine@67: \end{center} sawine@67: \end{frame} sawine@67: sawine@67: \begin{frame} sawine@67: \frametitle{Motivation} sawine@67: \framesubtitle{Industry} sawine@66: \begin{figure} sawine@66: \centering sawine@67: \subfigure{\includegraphics[width=70pt,height=50pt]{images/intel.jpg}} sawine@67: \subfigure{\includegraphics[width=70pt,height=50pt]{images/airbag.jpg}} sawine@67: \subfigure{\includegraphics[width=70pt,height=50pt]{images/atc.jpg}} sawine@66: \end{figure} sawine@55: \end{frame} sawine@55: sawine@67: { sawine@67: \setbeamercolor{normal text}{bg=black, fg=white} sawine@67: \setbeamercolor{frametitle}{fg=white!30!black} sawine@67: \usebeamercolor*{normal text} sawine@67: \usebeamercolor*{frametitle} sawine@67: \begin{frame} sawine@67: \frametitle{Linear Temporal Logic} sawine@67: \framesubtitle{Motivation 1/2} sawine@67: \begin{center} sawine@67: ``It is dark.''\\ sawine@67: \visible<2->{``It is \emph{always} dark.''\\} sawine@67: \visible<3->{``It is \emph{currently} dark.''\\} sawine@69: \visible<4->{``It will \emph{necessarily} be dark.''\\} sawine@67: \visible<5->{``It is dark \emph{until} someone puts the light on.''} sawine@67: \end{center} sawine@67: \end{frame} sawine@67: } sawine@67: sawine@67: \begin{frame} sawine@67: \frametitle{Linear Temporal Logic} sawine@67: \framesubtitle{Motivation 2/2} sawine@67: \begin{center} sawine@67: \only<1->{ sawine@67: \color{white} sawine@67: \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: \visible<2->{ sawine@67: \colorbox{black}{\makebox(50,10){$p_0$}} \colorbox{orange}{\makebox(30,10){$\U$}} \colorbox{black!30}{\makebox(50,10){$p_1$}}} sawine@67: } sawine@67: \end{center} sawine@67: \end{frame} sawine@67: sawine@67: \begin{frame} sawine@67: \frametitle{Linear Temporal Logic} sawine@67: \framesubtitle{Syntax} sawine@67: \begin{def:syntax} sawine@67: Let $\Prop$ be the countable set of \emph{atomic propositions}, LTL-formulae $\varphi$ are defined using following productions: sawine@67: \[\varphi ::= p \in \Prop \,|\, \neg \varphi \,|\, \varphi \lor \varphi \,|\, \X \varphi \,|\, \varphi \U \varphi\] sawine@67: \begin{itemize} sawine@67: \item $\neg, \lor$ corresponds to the Boolean \emph{negation} and \emph{disjunction}. sawine@67: \item $\X$ reads \emph{next}. sawine@67: \item $\U$ reads \emph{until}. sawine@67: \end{itemize} sawine@67: \end{def:syntax} sawine@67: \end{frame} sawine@67: sawine@67: \begin{frame} sawine@67: \frametitle{Linear Temporal Logic} sawine@67: \framesubtitle{Semantics} sawine@67: \begin{def:frames} sawine@67: An LTL-\emph{frame} is a tuple $\F = (S, R)$: sawine@67: \begin{itemize} sawine@67: \item $S = \{s_i \mid i \in \N\}$ is the set of states. sawine@67: \item $R = \{(s_i, s_{i+1}) \mid i \in \N\}$ is the accessibility relation. sawine@67: \end{itemize} sawine@67: \end{def:frames} sawine@67: sawine@67: \begin{def:models} sawine@67: An LTL-\emph{model} is a tuple $\M = (\F, V)$: sawine@67: \begin{itemize} sawine@67: \item $\F$ is a \emph{frame}. sawine@67: \item $V: S \to 2^\Prop$ is a \emph{valuation function}. sawine@67: \item Intuitively we say $p \in \Prop$ is \emph{true} at time instant $i$ iff $p \in V(i)$. sawine@67: \end{itemize} sawine@67: \end{def:models} sawine@67: \end{frame} sawine@67: sawine@67: \begin{frame} sawine@67: \frametitle{Linear Temporal Logic} sawine@67: \framesubtitle{Model Example} sawine@67: \begin{figure} sawine@67: \centering sawine@67: \begin{tikzpicture}[shorten >=1pt, node distance=2.5cm, auto, semithick, >=stealth sawine@67: ,accepting/.style={fill, gray!50!black, text=white}] sawine@67: \node[state, initial, initial text=] (s_0) {$\{p_0\}$}; sawine@67: \path (s_0) [late options={label=below:$s_0$}]; sawine@67: \node[state] (s_1) [right of= s_0] {$\{p_0, p_2\}$}; sawine@67: \path (s_1) [late options={label=below:$s_1$}]; sawine@67: \node[state] (s_2) [right of= s_1] {$\{p_1\}$}; sawine@67: \path (s_2) [late options={label=below:$s_2$}]; sawine@67: \node[state] (s_i) [right of= s_2] {$\{p_1\}$}; sawine@67: \path (s_i) [late options={label=below:$s_i$}]; sawine@67: \path[->] sawine@67: (s_0) edge node {$R$} (s_1) sawine@67: (s_1) edge node {$R$} (s_2); sawine@67: \path[dashed,->] sawine@67: (s_2) edge node {$R$} (s_i); sawine@67: \end{tikzpicture} sawine@67: \end{figure} sawine@67: \end{frame} sawine@67: sawine@67: \begin{frame} sawine@67: \frametitle{Linear Temporal Logic} sawine@67: \framesubtitle{Satisfiability} sawine@67: \begin{def:satisfiability} sawine@67: A model $\M = (\F, V)$ \emph{satisfies} a formula $\varphi$ at time instant $i$ is denoted by $\M,i \models \varphi$: sawine@67: \begin{itemize} sawine@67: \item $\M,i \models p$ for $p \in \Prop \iff p \in V(i)$ sawine@67: \item $\M,i \models \neg \varphi \iff$ not $\M,i \models \varphi$ sawine@67: \item $\M,i \models \varphi \lor \psi \iff \M,i \models \varphi$ or $\M,i \models \psi$ sawine@67: \item $\M,i \models \X \varphi \iff \M,i+1 \models \varphi$ sawine@67: \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: \end{itemize} sawine@67: \end{def:satisfiability} sawine@67: \end{frame} sawine@67: sawine@55: \begin{frame} sawine@55: \frametitle{Infinity} sawine@66: \framesubtitle{Word as function} sawine@66: \begin{figure} sawine@66: \centering sawine@66: \begin{tikzpicture}[shorten >=1pt, node distance=1.5cm, semithick, >=stealth sawine@66: ,accepting/.style={fill, gray!50!black, text=white}] sawine@66: \node[state, initial, initial text=] (s_0) {$a$}; sawine@66: \node[state] (s_1) [right of= s_0] {$b$}; sawine@66: \node[state] (s_2) [right of= s_1] {$a$}; sawine@66: \node[state] (s_i) [right of= s_2] {$a$}; sawine@66: \path[->] sawine@66: (s_0) edge node {} (s_1) sawine@66: (s_1) edge node {} (s_2); sawine@66: \path[dashed,->] sawine@66: (s_2) edge node {} (s_i); sawine@66: \end{tikzpicture} sawine@66: \end{figure} sawine@55: \end{frame} sawine@55: sawine@55: \begin{frame} sawine@56: \frametitle{Automata} sawine@59: \framesubtitle{Example 1/2} sawine@58: \begin{figure} sawine@58: \centering sawine@60: \only<-3>{ sawine@58: \begin{tikzpicture}[shorten >=1pt, node distance=2cm, auto, semithick, >=stealth sawine@58: %every state/.style={fill, draw=none, gray, text=white}, sawine@58: ,accepting/.style={fill, gray!50!black, text=white} sawine@58: %initial/.style ={gray, text=white}]%, thick] sawine@58: ] sawine@58: \node[state,initial, initial text=] (q_0) {$q_0$}; sawine@58: \node[state] (q_1) [above right of= q_0] {$q_1$}; sawine@58: \node[state,accepting](q_2) [below right of= q_1] {$q_2$}; sawine@58: \path[->] sawine@58: (q_0) edge node {$a$} (q_1) sawine@58: edge [loop above] node {$b$} () sawine@58: (q_1) edge node {$b$} (q_2) sawine@58: edge [loop above] node {$a$} () sawine@58: (q_2) %edge node {$a$} (q_1) sawine@58: edge node {$b$} (q_0); sawine@58: \draw[->] (q_2) .. controls +(up:1cm) and +(right:1cm) .. node[above] {$a$} (q_1); sawine@60: \end{tikzpicture}\\ sawine@60: \vspace{10pt} sawine@60: \visible<2-3>{$w_1 = \overline{bbaa} \implies \rho_1 = q_0q_0\overline{q_0q_1q_1q_2}$}\\ sawine@60: \visible<3>{$w_2 = bb\overline{ab} \implies \rho_2 = q_0q_0\overline{q_1q_2}$}\\ sawine@60: \vspace{10pt} sawine@60: \visible<4>{Accepts all inputs with infinite occurrences of $ab$.} sawine@58: } sawine@58: sawine@60: \only<4>{ sawine@58: \begin{tikzpicture}[shorten >=1pt, node distance=2cm, auto, semithick, >=stealth sawine@58: %every state/.style={fill, draw=none, gray, text=white}, sawine@58: ,accepting/.style={fill, gray!50!black, text=white} sawine@58: %initial/.style ={gray, text=white}]%, thick] sawine@58: ] sawine@58: \node[state,initial, initial text=] (q_0) {$q_0$}; sawine@58: \node[state] (q_1) [above right of= q_0] {$q_1$}; sawine@58: \node[state,accepting](q_2) [below right of= q_1] {$q_2$}; sawine@58: \path[->] sawine@58: (q_0) sawine@58: edge [loop above] node {$b$} () sawine@58: (q_1) sawine@58: edge [loop above] node {$a$} () sawine@58: (q_2) %edge node {$a$} (q_1) sawine@58: edge node {$b$} (q_0); sawine@58: \color{green} sawine@58: \path[->] sawine@58: (q_0) edge node {$a$} (q_1) sawine@58: (q_1) edge node {$b$} (q_2); sawine@58: \draw[->] (q_2) .. controls +(up:1cm) and +(right:1cm) .. node[above] {$a$} (q_1); sawine@59: \end{tikzpicture}\\ sawine@58: \color{black} sawine@60: \vspace{10pt} sawine@60: \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: \visible<3->{$w_2 = bb\overline{\textcolor{green}{ab}} \implies \rho_2 = q_0q_0\overline{q_1\textcolor{green}{q_2}}$}\\ sawine@60: \vspace{10pt} sawine@60: \visible<4>{Accepts all inputs with infinite occurrences of $ab$.} sawine@58: } sawine@58: %Automaton $\A_1$ sawine@58: \end{figure} sawine@58: \end{frame} sawine@58: sawine@58: \begin{frame} sawine@58: \frametitle{Automata} sawine@59: \framesubtitle{Example 2/2 (Complement)} sawine@58: \begin{figure} sawine@58: \centering sawine@60: \only<1>{ sawine@58: \subfigure sawine@58: { sawine@58: \begin{tikzpicture}[shorten >=1pt, node distance=2cm, auto, semithick, >=stealth sawine@58: %every state/.style={fill, draw=none, gray, text=white}, sawine@58: ,accepting/.style={fill, gray!50!black, text=white} sawine@58: %initial/.style ={gray, text=white}]%, thick] sawine@58: ] sawine@58: \node[state,initial, initial text=, accepting] (q_0) {$q_0$}; sawine@58: \node[state, accepting] (q_1) [above right of= q_0] {$q_1$}; sawine@58: \node[state](q_2) [below right of= q_1] {$q_2$}; sawine@58: \path[->] sawine@58: (q_0) edge node {$a$} (q_1) sawine@58: edge [loop above] node {$b$} () sawine@58: (q_1) edge node {$b$} (q_2) sawine@58: edge [loop above] node {$a$} () sawine@58: (q_2) %edge node {$a$} (q_1) sawine@58: edge node {$b$} (q_0); sawine@58: \draw[->] (q_2) .. controls +(up:1cm) and +(right:1cm) .. node[above] {$a$} (q_1); sawine@58: \end{tikzpicture} sawine@58: } sawine@58: } sawine@58: \only<2>{ sawine@58: \subfigure sawine@58: { sawine@58: \begin{tikzpicture}[shorten >=1pt, node distance=2cm, auto, semithick, >=stealth sawine@58: %every state/.style={fill, draw=none, gray, text=white}, sawine@58: ,accepting/.style={fill, gray!50!black, text=white} sawine@58: %initial/.style ={gray, text=white}]%, thick] sawine@58: ] sawine@58: \node[state,initial, initial text=, accepting] (q_0) {$q_0$}; sawine@58: \node[state, accepting] (q_1) [above right of= q_0] {$q_1$}; sawine@58: \node[state](q_2) [below right of= q_1] {$q_2$}; sawine@58: \path[->] sawine@58: (q_0) sawine@58: edge [loop above] node {$b$} () sawine@58: (q_1) sawine@58: edge [loop above] node {$a$} (); sawine@58: \color{red} sawine@58: \path[->] sawine@58: (q_0) edge node {$a$} (q_1) sawine@58: (q_1) edge node {$b$} (q_2) sawine@58: (q_2) edge node {$b$} (q_0); sawine@58: \draw[->] (q_2) .. controls +(up:1cm) and +(right:1cm) .. node[above] {$a$} (q_1); sawine@58: \end{tikzpicture} \color{red} sawine@58: } sawine@58: \color{black} sawine@58: } sawine@58: \only<3->{ \setcounter{subfigure}{0} sawine@62: \subfigure[Complement automaton \cross] sawine@58: { sawine@58: \begin{tikzpicture}[shorten >=1pt, node distance=2cm, auto, semithick, >=stealth sawine@58: %every state/.style={fill, draw=none, gray, text=white}, sawine@58: ,accepting/.style={fill, gray!50!black, text=white} sawine@58: %initial/.style ={gray, text=white}]%, thick] sawine@58: ] sawine@58: \node[state,initial, initial text=, accepting] (q_0) {$q_0$}; sawine@58: \node[state, accepting] (q_1) [above right of= q_0] {$q_1$}; sawine@58: \node[state](q_2) [below right of= q_1] {$q_2$}; sawine@58: \path[->] sawine@58: (q_0) sawine@58: edge [loop above] node {$b$} () sawine@58: (q_1) sawine@58: edge [loop above] node {$a$} (); sawine@58: \path[->] sawine@58: (q_0) edge node {$a$} (q_1) sawine@58: (q_1) edge node {$b$} (q_2) sawine@58: (q_2) edge node {$b$} (q_0); sawine@58: \draw[->] (q_2) .. controls +(up:1cm) and +(right:1cm) .. node[above] {$a$} (q_1); sawine@58: \end{tikzpicture} \color{red} sawine@58: } sawine@58: \color{black} sawine@58: } sawine@60: %\hspace{10pt} sawine@58: \visible<3->{ sawine@62: \subfigure[Complement automaton \checkmark] sawine@58: { sawine@58: \label{fig:complement automaton} sawine@58: \begin{tikzpicture}[shorten >=1pt, node distance=2cm, auto, semithick, >=stealth sawine@58: ,accepting/.style={fill, gray!50!black, text=white}] sawine@58: \node[state, initial, initial text=] (q_0) {$q_0$}; sawine@58: \node[state, accepting] (q_1) [above right of= q_0] {$q_1$}; sawine@58: \node[state, accepting](q_2) [below right of= q_1] {$q_2$}; sawine@58: \path[->] sawine@58: (q_0) edge node {$a$} (q_1) sawine@58: edge node {$b$} (q_2) sawine@58: edge [loop above] node {$a, b$} () sawine@58: (q_1) edge [loop above] node {$a$} () sawine@58: (q_2) sawine@58: edge [loop above] node {$b$} (); sawine@58: \end{tikzpicture}\color{green} sawine@59: }\\ sawine@58: \color{black} sawine@59: \vspace{20pt} sawine@66: Accepts all inputs with finite many $ab$. sawine@58: } sawine@58: %\caption{Automata from Example \ref{ex:automaton}} sawine@58: \end{figure} sawine@58: \end{frame} sawine@61: \color{black} sawine@58: sawine@58: \begin{frame} sawine@58: \frametitle{Automata} sawine@56: \framesubtitle{Definition} sawine@55: \begin{def:buechi automata} sawine@56: A non-deterministic B\"uchi automaton is a tuple $\A = (\Sigma, S, S_0, \Delta, F)$ with: sawine@55: \begin{itemize} sawine@57: \item $\Sigma$ is a finite \emph{alphabet}. sawine@57: \item $S$ is a finite set of \emph{states}. sawine@57: \item $S_0 \subseteq S$ is the set of \emph{initial states}. sawine@57: \item $\Delta: S \times \Sigma \times S$ is a \emph{transition relation}. sawine@57: \item $F \subseteq S$ is the set of \emph{accepting states}. sawine@55: \end{itemize} sawine@55: \end{def:buechi automata} sawine@55: \end{frame} sawine@55: sawine@55: \begin{frame} sawine@56: \frametitle{Automata} sawine@56: \framesubtitle{Runs} sawine@56: \begin{def:automata runs} sawine@56: Let $\A = (\Sigma, S, S_0, \Delta, F)$ be an automaton: sawine@56: \begin{itemize} sawine@56: \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: \begin{itemize} sawine@57: \item $s_0 \in S_0$. sawine@57: \item $(s_i, a_i, s_{i+1}) \in \Delta$, for all $i \geq 0$. sawine@56: \end{itemize} sawine@57: \item Alternative view of a run $\rho$ as a function $\rho : \N \to S$, with $\rho(i) = s_i$. sawine@56: \end{itemize} sawine@56: \end{def:automata runs} sawine@66: \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: \[w_2 = bb\overline{\textcolor{green}{ab}} \implies \rho_2 = q_0q_0\overline{q_1\textcolor{green}{q_2}}\]} sawine@56: \end{frame} sawine@56: sawine@56: \begin{frame} sawine@56: \frametitle{Automata} sawine@56: \framesubtitle{Acceptance} sawine@56: \begin{def:inf} sawine@56: Let $\A = (\Sigma, S, S_0, \Delta, F)$ be an automaton and let $\rho$ be a run of $\A$: sawine@56: \begin{itemize} sawine@59: \item $\exists^\omega$ denotes the existential quantifier for \emph{infinitely} many occurrences. sawine@57: \item $inf(\rho) = \{s \in S \mid \exists^\omega{n \in \N}: \rho(n) = s\}$. sawine@56: \end{itemize} sawine@56: \end{def:inf} sawine@56: sawine@56: \begin{def:automata acceptance} sawine@56: Let $\A = (\Sigma, S, S_0, \Delta, F)$ be an automaton and let $\rho$ be a run of $\A$: sawine@56: \begin{itemize} sawine@56: \item $\rho$ is \emph{accepting} iff $inf(\rho) \cap F \neq \emptyset$. sawine@59: \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: \end{itemize} sawine@56: \end{def:automata acceptance} sawine@56: \end{frame} sawine@56: sawine@56: \begin{frame} sawine@56: \frametitle{Automata} sawine@56: \framesubtitle{Language} sawine@56: \begin{def:automata language} sawine@56: Let $\A = (\Sigma, S, S_0, \Delta, F)$ be an automaton: sawine@56: \begin{itemize} sawine@57: \item $L_\omega(\A) = \{w \in \Sigma^\omega \mid \A \text{ accepts } w\}$, we say $\A$ recognises language $L_\omega(\A)$. sawine@57: \item Language $L$ is \emph{B\"uchi-recognisable} iff there is an automaton $\A$ with $L = L_\omega(\A)$. sawine@56: \end{itemize} sawine@56: \end{def:automata language} sawine@56: \end{frame} sawine@56: sawine@56: \begin{frame} sawine@57: \frametitle{Generalised Automata} sawine@57: \begin{def:general automata} sawine@65: A \emph{generalised B\"uchi automaton} is a tuple $\A_G = (\Sigma, S, S_0, \Delta, \{F_i\}_{i{Literature} sawine@55: \begin{thebibliography}{10} sawine@55: sawine@55: \beamertemplatearticlebibitems sawine@55: \bibitem{ref:ltl&büchi} sawine@55: Madhavan Mukund. sawine@55: \newblock {\em Linear-Time Temporal Logic and B\"uchi Automata}. sawine@55: \newblock Winter School on Logic and Computer Science, Indian Statistical Institute, Calcutta, 1997. sawine@55: sawine@55: \beamertemplatearticlebibitems sawine@55: \bibitem{ref:alternating verification} sawine@55: Moshe Y. Vardi. sawine@55: \newblock {\em Alternating Automata and Program Verification}. sawine@55: \newblock Computer Science Today, Volume 1000 of Lecture Notes in Computer Science, Springer-Verlag, Berlin, 1995. sawine@55: sawine@55: \beamertemplatebookbibitems sawine@55: \bibitem{ref:handbook} sawine@55: Patrick Blackburn and Frank Wolter and Johan van Benthem. sawine@55: \newblock {\em Handbook of Modal Logic}. sawine@55: \newblock 3rd Edition, Elsevier, Amsterdam, Chapter 11 P. 655-720 and Chapter 17 P. 975-989, 2007. sawine@55: sawine@55: \end{thebibliography} sawine@55: \end{frame} sawine@55: sawine@55: \end{document}