Prolog Programming In Depth by Donald Nute, Michael A. Covington & Andre Vellino