[POPLmark] Meta-comment

Greg Morrisett greg at eecs.harvard.edu
Wed May 11 06:55:16 EDT 2005


Karl Crary wrote:
> 
> Perhaps we're arguing semantics, but let me press a little bit more.  
> Would "Dan's unsoundness" in Cyclone be an example of something 
> trivially fixed?  It seems rather subtle to me.  I don't know if it 
> actually was uncovered by a safety proof, but it certainly would have.

I'm sure you're right that a proof would've found this, but that's
not how it happened.  For one thing, we left the combination of
& and existentials out of the model.  When you're doing proofs
with pencil and paper, you try to cut things down a lot.

Dan tripped across this problem for other reasons and then
formulated two different "fixes" to the problem and then wrote
a paper where he constructed a model and showed both fixes were
sound.

I would love to hear of examples where someone got deep into
a subject reduction proof and decided that the underlying safety
property they were trying to establish for a language was in
fact just not true:  I'm thinking along the lines of the old
ML imperative polymorphism + callcc/throw.  I mean, there's a
case where the simply-typed case went through like a breeze,
and the more complicated case just wasn't modeled but was assumed
correct.  In my opinion, that was a rare occurrence.

In contrast, I'm frequently stunned by a set of typing rules
that I think must be unsound, but for some very cool or deep
reason, turn out to be sound.  It's true that the proof provides
a lot of reassurance and insight in these cases.  An example is
something like runST in Haskell, where the rank-2 polymorphism
and the indexed monad conspire to trap the "effects" of running
a computation.

-Greg



More information about the Poplmark mailing list