Hi Andy, This all sounds great! :)
I have only one comment for now, which regards arity information. The required/optional/rest representation is not sufficiently general. Not only is it unable to handle empty case-lambdas, but it's also unable to properly represent a case-lambda that can accept 1 or 3 arguments, but not 2. One possibility would for each procedure to have a (possibly empty) list of supported arities, where each arity corresponds to a case-lambda clause. What do you think? Mark