Prolog: From Specification To Prototype