62 lines
1.1 KiB
TeX
62 lines
1.1 KiB
TeX
\[
|
|
\begin{array}{l l l}
|
|
v & \coloneq & x \mid \vlam{x}{e} \mid \ints \mid \vectorvn
|
|
\\[8pt]
|
|
e & \coloneq & v \mid e~e \mid \vectoren \mid \aref{e}{e}
|
|
\\[8pt]
|
|
\tau & \coloneq & \tint \mid \tarray \mid \tau \rightarrow \tau
|
|
\\[8pt]
|
|
\tenv & \coloneq & \tenvempty \mid x:\tau,\tenv
|
|
\end{array}
|
|
\]
|
|
|
|
|
|
\fbox{$\typesto{e}{\tau}$}
|
|
\begin{mathpar}
|
|
\inferrule*[left=T-Var]{
|
|
\tenv(x) = \tau
|
|
}{
|
|
\typesto{x}{\tau}
|
|
}
|
|
|
|
\inferrule*[left=T-Lam]{
|
|
\typestogen{x:\tau,\tenv}{e}{\tau'}
|
|
}{
|
|
\typesto{\vlam{x}{e}}{\tau \rightarrow \tau'}
|
|
}
|
|
|
|
\inferrule*[left=T-App]{
|
|
\typesto{e_1}{\tau \rightarrow \tau'}
|
|
\\
|
|
\typesto{e_2}{\tau}
|
|
}{
|
|
\typesto{e_1~e_2}{\tau'}
|
|
}
|
|
|
|
\inferrule*[left=T-Int]{
|
|
i \in \ints
|
|
}{
|
|
\typesto{i}{\tint}
|
|
}
|
|
|
|
\inferrule*[left=T-Arr]{
|
|
\typesto{e_0}{\tint}
|
|
\\
|
|
\ldots
|
|
\\
|
|
\typesto{e_{n-1}}{\tint}
|
|
}{
|
|
\typesto{\vectoren}{\tarray}
|
|
}
|
|
|
|
\inferrule*[left=T-Ref]{
|
|
\typesto{e_1}{\tarray}
|
|
\\
|
|
\typesto{e_2}{\tint}
|
|
}{
|
|
\typesto{\aref{e_1}{e_2}}{\tint}
|
|
}
|
|
|
|
\end{mathpar}
|
|
|