Uncomputability, Viruses, OOP
Avian Flu Virus
#2
One-Slide Summary
- If a problem is uncomputable or undecideable,
then no deterministic terminating algorithm can exist that correctly solves it.
- The halting problem is undecideable.
- Many problems related to computer security,
such as detecting worms and viruses, are undecideable.
- Undecideability proofs work by contradiction.
- Object-oriented programming has a lively
history.
#3
Outline
- Gödel's Proof
- Unprovability
- Algorithms
- Computability
- The Halting Problem
- OOP History
#4
Informal Proof
(define (paradox) (if (halts? ‘paradox) (loop-forever) #t))
If paradox halts, the if test is true and it evaluates to (loop-forever) - it doesn’t halt! If paradox doesn’t halt, the if test if false, and it evaluates to #t. It halts!
#5
Proof by Contradiction
Goal: Show A cannot exist.
- 1. Show X is nonsensical.
- 2. Show that if you have A you can make X.
- 3. Therefore, A must not exist.
X = paradox A = halts? algorithm
#6
Evaluates-to-3 Problem
Input: A procedure specification P Output: true if evaluating (P ) would result in 3; false otherwise.
> (eval-to-three? '(lambda () (+ 2 1))) #t > (eval-to-three? '(lambda () (* 2 2))) #f
Is “Evaluates to 3” computable?