trivial/popl-2017/fig-elab0.tex
2016-06-27 16:00:01 -04:00

50 lines
881 B
TeX

\fbox{$\elabsto{e}{e}{\tau}$}
\begin{mathpar}
\inferrule*[left=S-Var]{
\Gamma(x) = \tau
}{
\elabsto{x}{x}{\tau}
}
\inferrule*[left=S-Int]{
n \in \ints
}{
\elabsto{n}{n}{\tint}
}
\inferrule*[left=S-Lam]{
\elabsto{e}{e'}{\tau'}
}{
\elabsto{\vlam{x}{e}}{\vlam{x}{e'}}{\tau \rightarrow \tau'}
}
\inferrule*[left=S-Arr]{
\elabsto{e_0}{e_0'}{\tint}
\\
\ldots
\\
\elabsto{e_{n-1}}{e_{n-1}'}{\tint}
}{
\elabsto{\vectoren}{\vectorgen{e_0',\ldots,e_{n-1}'}}{\tarray}
}
\inferrule*[left=S-App]{
\elabsto{e_1}{e_1'}{\tau \rightarrow \tau'}
\\
\elabsto{e_2}{e_2'}{\tau}
}{
\elabsto{e_1~e_2}{e_1'~e_2'}{\tau'}
}
\inferrule*[left=S-Ref]{
\elabsto{e_1}{e_1'}{\tarray}
\\
\elabsto{e_2}{e_2'}{\tint}
}{
\elabsto{\aref{e_1}{e_2}}{\checkedref~e_1'~e_2'}{\tint}
}
\end{mathpar}