Elements of Finite Model Theory
Leonid Libkin
Springer
The book is an introduction to finite model theory that stresses computer science origins of the area. In addition to presenting the main techniques for analyzing logics over finite models, the book deals extensively with applications in databases, complexity theory, and formal languages, as well as other branches of computer science. It covers Ehrenfeucht-Fraïssé games, locality-based techniques, complexity analysis of logics, including the basics of descriptive complexity, second-order logic and its fragments, connections with finite automata, fixed point logics, finite variable  logics, zero-one laws, embedded finite models, and gives a brief tour of recently discovered applications of finite model theory.
    This book can be used both as an introduction to the subject, suitable for a one- or two-semester graduate course, or as reference for researchers who apply techniques from logic in computer science.

Table of contents: 1. Introduction — 2. Preliminaries — 3. Ehrenfeucht-Fraisse Games — 4. Locality and Winning Games — 5. Ordered Structures — 6. Complexity of First-Order Logic — 7. Monadic Second-Order Logic and Automata — 8. Logics with Counting — 9. Turing Machines and Finite Models — 10. Fixed Point Logics and Complexity Classes — 11. Finite variable logics — 12. Zero-one laws — 13. Embedded Finite Models — 14. Other applications of finite model theory