Help understanding academic notation for type system
<p>I'm trying to understand an <a href="http://www.cis.upenn.edu/~bcpierce/papers/fj-toplas.pdf" rel="nofollow">academic paper</a> (pdf) about programming language design. In particular, it describes a lightweight version of Java called Featherweight Java. It has typing rules with notation like this:</p>

<pre><code>x_ : C_, this : C |- e0 : E0         E0 &lt;: C0
class C extends D {...}
if mtype(m,D) = D_-&gt;D0, then C_ = D_ and C0 = D0
---------------------------------------------------------------------------
C0 m(C_ x_){ return e0; } OK IN C
</code></pre>

<p>That is my best attempt at reproducing it in text, anyways. However, the paper, seems to assume that such notation is familiar, and barely explains it. Could anyone point me in the direction of a better explanation? Thanks!</p>
