Objects are represented as theories and executing a method of an object amounts to querying the object's theory.
Classes contribute rules to the theory of each instance.
The local state of an object comprises a collection of unit clauses and the state of an object is encapsulated. Inheritance combines theories to form the theory for a class. We describe the features of a prototype exploring this approach and we develop part of a simplified metaobject protocol for the language. We consider combining object oriented and logic programming through the use of meta-programming techniques. Technical Report CSRI - Bonner, Kifer et al.