Note: This is an archvied version of our old webpage. Some links might be broken. The current one can be found here.
I7 Logo
Chair for Foundations of Software Reliability and Theoretical Computer Science
Informatik Logo TUM Logo
Automata and Formal Languages 2017/18

  News | Dates | Grading | Content | Exercises | Exam | Material

Exercises are voluntary and do not account for the final grades. Submitted exercises will be corrected and handed back. It is highly recommended to work on the exercises, as this is the best preparation for the exam.

Week Topic Exercise sheet Solutions Additional files Comments
1 DFAs, NFAs, regular expressions
2 Conversions Python NFA-ε to NFA converter:
3 Minimization, residuals
4 DFA operations
5 NFA operations
6 Pattern matching (extra topics: residuals, synchronizing automata) Python implementation of the algorithms computing synchronizing words:
7 Transducers
8 Fixed-length languages Python implementation of the master automaton: 19.02.18: There was a typo in the tree of #8.1(b). The node below the root should be labeled make(add-lang({bb}), add-lang({ba, bb})) and not make(add-lang({bb}), add-lang({bb})). It is now fixed. The rest of the tree was correct, so the rest of the answer is correct.
9 Verification of safety properties Promela files:

#9.1(c) naive_mutex.pml:
#9.1(h) mutex_chan.pml:
#9.1(h) alternative_solution.pml:
#9.2(c) mutex.pml:
#9.3(c) hyman.pml:
#9.4(c) mutex_three.pml:
This week, we will use Spin to simulate and verify some algorithms. I will walk you through Spin in class, assuming no prior knowledge. Since the exercises were uploaded a bit late, I will also assume you have not done the exercises at home. If you want to, you can already try Spin by following these instructions: . To understand the basics of Promela, you can also have a look at this Wikipedia page: .

The papers of Hyman and Knuth discussed in class are available at and . Unfortunately they are not freely available, but you can obtain them online through the library: .

21.01.18: The solutions of #9.2(b) and (e) were incorrect. They have been updated.
10 Presburger arithmetic, first-order and second-order logic on words (FO/MSO) Python implementation of the algorithms of #10.1:

MONA files:

#10.3(b) partial_solution.mona:
#10.3(b) solution.mona:
We will use MONA in class for Ex. #10.3(b). MONA is available here: . You can either install it or use it online here: . In the online version, you may derive an automaton from a formula by selecting Output whole automaton in Graphviz format. MONA uses a slightly different bit-vector encoding than the one we have seen in class:
  • the first position of bit-vectors is -1, which you can ignore for our purposes since first/second-order variables can never hold -1;
  • first/second-order variables can hold 0;
  • the value of a first-order variables is represented by the position of the first "1" in a bit-vector (it needs not to be unique); e.g. "y: X001010" is a valid encoding of y = 2.
For more information on MONA, have a look at Sections 1 and 2 of its user manual: .
11 ω-automata (Büchi, Rabin, Muller and parity automata)
12 Büchi automata: conversions and operations
13 Emptiness check, linear temporal logic (LTL)
14 Linear temporal logic (LTL), verification of liveness properties Spot's online translator can be found here: . Check "state-based degeneralized Büchi automaton" to obtain Büchi automata. The full version of Spot is available here .
15 Recap We will go through last year's exam in class on Feb. 8.




Past exercise sheets

Exercice Sheets 2016/2017:

Exercice Sheets 2015/2016:

Exercise Sheets 2012/2013:

Exercise Sheets 2011/2012:

Exercise Sheets 2010/2011:

Exercises with two stars form a necessary part of your preparation for the exam. One starred ones are recommended. Exercises with no star are useful for deeper understanding.

Exercise Sheets 2009/2010:

Exercise Sheets 2008/2009: