I would add two more points:

7) I think that having (is foo) imply (is equal? foo) is just a mistake.  Equal? is a partly implementation-defined predicate; if you want it, you should specify it.  So `is` with a single argument should just be an error.

OK, I'll fix that
 
8) It seems clear to me that (is _ related-to? _) should simply mean `related-to?`.  When _ is used as a place holder, it is always assumed that it might mean different things in different places.  The interpretation (lambda (_) (related-to? _ _)) violates this assumption.

I think it can be justified both ways. One could argue that (lambda (_) (related-to? _ _)) actually adds something to the expressiveness -- otherwise it would always be preferable to just write "related-to?" instead of (is _ related-to? _).