4.6.17 · D1Theory of Computation

Foundations — Decidability — decidable (recursive) and recognizable (recursively enumerable) languages

1,940 words9 min readBack to topic

Before you can read the parent note, you must be able to read every squiggle it uses without pausing. This page introduces them one at a time, each with a picture and a reason it exists. Nothing later uses a symbol from earlier that you have not already seen defined.


1. Alphabet, string, and the star — the raw materials

Why does the topic need ? Because a machine can only read characters it was built to recognize. Fixing first is like agreeing on the language before writing sentences.

Figure — Decidability — decidable (recursive) and recognizable (recursively enumerable) languages

Why the star? The topic constantly needs to talk about "any input whatsoever." is exactly "the universe of all inputs." Note it is infinite even though is finite — this infinity is where all the drama lives.


2. Sets, membership, and subset — the grammar of "belongs to"

Why does the topic need ? The headline result is : every decidable language is recognizable, but some recognizable languages are not decidable. The little slash on is the entire punchline — it says the two classes are not equal.

Figure — Decidability — decidable (recursive) and recognizable (recursively enumerable) languages

3. Language — a set of strings is a problem

Here is the mental leap the topic depends on. A yes/no problem ("does DFA accept string ?") becomes a language: put every input whose honest answer is "yes" inside the fence, and everything else outside.


4. The complement bar — flipping inside and outside

Why is a star player? The crown-jewel theorem of the topic — " is decidable iff both and are recognizable" — is a statement about a language and its complement together. Without the bar you cannot even write it down.


5. The machine and the encoding brackets

Figure — Decidability — decidable (recursive) and recognizable (recursively enumerable) languages

Why does the topic need ? Because its deepest questions are about machines examining machines — e.g. " : does accept ?". You can only put a machine inside a language (a set of strings) if you first turn the machine into a string. The Universal Turing Machine is exactly the robot that reads these encodings.


6. The three outcomes — accept, reject, loop

Figure — Decidability — decidable (recursive) and recognizable (recursively enumerable) languages

7. Two more operators you will meet


Prerequisite map

Alphabet Sigma

String and length

Sigma star all strings

Language L a set of strings

Membership in and notin

Subset and proper subset

Complement L bar

Turing Machine M

Encoding angle brackets

Three outcomes accept reject loop

Decidable strictly inside Recognizable

Decidability topic 4.6.17

Every arrow says "you need the left box before the right box makes sense." The two boxes that feed straight into the topic — proper subset and the loop outcome — are the ones the parent note leans on hardest.


Equipment checklist

Cover the right side and test yourself. If any answer is fuzzy, re-read that section.

What is and why must it be finite?
A finite bag of allowed symbols; a machine can only read characters it was built for, so we fix the alphabet first.
What does contain, and is it finite?
All strings of every length (including ) built from ; it is infinite even though is finite, because strings can be arbitrarily long.
Write the meaning of in plain words.
The string stands inside the fenced region — it is one of the strings the language collects.
What does add over ?
"Strictly smaller" — everything in the left set is in the right set, and the right set has at least one extra element.
A yes/no problem becomes a language how?
Collect every input whose honest answer is "yes" into the language; all other inputs stay outside.
What is , and can a string be in both and ?
Everything in not in ; every string is in exactly one of them — never both, never neither.
Why do we need the encoding ?
To turn a machine into a string so it can be an input to another machine, letting languages contain machines.
Name the three things a Turing Machine can do on an input.
Accept (halt yes), reject (halt no), or loop (never halt).
Why is "loop" different from "reject"?
Reject is a final "no"; loop gives no answer at all, and you cannot tell it apart from "still working."
What does it take to prove a statement of the form ?
Prove both directions: and .