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))))