This book illustrates how to program AI algorithms in Lisp, Prolog, and Java. The book basically cover each topic 3 times in each language. Topics include: simple production-like system based on logic, logic-based learning, and natural language parsing.
In an inference engine based on first order logic, management of substitutions can get rather complicated, which is often glossed over in AI textbooks. But this book covers this aspect, as do "Paradigms of AI Programming", "Structure and Interpretation of Computer Programs", and Winston's book on Common Lisp.