[Poplmark] Poplmark solution

Karl Crary crary at cs.cmu.edu
Mon Mar 21 20:33:45 EST 2005


Dear All,

We've completed the challenge using Twelf, and we're attaching our 
solution.  This is a rough initial draft; we intend to put out a much 
more polished version in a few days.  The bulk of the credit for the 
here is due to our student Michael Ashley-Rollman, who implemented the 
formalizations and the proofs for this first draft.

The most difficult part of the challenge to implement in Twelf was part 
1a, the transitivity of algorithmic subtyping.  In particular, the proof 
of narrowing requires one to isolate the binding of interest, but doing 
so makes it difficult to deal with other bindings that may depend on 
it.  Fortunately, we were able to work around that difficulty.  Given 
that, it was easy to extend the proof to records, for part 1b.  Then, 
just for fun, we completed the algorithm's soundness and completeness 
proofs.

Part 2 is exactly the sort of the thing that Twelf was designed for, and 
it went through without any major obstacles.  We found it convenient to 
use a declarative formulation of subtyping, rather than the algorithmic 
formulation of part 1.  Finally, there was no additional code to provide 
for part 3.  Using Twelf's logic programming engine, the specification 
of the operational semantics may be used as an implementation; it's just 
a matter of inputting the appropriate query into Twelf.

It may be interesting to some of you how Michael came to do this.  For 
his undergraduate honors thesis, Michael is implementing the 
type-theoretic definition of Standard ML (from Harper & Stone, 2000) and 
proving its type safety in Twelf.  This left him well-positioned to 
tackle this challenge.  You should be hearing more about his work in the 
coming months.

Best,
Karl Crary and Robert Harper

-------------- next part --------------
A non-text attachment was scrubbed...
Name: poplmark.tgz
Type: application/x-compressed
Size: 22571 bytes
Desc: not available
Url : http://lists.seas.upenn.edu/pipermail/poplmark/attachments/20050321/793f2222/poplmark-0001.bin


More information about the Poplmark mailing list