ISO/Edinburgh-style Prolog interpreter