Gödel's Incompleteness Theorems are among the most significant results in the foundation of mathematics. These results have a positive consequence: any system of axioms for mathematics that we recognize as correct can be properly extended by adding as a new axiom a formal statement expressing that the original system is consistent. This suggests that our mathematical knowledge is inexhaustible, an essentially philosophical topic to which this book is devoted. Basic material in predicate logic, set theory and recursion theory is presented, leading to a proof of incompleteness theorems. The inexhaustibility of mathematical knowledge is treated based on the concept of transfinite progressions of theories as conceived by Turing and Feferman. All concepts and results necessary to understand the arguments are introduced as needed, making the presentation self-contained and thorough.