;; by Jeffrey Brown <jbb97@hamp.hampshire.edu>

(defun inherit-get (thing property)
  "Searches for the property of thing.  If there is one, it returns 
that value.  If there isn't, it looks for an isa-link from thing to 
another thing.  If  there isn't one, it returns 'no-category'.  If
there is one, it inherit-gets another thing  with the same property."
  (let ((result (get thing property 'no-category)))
    (if (not (equal result 'no-category)) result
        (if (equal 'no-category (get thing 'isa 'no-category)) 
          'no-category
          (inherit-get (get thing 'isa) property)))))