
sawine@2: \documentclass[10pt, a4paper, onecolumn]{article}
sawine@2: %\usepackage[top=0cm, bottom=0cm, left=0cm, right=0cm]{geometry}
sawine@2: %\usepackage[ngerman]{babel}
sawine@2: \usepackage{graphicx}
sawine@2: %\usepackage[latin1]{inputenc}
sawine@2: \usepackage{amsmath, amsthm, amssymb}
sawine@2: \usepackage{typearea}
sawine@2: \usepackage{algorithm}
sawine@2: \usepackage{algorithmic}
sawine@2: %\pagestyle{empty}
sawine@2: 
sawine@2: \renewcommand{\familydefault}{\sfdefault}
sawine@2: \title{\textbf{Verification of Reactive Systems}}
sawine@2: \author{Eugen Sawin\\   
sawine@2:   University of Freiburg, Germany\\\\
sawine@2:   \texttt{sawine@informatik.uni-freiburg.de}}
sawine@1: \date{May, 2011}
sawine@0: \begin{document}
sawine@0: \maketitle
sawine@2: 
sawine@2: %\itshape
sawine@2: %\renewcommand\abstractname{Abstract} 
sawine@0: \begin{abstract}
sawine@0: Over the past two decades, temporal logic has become a very basic tool for spec-
sawine@0: ifying properties of reactive systems. For finite-state systems, it is possible to use
sawine@0: techniques based on B\"uchi automata to verify if a system meets its specifications.
sawine@0: This is done by synthesizing an automaton which generates all possible models of
sawine@0: the given specification and then verifying if the given system refines this most gen-
sawine@0: eral automaton. In these notes, we present a self-contained introduction to the basic
sawine@0: techniques used for this automated verification. We also describe some recent space-
sawine@0: efficient techniques which work on-the-fly.
sawine@0: \end{abstract}
sawine@2: %\normalfont
sawine@2: 
sawine@2: \section{Introduction}
sawine@2: Program verification is a fundamental area of study in computer science. The broad goal
sawine@2: is to verify whether a program is “correct”—i.e., whether the implementation of a program
sawine@2: meets its specification. This is, in general, too ambitious a goal and several assumptions
sawine@2: have to be made in order to render the problem tractable. In these lectures, we will focus
sawine@2: on the verification of finite-state reactive programs. For specifying properties of programs,
sawine@2: we use linear time temporal logic.
sawine@2: 
sawine@2: What is a reactive program? The general pattern along which a conventional program
sawine@2: executes is the following: it accepts an input, performs some computation, and yields an
sawine@2: output. Thus, such a program can be viewed as an abstract function from an input domain
sawine@2: to an output domain whose behaviour consists of a transformation from initial states to
sawine@2: final states.
sawine@2: 
sawine@2: In contrast, a reactive program is not expected to terminate. As the name suggests, such
sawine@2: systems “react” to their environment on a continuous basis, responding appropriately to
sawine@2: each input. Examples of such systems include operating systems, schedulers, discrete-event
sawine@2: controllers etc. (Often, reactive systems are complex distributed programs, so concurrency
sawine@2: also has to be taken into account. We will not stress on this aspect in these lectures—we
sawine@2: take the view that a run of a distributed system can be represented as a sequence, by
sawine@2: arbitrarily interleaving concurrent actions.)
sawine@2: 
sawine@2: To specify the behaviour of a reactive system, we need a mechanism for talking about
sawine@2: the way the system evolves along potentially infinite computations. Temporal logic 
sawine@2: has become a well-established formalism for this purpose. Many varieties of temporal logic
sawine@2: have been defined in the past twenty years—we focus on propositional linear time temporal
sawine@2: logic (LTL).
sawine@2: 
sawine@2: There is an intimate connection between models of LTL formulas and languages of
sawine@2: infinite words—the models of an LTL formula constitute an ω-regular language over an
sawine@2: appropriate alphabet. As a result, the satisfiability problem for LTL reduces to checking
sawine@2: for emptiness of ω-regular languages. This connection was first explicitly pointed out in.
sawine@2: 
sawine@0: \section{$\omega$-regular Languages}
sawine@0: \section{Linear Temporal Logic}
sawine@0: \section{B\"uchi Automata}
sawine@2: Automata are good.
sawine@0: \section{Model Checking}
sawine@0: \begin{thebibliography}{99}
sawine@3: \bibitem{ref:ltl&büchi} Madhavan Mukund. {\em Linear-Time Temporal Logic and B\"uchi Automata}.
sawine@2: Winter School on Logic and Computer Science, Indian Statistical Institute, Calcutta, 1997.
sawine@0: 
sawine@2: \bibitem{ref:handbook} 
sawine@3: Patrick Blackburn, Frank Wolter and Johan Van Benthem. 
sawine@2: {\em Handbook of Modal Logic (Studies in Logic and Practical Reasoning)}.
sawine@3: 3rd Edition, Elsevier, Amsterdam, 2007.
sawine@0: \end{thebibliography}
sawine@0: \end{document}




