A Model of Safe Cross-language Inheritance, ECOOP 2008

Inheritance is a standard means for reuse and for interfacing with external libraries. In a multi-language software product, extending one language's class from another language can require a significant number of manual indirections and other error-prone complications. Building on our previous interoperability work, we introduce a technique that allows safe, easy inheritance across languages. We demonstrate our technique for cross-language inheritance with a statically typed object calculus and a dynamically typed object calculus, where a statically typed class can extend a dynamically typed one and vice-versa. We provide a proof sketch of soundness, as well as a guarantee that dynamic type errors do not occur with statically typed values. Paper

Formal semantics

PLT-Redex executable semantics
Note: the plt semantics is inbetween versions currently, while waiting for dependent libraries to release compatible versions. Works with plt-scheme DrScheme v372 and plt-redex version 3.20