This preview shows page 1. Sign up to view the full content.
Unformatted text preview: single query and destroyed subsequently. Another source of ine ciency in our system is the modular strati cation in Coral owing to our use of negation in implementing the inheritability function r as a set of axioms in the inheritance engine. These axioms account for inheritance in Coral, and we found that the use of negation in the implementation of r function is unavoidable. 93 Chapter 6 Comparison with Contemporary Research
In this chapter we compare ORLog with contemporary approaches to object-oriented logics in the literature. We show that overall ORLog has superior modeling capabilities compared to all representative logics, and it assigns meanings to every ORLog program which is not true for most other logics. We also show that, the concepts of locality, withdrawal and inheritability are useful in their own rights and they play a signi cant role in shaping the underlying semantics of inheritance in ORLog. Furthermore, we demonstrate that the use of point of de nition (locality of clauses) based overriding gives us the edge over deduction based overriding in other logics, specially when implementation of logics are concerned. Besides, most procedural languages, e.g. C++, adopt de nition based overriding approach such as ours. Finally, we discuss issues related to the ORLog interface to Coral. 6.1 Current Approaches to Behavioral Inheritance
There are several important di erences between our language and others'. Behavioral inheritance has been studied in the context of Ordered Theories 50], Contextual Logic Programming 61, 62], arti cial intelligence, non-monotonic reasoning, and a few others such as 20, 22], to name a few. Research in arti cial intelligence and nonmonotonic reasoning is mainly concerned with inheritance of properties and con icts, and do not consider behaviors and structures of objects. Some of the proposals also 94 sacri ce completeness, or are highly non-deterministic. The proposals in 20, 50, 61, 62] are essentially modular languages that de ne collection of predicates in named modules. Inheritance is then captured by algebraic operations, called program composition, on the modules, to obtain new modules that inherit the predicates from a super module. In SelfLog 20], inheritance with overriding is captured by statically de ning an ordering among the modules and using program composition to de ne inheritance. A similar approach is taken in 50, 61]. Although behavioral inheritance is captured in the semantics, program composition in itself is very costly in the context of object-oriented databases, where number of method de nitions in the modules could be large and number of objects in practical databases may be much more than the static number of modules considered in these proposals. Besides, they achieve their functionality by giving up multiple inheritance and by avoiding the di cult issue of con ict resolution. Also the class of programs they allow is much smaller than a language such as F-logic 47], Gulog 29, 30], ORLog, etc. The i-strati cation in Gulog 29, 30] and the stable model for inheritance proposed in 22] are based on a preferred model construction. Clearly a framework such as ours, which captures behavioral inheritance within a sound and complete proof theory, has a greater intellectual appeal. Also, the approaches above have a very high computational complexity. In addition Gulog does not deal with inheritance con icts and disallows programs with con icts. On the other hand 22] does not recognize conicts since it takes a relational approach to methods by treating them as set valued methods. In the following sections we will take a closer look at the traditional approach to behavioral inheritance based on rst-order (predicate) logic in arti cial intelligence and knowledge representation and witness the di erence with ORLog. We also examine a typical translation based logic such as OOLP+ 25] in the light of our logic. Finally, we compare our logic with best known logic in object-oriented paradigm, the F-logic 47]. 95 6.1.1 Research in Arti cial Intelligence and Knowledge Representation
We consider the canonical Tweety problem in this area. The logic program in Figure 15 states that (i) every bird ies, (ii) penguins do not y, (iii) every penguin is a bird, and nally (iv) Tweety is a penguin. The issue is to decide whether the answer to the query fly(tweety) is true or false, i.e., does Tweety y? The answer to this query is not known, since the program does not have any model. In other words, we can prove both, fly(tweety) and :fly(tweety) by appropriately selecting the order of ring the rules in an attempt to prove fly(tweety). r1 r2 r3 r4 : : : : fly(X ) bird(X ): :fly(X ) penguin(X ): bird(X ) penguin(X ): penguin(tweety):
? fly(tweety): Figure 15: The Tweety problem in predicate logic. It is easy to observe that the problems with this approach are that (i) implication ( ) is being used to model \is-a" as well as classical deduction, and (ii) negation (:) is being use...
View Full Document