If not, it seems like it complicates the interface without benefit.
How about this instead?:
; Is arity information available for this procedure?
(arity-available? procedure) ==> Boolean
; Does this procedure have fixed arity?
; It is an error to call this if `arity-available?' would return #f.
(fixed-arity? procedure) ==> Boolean
; Return the minimum arity of this procedure.
; It is an error to call this if `arity-available?' would return #f.
(minimum-arity procedure) ==> non-negative integer
; Return #t iff `procedure' would accept `integer' arguments.
; It is an error to call this if `arity-available?' would return #f.
(arity-includes? procedure integer) ==> Boolean
This is simpler because I only have to check the return value of
`arity-available?' before I call any of the other procedures. I don't
have to call `procedure-arity', then check both its value and return
type before I can find out the procedure's minimum arity.