Prolog interpreter