This is a particularly complicated example, and a few separate things are going on inside it.
The horizontal bar notation is usually used for inference rules. Above the line are premises (usually separated by whitespace on a single line), below the line is a conclusion. E.g.,
P0 P1 ... Pn
------------------
C
means "if P0
through Pn
all hold, then we may conclude that C
holds as well."
The turnstile notation (⊦) is usually used for entailment relations. In type systems, this usually means "if we assume the types on the left-hand side, we can derive the types on the right-hand side." The colon is conventionally used to associate a variable or expression with a type, so
x_ : C_, this : C ⊦ e0 : E0
means "assuming x_
has type C_
and this
has type C
, we can derive that e0
has type E0
."¹
The symbol <:
is conventionally used for sub-typing relations, but this should be defined explicitly in the paper.
The "class C extends D
" bit seems to be referring to the syntax of the source program. I.e., the intended premise is "C
is explicitly declared to extend D
".
The rest of it is hard to grok without wading into the paper. I heartily second Norman Ramsey's recommendation of Pierce as a good introduction to type theory.
¹ Note that the difference between "inference" and "entailment" is either subtle or non-existent—which one to use where is a matter of convention, taste, and/or fine distinctions.