Abstract

In this paper we define the L2∥O2 language incorporating the typical mechanisms of the object oriented programming into concurrent logic languages. This language is defined in the framework of the Parlog language, which contributes with its declarative style and its concurrence, considering objects as perpetual processes and message passing as the data stream among shared variables. The possibility of defining classes recursively, to extend the inheritance relation with the use relation, to link objects dynamically, to inherit private predicates plus some implementation issues, as well as the definition of the declarative semantics, distinguishes our proposal from others. Although we have implemented the whole language, in order to simplifiy the declarative semantics, we consider a subset of this, including the more relevant aspects of the object oriented method: class definition, creation of instances, inheritance, use relation, messages among objects. The operational semantics of this subset is given in terms of a transition relation which is defined by using the transition relation corresponding to the concurrent logic language considered. Only the success set is modelled. On other hand, the declarative semantics is defined as the least fixpoint of an immediate consequences operator. This is achieved by making use of an extended notion of Herbrand base and interpretations, enriched with variables and with annotations. The basic mathematical structure is the set of finite streams of substitutions. In order to relate both semantics, we show a result that permits us to establish the success set (given by the operational semantics) of a goal in terms of the least fixpoint of the operator defined.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call