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 2020/21

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

The tutorial format: We will release the exercise sheets a few days before the tutorial session. The idea is for you to have a look at the exercises and think of how to solve them. During the tutorial we will give you a few minutes to write your solutions for each exercise, during which there is time for individual questions. Then we will discuss the solution together. After the tutorial, we will post the solutions online for students who could not attend. The tutorials will not be live-streamed. There will be a Moodle forum for each exercise sheet in which you can ask questions and discuss solutions - both students and tutors can answer!

New: Instead of the in-person tutorials, starting from 10.11.2020 we will conduct the tutorial sessions on BBB at this link (no sign up or app needed) at the same time as before, 10:00 - 11:30 on Tuesdays. To make it interactive, we will use a shared whiteboard. We encourage you to use this as well as your microphone so that we can recreate the tutorial setting as much as possible.

Exercises are voluntary and do not account for the final grades. It is highly recommended to work on the exercises, as this is the best preparation for the exam. The exercises will mainly be taken from the lecture notes and additional exercises may be added.

Exercice Sheets 2020/2021:

Week Topic Exercise sheet Forum Comments
1 DFAs, NFAs, regular expressions Forum 1 With solutions.
2 Minimization, residuals Forum 2 With solutions.
3 DFA and NFA operations Forum 3 With solutions.
4 Pattern matching and Transducers Forum 4 With solutions.
5 Fixed-length languages Forum 5 Without solutions.



Past exercise sheets

Exercice Sheets 2019/2020:

Week Topic Exercise sheet Additional files Comments
1 DFAs, NFAs, regular expressions With solutions.
2 Conversions, regular expressions Python NFA-ε to NFA converter: With solutions.
3 Minimization, residuals With solutions.
4 Reduction of NFAs and DFA operations With solutions.
5 NFA operations With solutions.
6 Pattern matching (plus residuals) With solutions.
7 Transducers With solutions.
8 Fixed-length languages With solutions.
9 Verification of safety properties Promela files:
#9.1(c) naive_mutex.pml:
#9.2(c) mutex.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. 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: .
10 Presburger arithmetic, FO, MSO With solutions.
11 MSO, Buchi-automata With solutions.
12 ω-automata and conversions of acceptance conditions With solutions.
13 Boolean operations on omega-automata. With solutions.
14 Emptiness check on omega-automata. With solutions. In the exercise session we saw a brief introduction to JFLAP.
15 Emptiness check and Linear Temporal Logic With solutions.
16 Linear Temporal Logic With solutions.

Exercice Sheets 2018/2019:

Week Topic Exercise sheet Additional files Comments
1 DFAs, NFAs, regular expressions
2 Conversions Python NFA-ε to NFA converter:
3 Minimization, residuals
4 Reduction of NFAs, DFA and NFA operations
5 NFA operations
6 Pattern matching (extra topics: residuals, synchronizing automata)
7 Transducers
8 Fixed-length languages
9 Verification of safety properties Promela files:

#9.1(c) naive_mutex.pml:
#9.2(c) mutex.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. 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: .

10 FO, MSO
11 ω-automata (Büchi, Rabin, Muller and parity automata)
12 Boolean operations on ω-automata and conversions of acceptance conditions. The programming exercise is based on Owl and the template for the programming exercise can be found in the buchi-complementation branch. Please submit your solutions by mail.
13 Emptiness check, linear temporal logic (LTL) You can use Spot for some of the exercises as tool support.
14 Linear temporal logic (LTL), verification of liveness properties You can use Spot for some of the exercises as tool support. Check "state-based degeneralized Büchi automaton" to obtain Büchi automata. The full version of Spot is available here .

Exercice Sheets 2017/2018:

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.

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: