HaskellやScalaなどで一躍大人気となった関数型言語には、その根底に型付きラムダ計算という計算体系の理論が存在しています。この型付きラムダ計算の理論のおかげで、関数型言語では型安全なプログラミングが出来るのです。 ではオブジェクト指向言語にはそのような理論は存在するのでしょうか。 Javaについては、割と最近ですが、Javaをモデル化した計算体系を扱った、 Featherweight Java: a minimal core calculus for Java and GJ [Igarashi et al., 2001] という論文が存在します。この論文では、JavaとJava 5.0以降で採用されたジェネリクスという仕組みをモデル化したオブジェクト指向の体系を定義し、この体系上での型安全性の証明を行っています。 この論文の体系では構造化定理で言う条件分岐と反復が定義されていません