There are several problems with Predicate Calculus as a representation language:

- The level of representation is ``frozen'' at the level chosen
for predicates and objects. Every predication made about a
type of object restricts the objects which may be of that
type.
Example:

*&forall x (Bird(x) &rarr Flies (x))*If we have such an axiom (reasonable at first glance), we have restricted the set of things which can be birds to those which fly. We can't talk about dead birds, birds that habitually don't fly, birds which can't fly due to injury, etc.; if we have such instances, we can derive

*□*and ``prove'' anything.On the other hand, if we enumerate the enabling conditions for a bird to be able to fly, (a) we couldn't enumerate all of them, and (b) we would have to prove every enabling condition in proving a theorem.