 
Summary: 3 Turing Machines
We once again wish to generalize the languages we can analyse. Rather than starting on
the syntactic side we look at more powerful automata, namely Turing machines. These
have read/write memory which allows them to access items in an arbitrary order. With
these machines there is a distinction to be made between languages which are recognized
(accepted) and those which are decided. We finally give an overview of how the di#erent
kinds of languages covered so far fit together. This is the point where we lose connection with
the other part of this course.
3.1 Automata with randomaccess memoryTuring machines
Clearly the question of recognizing the language {a i b i c i
 i # N} (see page 40) is not in itself
a di#cult one. In most programming languages it would be easy to write a procedure which
does this, and therefore pushdown automata are not as powerful as other computing devices.
Before we go on to look at more expressive automata let us review the progression of such
devices so far.
We can think of a DFA as a computing device without dedicated memory. However, such
automata can remember a limited amount of information by making use of their states. We
can think of a pushdown automaton as a computing device that has a dedicated unlimited
memory 15 which can only be used in a very limited way, namely in the manner of a stack.
The resulting machines are too weak even to be used to deal with programs on a level that a
