Lectures

This page summarizes the content of past lectures and provides lecture notes and exercises.

(Jump to most recent class)

Dates Topics and Readings HomeWork
Aug 26

Course introduction and administration. Introduction to Formal Methods.

Required Readings:
  • Syllabus
  • Course overview [pdf]
  • [Haxt10] An introduction to formal methods, with examples of industrial usage.
Recommended Readings:
  • [Barr13] A sobering reading on the probable causes of the fatal sudden acceleration problem in some Toyota cars. See also this EE times article
  • [vLam00] An introduction to formal specifications, and a survey of formal specification approaches.
 
Aug 28

Introduction to Formal Methods continued.

Required Readings:
  • Course introduction [pdf]
  • [Medv00] Excellent complementary class notes introducing FM's.
  • [Haxt10] An introduction to formal methods, with examples of industrial usage.
Recommended Readings:
  • [Beck06] A look at the state of the art in formal methods and a discussion of the developments that make successful applications possible.
  • [Wood09] A fairly recent survey on the use and practice of FM.
 
 
Sep 2

Formal methods: main goals and challenges.
Recap of basic notions in set theory.

Required Readings:
  • Course introduction [pdf]
  • Lecture notes on sets and relations (as needed) [pdf]
Exercises in lecture notes
Sep 4

More on relations and relational operators. Modeling general software systems. Introduction to the Alloy modeling language.

Required Readings:
  • Lecture notes on sets and relations (as needed) [pdf]
  • Lecture notes: An introduction to Alloy 4 - Part 1 [pdf]
Recommended Readings:
Exercises in sets lecture notes
 
Sep 09
Sep 11

Alloy's foundations. Signatures, fields and multiplicity constraints.
Modeling simple domains in Alloy. Relations and operations on them.
Formulas, Boolean operators and quantifiers. Expressing constraints on relations using Alloy formulas.

Required Readings:
  • Lecture notes: an introduction to Alloy 4 - Part 1 [pdf] and 2 [pdf]
  • Family examples from the notes
  • models/examples/toys/genealogy.als sample model in the Alloy Analyzer
  • Alloy 4 tutorial Part 1, notes by Greg Dennis and Rob Seater [pdf]
Exercises in lecture notes
 
Sep 16
Sep 18

More features of the Alloy language: functions and predicates, facts and assertions.
Practice with modeling in Alloy: the Academia domain.
Examples and exercises.

Required Readings:
All exercises in the lecture notes
 
Sep 23
Sep 25

Alloy's module system. Motivations and uses. Parametric modules. An example: the predefined Ordering module.
Modeling dynamic systems in Alloy. General approach: dymanic systems as state transition systems. Operators. Preconditions, postconditions and frame conditions.

Required Readings: Recommended Readings:
  • util/ordering.als sample model in the Alloy Analyzer
All exercises in Dynamic Models notes
 
Sep 30
Oct 2

More on modeling dynamic systems in Alloy. Example: rovers on a two-dimentional space.
A complete Alloy modeling case study: the hotel room lock system.
Brief discussion of Homework 1 and its solution.

Required Readings:
  • Lecture notes: Dynamic Models in Alloy [pdf]
  • rover.als Rover model in dynamic systems examples
  • Lecture notes: Hotel Lock System [pdf]
  • book/chapter6/hotel*.als sample models (first 2 only) in the Alloy Analyzer
 
 
Oct 7
Oct 9

Introduction to reactive systems. Introduction to the Lustre specification language.
Examples of Lustre programs. Specifying simple reactive systems in Lustre.

Required Readings:
  • Lecture notes: Reactive Systems and the Lustre language, Part 1 [pdf] and 2 [pdf]
Recommended Readings:
 
 
Oct 14
Oct 16

Practice with writing Lustre models and expressing their properties. Checking properties via synchronous observers.
Simulating Lustre programs with the Kind 2 tool (online examples).
Useful temporal operators. A few examples.

Required Readings:
  • Lecture notes: Reactive Systems and the Lustre language, Part 1 [pdf] and 2 [pdf]
  • Lustre examples seens in class
  • Notes on synchronous observers
  • Chap. 1 of [Halb02], a Lustre tutorial
Recommended Readings:
  • [Halb91], the main reference paper for Lustre
  • [Halb99], an introduction to verification and testing with Lustre
 
Oct 21
Oct 23

More practice with writing Lustre models and expressing their properties. Checking properties via synchronous observers. In-class exercises. Boolean Switches and traffic light examples.

Required Readings: Recommended Readings:
  • [Halb91], the main reference paper for Lustre
  • [Halb99], an introduction to verification and testing with Lustre
 
Oct 28

Discussion of Homework 2 and its solution.

Modeling systems and building simulators. The elevator case study.

Required Readings:
Exercise 5:
Problems 1,2 in
Elevator I and
Elevator II
Oct 30

Midterm exam.

 
Nov 4
Nov 6

Discussion of midterm solutions.

Specifying and verifying programs in high-level programming languages. Introduction to Dafny. Main features. Specifying pre and post-conditions. Examples.

Required Readings:
Exercises 0-6 in [Koen12]
 
Nov 11
Nov 13

More on Dafny. Loop invariants. Complex specifications using recursive functions. Arrays and quantified verification conditions. Predicates. Examples.

Required Readings:
  • [Koen12], an introduction to the Dafny language
Recommended Readings:
Exercises 7-10 and 1-13 in [Koen12]
 
Nov 18
Nov 20

Termination of while loops and recursive functions in Dafny. Reading Frames. Classes. Class invariants. Constructors, fields and class methods. Ghost fields. Using ghost fields to represent abstract states. Connecting concrete and abstract state in class. Examples.
Brief introduction to value types in Dafny: finite sets, multisets and sequences.

Required Readings: Recommended Readings:
All exercises in [Koen12]
 
Nov 25
Nov 27

No class (Thanksgiving recess)

 
 
Dec 2
Dec 4

Discussion of Homework 3 solutions.
More on specifying classes and methods in terms of abstract state. Abstract FIFO queue example. More on frames and on developing code and specifications in Dafny. Common issues and pitfalls.

Required Readings:
 
 
Dec 9
Dec 11

Dynamic Frames in Dafny. Motivation and uses. Counter example revised.
An overview to Frama-C and ACSL.

Required Readings: Recommended Readings:
 
 
 

Copyright: Cesare Tinelli, The University of Iowa, 2014   Credits