foundations of computational agents
Datalog and logic programs are described by Kowalski , Sterling and Shapiro , and Garcia-Molina et al. . The history of logic programming is described by Kowalski  and Colmerauer and Roussel .
The work on negation as failure, as well as the unique names assumption, is based on the work of Clark . See the book by Lloyd  for a formal treatment of logic programming in general and negation as failure in particular. Apt and Bol  provide a survey of different techniques for handling negation as failure.
Jurafsky and Martin  and Manning and Schütze  provide excellent introductions to computational linguistics. The use of definite clauses for describing natural language is described by Pereira and Shieber  and Dahl . Lally et al.  discuss how the use of natural language and logic programming was used in the IBM Watson system which beat the human world champion in Jeopardy!