val add = Fix("a",Abs("n",Abs("m", Cond(Iszero (Var "n"), Var "m", Succ(App(App(Var "a", Pred(Var "n")), Var "m")))))); val mult = Fix("f",Abs("n",Abs("m", Cond(Iszero (Var "n"), I 0, App(App(add,Var "m"),(App(App(Var "f", Pred(Var "n")), Var "m"))))))); val fact = Fix("f",Abs("n", Cond(Iszero (Var "n"), I 1, App(App(mult,Var "n"),App(Var "f", Pred(Var "n")))))); eval (App(App(add,I 3), I 2)); eval (App(App(mult,I 3), I 2)); eval (App(fact,I 4)); eval1 (empty, App(App(add,I 3), I 2)); eval1 (empty, App(App(mult,I 3), I 2)); eval1 (empty, App(fact,I 4));