Elements of computability, decidability, and complexity (Third edition)