Take into consideration the "divide" operator:
(λn.((λf.(λx.x x) (λx.f (x x))) (λc.λn.λm.λf.λx.(λd.(λn.n (λx.(λa.λb.b)) (λa.λb.a)) d ((λf.λx.x) f x) (f (c d m f x))) ((λm.λn.n(λn.λf.λx.n(λg.λh.h(gf))(λu.x)(λu.u))m)nm))) ((λn.λf.λx.f(nfx))n))
You can't currently assign that to a variable (because I think it doesn't have a normal form), but it looks like it works if you do the application inline.
Maybe we don't compute normal forms of definitions?
Take into consideration the "divide" operator:
(λn.((λf.(λx.x x) (λx.f (x x))) (λc.λn.λm.λf.λx.(λd.(λn.n (λx.(λa.λb.b)) (λa.λb.a)) d ((λf.λx.x) f x) (f (c d m f x))) ((λm.λn.n(λn.λf.λx.n(λg.λh.h(gf))(λu.x)(λu.u))m)nm))) ((λn.λf.λx.f(nfx))n))
You can't currently assign that to a variable (because I think it doesn't have a normal form), but it looks like it works if you do the application inline.
Maybe we don't compute normal forms of definitions?