2. Goal
• Write a program that can take any
Mathematical statement like “does 2 + 2 = 4?”
or “is every even number the sum or two
primes?” and (correctly) prove the statement
is true or false
3. What can computers do?
• Anything that can be expressed by an algorithm-a
set of instructions so detailed there’s no
ambiguity
• Example: “check all possible configurations of
chess boards and see if this one is valid.”
• for each item in the list (Length(L)≥1), do if the
item > largest, then largest ← the item return
largest
4. Turing Machines
• Formalization of the concept of an algorithm
• Strong evidence that TMs can represent all
algorithms. No proof is possible since
“algorithm” is an informal concept
5. Turing Machines 2
• Input -> Calculation -> Output
• Not all programs finish in finite time. Consider
the following:
while x > 0
x = x + 1
• If the input x is less than 0, this program will
never finish, or halt.
6. What can’t computers do?
• Computability: the study of what’s
theoretically possible using algorithms (Turing
Machines), disregarding resource/time
constraints. “All finite numbers are
approximately equal.”
7. The Halting Problem
• Can you write a program P that can examine
another program Q and figure out whether Q
halts?
9. Implications
• Statements about Turing Machines halting are
formal mathematical constructs. So no single
program can prove or disprove all
Mathematical statements
• Is there a subset of statements we can
evaluate?
10. Formal Languages
• A language contains rules for what kind of
statements we can construct
• For example, if we limit ourselves to
statements about chess, a program can
answer any question about whether a certain
chess position is possible (though it might take
a very long time!)
12. Baby Incompleteness Theorem
• Let h(e,k,j) be the halting characteristic
function equal to 1 if the Turing Machine e
with input k halts after j steps and 0 otherwise
• If a language L is expressive enough to express
the halting characteristic function then no
program can prove or disprove every
statement of L
13. Primitive Recursive Functions
• Intended to represent functions that are
guaranteed to finish within j steps, where j is
one of the inputs to the function
• Functions that can be written with a for loop
• The halting characteristic function is primitive
recursive
15. First Incompleteness Theorem
• Any language L strong enough to express
0, the successor function S, <, *
(multiplication), and + can express all
primitive recursive functions, and thus no
program can prove or disprove all statements
written in L.
• In particular the language of the Natural
Numbers, Peano arithmetic, can’t have all its
statements proved or disproved by any
program