A topic in the Open Knowledge Graph — a free, open map of 15,290 topics and the order to learn them in.

Recursively Enumerable Languages: Semi-Decidability

College Depth 87 in the knowledge graph ☐ I know this ☆ Set as goal
24topics build on this
480prerequisites beneath it
See this on the map →
Recursive Languages: The Decidable Languages→→Properties of Recursively Enumerable LanguagesRecursively Enumerable and Co-RE Languages+1 more
semi-decidable recursively-enumerable halting verification

Core Idea

A language is recursively enumerable (RE) if there exists a Turing machine that accepts exactly those strings in the language but may not halt on strings outside the language. RE languages represent problems where 'yes' answers are verifiable but 'no' answers may require infinite computation. Every recursive language is RE, but not vice versa.

How It's Best Learned

Use the Halting Problem as motivating example: it's RE (simulate and accept if halts) but not recursive. Contrast with problems that are RE and recursive.

Common Misconceptions

Explainer

You already know what a recursive (decidable) language is: a Turing machine that always halts and always gives the correct yes/no answer. Now weaken that requirement in one direction only: the machine must halt and accept when the answer is yes, but it is allowed to run forever when the answer is no. This is semi-decidability, and languages with this property are called recursively enumerable (RE). The name comes from an equivalent characterization: a language is RE if and only if some Turing machine can enumerate (print out, one by one) all its members — not necessarily in any particular order, but eventually producing each member.

The relationship to recursive languages is a strict containment. Every recursive language is RE — just ignore the "run forever on no" permission. But there are RE languages that are not recursive. The canonical example is the Halting Problem: the set of (M, w) pairs where Turing machine M halts on input w. To verify a "yes" answer, just simulate M on w; if M halts, accept. But to answer "no," you would need to confirm that M runs forever — and no algorithm can do that in general. The Halting Problem is RE but not recursive.

This asymmetry between yes and no has a striking consequence for complements. A language L is recursive if and only if both L and its complement L̄ are RE. This is because if you have a semi-decider for L and a semi-decider for L̄, you can run them in parallel: whichever halts first tells you the answer, guaranteeing termination. If a language is RE but not recursive, its complement cannot be RE at all — otherwise we could combine the two semi-deciders to get a full decider, contradicting undecidability. The complement of the Halting Problem is the prototypical example of a language that is not RE.

RE languages form the top of the Chomsky hierarchy: they are exactly what unrestricted Turing machines can recognize. Understanding them sharpens your mental model of what computation can and cannot do. The recursive languages are the "safe" territory — problems we can fully decide. The RE languages are the "one-sided" territory — problems where we can confirm yes answers but may loop on no. And beyond RE lies the truly unrecognizable: problems where no Turing machine gives even a one-sided answer. The boundary between recursive and RE, marked by the Halting Problem, is the deepest fault line in computability theory.

Practice Questions 5 questions

Prerequisite Chain

Understanding Zero → The Number Zero → Counting to Five → Counting to 10 → Counting to 20 → Counting a Set of Objects Up to 20 → Cardinality: The Last Number Counted → Matching Numerals to Quantities → Subitizing Small Quantities → Addition Within 10 → Number Bonds to 10 → Addition Within 20 → Doubles and Near Doubles → Doubles Facts Within 10 → Near Doubles Facts Within 20 → Mental Math Strategies for Addition → Mental Math: Adding and Subtracting Tens → Addition Within 100 → Repeated Addition as Multiplication → Multiplication as Equal Groups → Multiplication: Arrays → Basic Multiplication Facts (0s, 1s, 2s, 5s, 10s) → Multiplication Facts Within 100 → Division as Equal Sharing → Division as Grouping (Measurement Division) → Division: Grouping (Repeated Subtraction) Model → Division: Fair Sharing Model → Division as Equal Sharing → Division as Grouping → Basic Division Facts → Division Facts Within 100 → Multiplication and Division Fact Families → Relationship Between Multiplication and Division → Division Facts as Inverse of Multiplication → Remainders and Quotients in Division → Division Word Problems → Multi-Step Word Problems → Solving Multi-Step Word Problems → Multiplication Word Problems → Division Word Problems → Introduction to Long Division → Factors and Multiples → Prime and Composite Numbers → Equivalent Fractions → Relating Fractions and Decimals → Decimal Place Value → Integers and the Number Line → Comparing and Ordering Integers → Absolute Value → Adding Integers → Subtracting Integers → Multiplying Integers → Introduction to Exponents → Order of Operations → Integer Order of Operations → Variable Expressions → The Distributive Property → Variables and Expressions Review → Introduction to Polynomials → Adding and Subtracting Polynomials → Multiplying Polynomials → Factorial → Permutations → Combinations → Counting Principles: Addition and Multiplication Rules → Introduction to Graph Theory → Propositional Logic Foundations → Logical Equivalences → Boolean Algebra → Introduction to Propositional Logic → Introduction to Predicate Logic (First-Order Logic) → First-Order Logic Syntax → ZFC Axioms Overview → Axiom Schema of Separation → Axiom Schema of Replacement → Von Neumann Ordinals → Hereditarily Finite Sets → Recursive Definitions on Finite Sets → Natural Numbers in Set Theory: Iterative Construction → Formal Arithmetic and Expressibility → Primitive Recursive Functions → Ackermann Function → General Recursive Functions and the μ-Operator → Mu-Recursive Functions → The Church-Turing Thesis → Formal Models of Computation: Turing Machines and Lambda Calculus → Recursive Languages: The Decidable Languages → Recursively Enumerable Languages: Semi-Decidability

Longest path: 88 steps · 480 total prerequisite topics

Prerequisites (1)

Leads To (3)