SMS dit: Prolog programming in depth