The Law and Hilbert's tenth problem ----------------------------------- If we can verify the object version of the Law at compile-time, we have an algorithm for Hilbert's tenth problem (given a multivariable polynomial, is there a solution in the integers) which is known to be undecidable. Therefore, the object version of the Law cannot be checked at compile-time. Consider: ; A = 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 = B ... ; poly is a polynomial in n variables with integer coefficients. ; we assume there are no shared objects Note that if the method get-x is in good style then the polynomial does not have any zeros in the integers. I suggest that we put a summary of this into the OOPSLA paper as the motivation for the current formulation. -- Karl