%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\itm}[1]{\ensuremath{\mathit{#1}}} \newcommand{\Stmt}{\itm{stmt}} \newcommand{\Exp}{\itm{exp}} \newcommand{\Def}{\itm{def}} \newcommand{\Type}{\itm{type}} \newcommand{\FType}{\itm{ftype}} \newcommand{\Instr}{\itm{instr}} \newcommand{\Block}{\itm{block}} \newcommand{\Tail}{\itm{tail}} \newcommand{\Prog}{\itm{prog}} \newcommand{\Arg}{\itm{arg}} \newcommand{\Reg}{\itm{reg}} \newcommand{\Int}{\itm{int}} \newcommand{\Var}{\itm{var}} \newcommand{\Op}{\itm{op}} \newcommand{\key}[1]{\texttt{#1}} \newcommand{\code}[1]{\texttt{#1}} \newcommand{\READ}{\key{(Prim}\;\code{'read}\;\key{'())}} \newcommand{\NEG}[1]{\key{(Prim}\;\code{'-}\;\code{(list}\;#1\;\code{))}} \newcommand{\PROGRAM}[2]{\code{(Program}\;#1\;#2\code{)}} \newcommand{\ADD}[2]{\key{(Prim}\;\code{'+}\;\code{(list}\;#1\;#2\code{))}} \newcommand{\UNIOP}[2]{(\key{#1}~#2)} \newcommand{\BINOP}[3]{(\key{#1}~#2~#3)} \newcommand{\LET}[3]{(\key{let}~([#1\;#2])~#3)} \newcommand{\ASSIGN}[2]{(\key{assign}~#1\;#2)} \newcommand{\RETURN}[1]{(\key{return}~#1)} \newcommand{\INT}[1]{\key{(Int}\;#1\key{)}} \newcommand{\REG}[1]{\key{(Reg}\;#1\key{)}} \newcommand{\VAR}[1]{\key{(Var}\;#1\key{)}} \newcommand{\STACKLOC}[1]{(\key{stack}\;#1)} \newcommand{\IF}[3]{(\key{if}\,#1\;#2\;#3)} \newcommand{\TTKEY}[1]{{\normalfont\tt #1}}