
The Law is stated in terms of types and, as the following pathalogical
example shows, its formulation does allow situations which violate the
the principles that it is to enforce. 
\begin{verbatim}
A = <first> B <second> C <third> D <fourth> E
B = <fifth> C <sixth> D
D = <seventh> E

(defmethod (A :bad-style)()
  (send (send (send-self ':first) ':sixth) ':seventh))
\end{verbatim}
All of the types in the body of this method,  B, D, and E, are valid message
receivers according to the Law. Yet the method looks two levels deep
into the structure of 
<first>, violating the ideals of information-hiding and maintainability.

This problem can be removed by formulating the Law in terms of objects,i.e.
A method may send messages only to the following objects:
\begin{enumerate}
\item
Self.
\item
The immediate subparts of Self.
\item
The objects passed as parameters to the method.
\end{itemize}
From a conceptual point of view this seems the most natural way to state
Law.  However, as it is an important goal to formulate 
doing this would involve checking the adherance to the Law at run time rather
than at compile time.  It is a hard problem to identify at compile time  
the unique class instances being manipulated within or returned from, a
method. Consider the following example,
\begin{verbatim}
; A = <x> B.
(defmethod (A :m) ()
  (send (send self ':get-x a1 a2 ... an) ':m))

;METHOD (self : A, a1, a2, ... , an : $integer) : B.
(defmethod (A :get-x) (a1 a2 ... an)
  (if (= (poly a1 a2 ... an) 0) then (send *p* ':y) else x))

; *p* is an instance of P = <y> B ...
\end{verbatim}
where poly is a polynomial in n variables with integer coefficients and
a1 to an are integer constants.  It is known to be an undecidable problem
in mathematics (Hilbert's tenth problem) to decide whether a multivariable
polynomial has a zero  in the integers or not.  This means that there is no
way to decide whether the object y or object x is returned from method m.

So, to retain the compile time checking we require the law's formulation
in terms of types.  We feel that such pathalogical cases as the 
above will not occur often enough to cause problems.



