Prolog interpreter with OO extensions implemented in C++