This document presents a proof that P ≠ NP, the complexity classes of problems that can be solved in polynomial time by a deterministic Turing machine and non-deterministic polynomial time, respectively, are separate. It does this by showing that polynomial time algorithms, which can be described by fixed point logic, cannot solve NP-complete problems like k-SAT in their computationally hard phase