Now, this isn't all the animals. What we did was asked Cassie whom she
explicitly believed to be an animal. What we probably would rather know
is whom she can infer to be an animal. To do this, we can tell her that
certain paths of relations are equivalent to certain relations. For
instance, we can tell her that the isa relation is transitive.
This is done with the define-path command, which takes a relation as
its first argument and a path as its second. To define the path, we can
use
the compose command, which can be thought of as creating a new
relation consisting of a path of relations. The path of relations might
consist of zero or more (i.e., kstar)
occurrences of certain relations, and we might
want to restrict the path to go through only asserted nodes. (See
UM§2.5.2
for a full description of the syntax and semantics of paths.)
E.g., to tell Cassie
that isa is transitive,
evaluate:
(define-path isa (compose isa (kstar (compose object- ! isa))))