This book invites the reader to explore abstractions that are crucial to computer science. The authors bring a sense of excitement to logics, formal languages and automata—motivating topics by linking them to computing and to computational applications, sometime with whole chapters. They achieve exceptional clarity through a plethora of examples and figures, yet without-losing sight of, and indeed celebrating, the precision that is the hallmark of this subject matter.
Features of the book include: - application of logic to program verification
- programming in the logic language, Prolog
- discussion of "why" and "how" to prove things
- relationships between English and programming languages
- diagrams-first approach to automata
- lex as a tool and an extension of formal language
- pushdown automata as parsing strategies
- Turing machines as models of computation