The Craft of Prolog (Logic Programming)