\renewcommand{\FV}[1]{\mathrm{FV}(#1)}

\newcommand{\Gvdash}{\Gamma\vdash}

\newcommand{\StepsTo}{\mathrel{\mapsto}}
\newcommand{\EvalsTo}{\mathrel{\Downarrow}}

\newcommand{\cdparens}[1]{\mathcd{(}{#1}\mathcd{)}}

\newcommand{\Dec}[2]{{#1}\mathcd{:}{#2}}

\newcommand{\MinML}{\mbox{\textsf{MinML}}}

\newcommand{\Integer}{\mathcd{int}}
\newcommand{\Int}{\Integer}
\newcommand{\Numeral}[1]{#1}
\newcommand{\PrimOp}[2]{{#1}({#2})}

\newcommand{\Boolean}{\mathcd{bool}}
\newcommand{\True}{\mathcd{true}}
\newcommand{\False}{\mathcd{false}}
\newcommand{\If}[4]{\mathcd{if}\,{#2}\,\mathcd{then}\,{#3}\,\mathcd{else}\,{#4}\,\mathcd{fi}}
\newcommand{\UIf}[3]{\If{}{#1}{#2}{#3}}

\newcommand{\Function}[2]{{#1}{\to}{#2}}
\newcommand{\Arrow}[2]{\Function{#1}{#2}}
\newcommand{\Fun}[5]{\mathcd{fun}\,{#3}\,\Dec{\cdparens{\Dec{#4}{#1}}}{#2}\,\mathcd{is}\,{#5}\,\mathcd{end}}
\newcommand{\Fn}[3]{\mathcd{fn}\,\Dec{#1}{#2}\,\mathcd{in}\,{#3}\,\mathcd{end}}
\newcommand{\UFun}[3]{\mathcd{fun}\,{#1}\cdparens{{#2}}\,\mathcd{is}\,{#3}\,\mathcd{end}}
\newcommand{\UFn}[2]{\mathcd{fn}\,{#1}\,\mathcd{in}\,{#2}\,\mathcd{end}}
\newcommand{\Apply}[4]{\mathcd{apply}\cdparens{{#3},{#4}}}
\newcommand{\UApply}[2]{\Apply{}{}{#1}{#2}}
\newcommand{\UApp}[2]{{#1}\cdparens{#2}}

\newcommand{\TVar}{\mbox{[\textbf{VarTyp}]}}
\newcommand{\TNum}{\mbox{[\textbf{NumTyp}]}}
\newcommand{\TTrue}{\mbox{[\textbf{TrueTyp}]}}
\newcommand{\TFalse}{\mbox{[\textbf{FalseTyp}]}}
\newcommand{\TOp}{\mbox{[\textbf{OpTyp}]}}
\newcommand{\TIf}{\mbox{[\textbf{IfTyp}]}}
\newcommand{\TFun}{\mbox{[\textbf{FunTyp}]}}
\newcommand{\TApp}{\mbox{[\textbf{AppTyp}]}}

\newcommand{\IOp}{\mbox{[\textbf{OpVals}]}}
\newcommand{\IIfT}{\mbox{[\textbf{IfTrue}]}}
\newcommand{\IIfF}{\mbox{[\textbf{IfFalse}]}}
\newcommand{\IApp}{\mbox{[\textbf{CallFun}]}}
\newcommand{\EOp}[1]{\mbox{$[\mathbf{OpArg}_{#1}]$}}
\newcommand{\EIf}{\mbox{[\textbf{IfTest}]}}
\newcommand{\EAppF}{\mbox{[\textbf{AppFun}]}}
\newcommand{\EAppA}{\mbox{[\textbf{AppArg}]}}

\newcommand{\LetBe}[4]{\mathtt{let}\,\Dec{#2}{#1}\,\mathtt{be}\,{#3}\,\mathtt{in}\,{#4}\,\mathtt{end}}

\newcommand{\All}[2]{\forall {#1}.{#2}}
\newcommand{\PFun}[2]{\mathcd{Fun}\,#1\,\mathcd{in}\,#2\,\mathcd{end}}
\newcommand{\PLam}[2]{\Lambda\,#1{.}#2}
\newcommand{\PApp}[2]{{#1}\,\mathcd{[}{#2}\mathcd{]}}
\newcommand{\PApply}[2]{\mathcd{inst(}{#1}\mathcd{,}{#2}\mathcd{)}}

\newcommand{\Prod}[2]{{#1}\mathcd{*}{#2}}
\newcommand{\Pair}[2]{\cdparens{#1\mathcd{,}#2}}
\newcommand{\Bind}[3]{\mathcd{bind}\,#1\,\mathcd{to}\,#2\,\mathcd{in}\,#3\,\mathcd{end}}

\newcommand{\Sum}[2]{{#1}\mathcd{+}{#2}}
\newcommand{\Inl}[3]{\mathcd{inl}_{\Sum{#1}{#2}}\cdparens{#3}}
\newcommand{\Inr}[3]{\mathcd{inr}_{\Sum{#1}{#2}}\cdparens{#3}}
\newcommand{\Case}[8]{\mathcd{case}_{#1}\,{#2}\,\mathcd{of}\,\mathcd{inl}\cdparens{\Dec{#3}{#4}}\,\mathcd{=>}\,{#5}\,\mathcd{|}\,\mathcd{inr}\cdparens{\Dec{#6}{#7}}\,\mathcd{=>}\,{#8}\,\mathcd{end}}

\newcommand{\List}[1]{{#1}\,\mathcd{list}}
\newcommand{\Nil}{\mathcd{nil}}
\newcommand{\Cons}[2]{{#1}\mathcd{::}{#2}}
\newcommand{\Hd}[1]{\mathcd{hd}\cdparens{#1}}
\newcommand{\Tl}[1]{\mathcd{tl}\cdparens{#1}}
\newcommand{\Null}[1]{\mathcd{null}\cdparens{#1}}
\newcommand{\ListCase}[6]{\mathcd{listcase}\,{#2}\,\mathcd{of}\,\Nil\,\mathcd{=>}\,#3\,\mathcd{|}\,\Cons{\Dec{#4}{#1}}{\Dec{#5}{\List{#1}}}\,\mathcd{=>}\,#6\,\mathcd{end}}
\newcommand{\UListCase}[5]{\mathcd{listcase}\,{#1}\,\mathcd{of}\,\Nil\,\mathcd{=>}\,{#2}\,\mathcd{|}\,\Cons{#3}{#4}\,\mathcd{=>}\,#5\,\mathcd{end}}

\newcommand{\Error}{\mathcd{error}}

\newcommand{\Unit}{\mathcd{unit}}
\newcommand{\UnitEl}{\cdparens{}}

\newcommand{\SubType}{\mathrel{\mathcd{<:}}}
\newcommand{\Float}{\mathcd{float}}
\newcommand{\Long}{\mathcd{long}}
\newcommand{\Tuple}[2]{{#2}_1\mathcd{*}\cdots\mathcd{*}{#2}_{#1}}
\newcommand{\TupleExp}[2]{\mathcd{<}{#2}_1\mathcd{,}\ldots\mathcd{,}{#2}_{#1}\mathcd{>}}
\newcommand{\Record}[3]{\mathcd{Rec\{}{#2}_1\mathcd{:}{#3}_1\mathcd{,}\ldots\mathcd{,}{#2}_{#1}\mathcd{:}{#3}_{#1}\mathcd{\}}}
\newcommand{\RecordExp}[3]{\mathcd{rec\{}{#2}_1\mathcd{:}{#3}_1\mathcd{,}\ldots\mathcd{,}{#2}_{#1}\mathcd{:}{#3}_{#1}\mathcd{\}}}
\newcommand{\Object}[3]{\mathcd{Obj\{}{#2}_1\mathcd{:}{#3}_1\mathcd{,}\ldots\mathcd{,}{#2}_{#1}\mathcd{:}{#3}_{#1}\mathcd{\}}}
\newcommand{\ObjectExp}[3]{\mathcd{obj\{}{#2}_1\mathcd{:}{#3}_1\mathcd{,}\ldots\mathcd{,}{#2}_{#1}\mathcd{:}{#3}_{#1}\mathcd{\}}}
\newcommand{\Proj}[2]{{#2}\mathcd{.}{#1}}

%%% Local Variables: 
%%% mode: plain-tex
%%% TeX-master: "final"
%%% End: 
