Third edition of Artificial Intelligence: foundations of computational agents, Cambridge University Press, 2023 is now available (including the full text).
12.10 References and Further Reading
Datalog and logic programs are described by Kowalski (1979), Sterling and Shapiro (1986), and Garcia-Molina et al. (2009). The history of logic programming is described by Kowalski (1988) and Colmerauer and Roussel (1996).
The work on negation as failure, as well as the unique names assumption, is based on the work of Clark (1978). See the book by Lloyd (1987) for a formal treatment of logic programming in general and negation as failure in particular. Apt and Bol (1994) provide a survey of different techniques for handling negation as failure.
For introductions to computational linguistics see Jurafsky and Martin (2008) and Manning and Schütze (1999). The use of definite clauses for describing natural language is described by Pereira and Shieber (2002) and Dahl (1994).