15-150: Principles of Functional Programming

Lecture 23: Computability

We discussed the computability of functions in SML. By the Church-Turing thesis this is the same notion of computability as we have in recursion theory, with Turing machines, etc.

There are two main techniques for showing that certain functions are not computable: diagonalization (which is a direct argument), and problem reduction (which shows that a problem is undecidable by giving a reduction from another undecidable problem).

Key Concepts

Sample Code

No code, since there is no solution to the halting problem!

Some notes on computability

Slides from Lecture