The Art of Prolog, Second Edition: Advanced Programming Techniques (Logic Programming)