Elements of computability, decidability, and complexity. Fifth Edition