1 module Test where
    2 import LambdaLift
    3 import Utilities
    4 program =
    5     (ELet True [("p", ELam ["a", "b"] (ELet False [("p", (EAp (EAp (EConst
    6     (CFun "-")) (EAp (EAp (EConst (CFun "+")) (EVar "a")) (EVar "b")))
    7     (EConst (CNum 20))))] (ELet False [("m", ELam ["p", "q"] (ELet False
    8     [("g", (EAp (EAp (EConst (CFun "+")) (EVar "a")) (EConst (CNum 6))))]
    9     (ELet False [("d", ELam ["pp"] (EAp (EAp (EConst (CFun "+")) (EAp (EAp
   10     (EConst (CFun "+")) (EVar "pp")) (EVar "q"))) (EVar "p")))] (ELet False
   11     [("c", ELam ["q"] (EAp (EAp (EConst (CFun "+")) (EAp (EAp (EConst (CFun
   12     "-")) (EVar "q")) (EVar "g"))) (EVar "a")))] (EAp (EAp (EConst (CFun
   13     "-")) (EAp (EAp (EConst (CFun "-")) (EAp (EVar "d") (EAp (EAp (EConst
   14     (CFun "+")) (EConst (CNum 1))) (EVar "a")))) (EAp (EVar "c") (EAp (EAp
   15     (EConst (CFun "-")) (EVar "a")) (EVar "b"))))) (EVar "p"))))))] (ELet
   16     True [("f", ELam ["a", "b"] (EAp (EAp (EVar "g") (EVar "a")) (EAp (EAp
   17     (EConst (CFun "+")) (EVar "b")) (EConst (CNum 1))))), ("g", ELam ["x",
   18     "y"] (EAp (EAp (EVar "f") (EVar "x")) (EAp (EAp (EConst (CFun "+"))
   19     (EVar "y")) (EVar "b"))))] (ELet False [("h", ELam ["a", "n"] (EAp (EAp
   20     (EVar "m") (EAp (EAp (EConst (CFun "+")) (EVar "n")) (EConst (CNum
   21     1)))) (EAp (EAp (EVar "f") (EVar "a")) (EVar "n"))))] (EAp (EAp (EVar
   22     "h") (EVar "a")) (EVar "p")))))))] (EAp (EAp (EVar "p") (EConst (CNum
   23     5))) (EConst (CNum 6))))