This course will focus on two famous theorems due to Kurt Godel: The Incompleteness Theorems. The first theorem states, roughly, that every formal mathematical theory, provided it is sufficiently expressive and free from contradictions, is incomplete in the sense that there are always statements (in fact, true statements) in the language of the theory which the theory cannot prove. We will prove the 1st and 2nd Incompleteness Theorems and survey their technical and philosophical repercussions. In order to prove the Incompleteness Theorem(s), we will need to study the expressive power of formal languages and axiomatic theories and also discuss different approaches to effective computation: recursive functions, register machines, and Turing machines. We will discuss their equivalence, Church's thesis and elementary recursion theory.
Topics to be covered include: formal models of computation; Church's Thesis; Godel's 1st and 2nd incompleteness theorems and their repercussions; Tarski's proof of the undefinability of truth; Undecidability of the Halting Problem; Decidable subsystems of arithmetic; provability logic (Kripke soundness and completeness, arithmetical soundness and completeness, fixed-point theorems), and The Knower Paradox (and epistemic arithmetic).