The bisimulation conditions are derived by manually extracting proof obligations from a hypothetical direct proof of contextual equivalence. This suggests a method for deriving definitions of bisimulation for other languages. We illustrate this technique for the imperative object calculus in a paper to appear at ESOP 2006.
We've also completed a short paper about the Krivine Machine; this has to do with operational semantics, though not (so far) about monads.
Our student Dino Oliva developed methods toward bridging the gap between typical semantics-directed abstract machines, which typically manipulate trees, and the standard structures of activation records, static and dynamic chains, etc. [Oliva's ftp directory] [Our LFP '92 paper]
As part of a cooperative project with the Mitre Corporation, we applied this technique to prove the correctness of a compiler for PreScheme, a dialect of Scheme tailored for systems programming, as part of a verified implementation of Scheme called VLisp. This research was published as a special double issue of the journal Lisp and Symbolic Computation [ftp directory] [Introduction to the report]
With David Gladstein, we extended these results to prove the correctness of a simple compiler for a parallel language. [CONCUR '96 paper]
With Paul Steckler, we developed an interprocedural flow analysis for compilers that are capable of designing a custom calling sequence for each procedure or method. The problem here is that, in higher-order and object-oriented languages, several different procedures may be called from the same site. Our flow analysis ensures that the specialized calling protocol used for each procedure matches the protocol used at each of its possible call sites. [TOPLAS paper]
Last modified: Mon Jan 2 14:20:04 EST 2006
Report problems to Mitch Wand