%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \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{atm}} \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{\INT}[1]{\key{(Int}\;#1\key{)}} \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{\VAR}[1]{\key{(Var}\;#1\key{)}} \newcommand{\LET}[3]{\key{(Let}~#1~#2~#3\key{)}} \newcommand{\ASSIGN}[2]{(\key{Assign}~#1\;#2)} \newcommand{\RETURN}[1]{(\key{Return}~#1)} \newcommand{\SEQ}[2]{(\key{Seq}~#1~#2)} \newcommand{\IMM}[1]{\key{(Imm}\;#1\key{)}} \newcommand{\REG}[1]{\key{(Reg}\;#1\key{)}} \newcommand{\DEREF}[2]{\key{(Deref}~#1~#2\key{)}} \newcommand{\CFG}[1]{\key{(CFG}\;#1\key{)}} \newcommand{\BLOCK}[2]{\key{(Block}\;#1\;#2\key{)}} \newcommand{\STACKLOC}[1]{(\key{stack}\;#1)} \newcommand{\BININSTR}[3]{\key{(Instr}\;#1\;\key{(list}\;#2\;#3\key{))}} \newcommand{\UNIINSTR}[2]{\key{(Instr}\;#1\;\key{(list}\;#2\key{))}} \newcommand{\CALLQ}[1]{\key{(Callq}~#1\key{)}} \newcommand{\RETQ}{\key{(Retq)}} \newcommand{\PUSHQ}[1]{\key{(Pushq}~#1\key{)}} \newcommand{\POPQ}[1]{\key{(Popq}~#1\key{)}} \newcommand{\IF}[3]{(\key{if}\,#1\;#2\;#3)} \newcommand{\TTKEY}[1]{{\normalfont\tt #1}}