David Wyde

The Halting Problem

2020-10-01

Are there problems that no computer can solve?

The Halting Problem: Proofs and Demos, 7 pages.

A program halts(f) determines if a function f terminates or runs forever. halts must handle three cases: 1) f halts, 2) f doesn’t halt, and 3) f halts if and only if a call to halts(f) returns false. Given these three types of input, halts returns a Boolean: true if f halts and false if f runs forever.

Computer science theory says that case 3) programs are contradictions that show halts cannot exist. I argue that all three cases are valid, but it is unclear how to categorize three types of programs into a true or false output without grouping two cases together.

After writing this paper, I saw that Eric Hehner came to similar conclusions. My main contributions are to simplify the problem to 3 inputs being mapped to 2 outputs, analyze Alan Turing’s 1954 paper in addition to his 1936 one, and provide Python sample code.