Errors are not the same as incorrectness



Take the following degenerate program for computing travel routes:

"boo" - 1;





  1. So what is a complete program? Candidates: a function, a module, a binary, a system image... Typed Racket makes it explicit that a module is checked. Not all languages have such a clear opinion about this.

  2. Re: "The properties we check are only an approximation to the ones we care about."

    As noted in "types considered harmful" by Benjamin Pierce (author of TAPL), attempting to prove any non-trivial property about a program will catch a lot of errors, including many errors for which we aren't specifically searching. Thus, perhaps it doesn't really matter which properties we check, so long as we check enough properties to find the errors.


It's OK to comment on old posts.