\comment{

[16] On some algorithms for multiple inheritance in object oriented programming [_DH88]

} \sly{algorithms}{

Algorithms for multiple inheritance

\xline{{\bf [16]}} {\bf Inheritance graph:} directed, acyclyc
   G = (Objects, ->, root)
  
   x ->^* y       --  y is a descendant of x
  
{\bf Hierarchy;} for object a \e Objects
   Hierarchy(a) = ( Objects_{a}, -> / Objects_{a} )
  
   where Objects_{a} = { x \e Objects | a ->^* x }
  			     \{\em -- all descendants\}
  
[] Operational semantics: multiplicity ! \n } \sli{

Search:

total order |P_{a} on Objects_{a}\nl An object inherits a property P w.r.t. a search |P_{a} if:
   1. P(a) is the first value of |P_{a} in Objects_{a}
   2. If there is no such vertex then \{\em not\} P(a).
  
{\bf Inheritance mechanism:} Property: stable\n Principles:
  \it 1. inheritance mechanism must follow p.o.
   2. uniform mechanism (for all properties)
   3. closeness has priority (w.r.t. multiplicity)
   4. no cycles
  
[] {\em depth-first search, linear extensions ... } \n }