I favor saying that "one possible" definition of LETREC is the
one given earlier, or even the following:
(letrec ((x v) ...) e ...)
=>
(let ((x 'any) ...)
(set! x v) ...
e ...)
Neither definition catches all the possible errors, but we have
already said that not all errors need be caught.
Of course, any implementation would be free to check for errors
before performing this transformation!