valuation[[((fn x:int => ((fn f:(int -> int) => (f x)) (fn z:int => x))) four)]] bind(four,inValue(integer(4))) = ...), e2 is four)> let func(v1) = valuation[[(fn x:int => ((fn f:(int -> int) => (f x)) (fn z:int => x)))]] bind(four,inValue(integer(4))) in (v1 [[four]]) = let func(v1) = func(\y. (valuation[[((fn f:(int -> int) => (f x)) (fn z:int => x))]] (overlay(bind(x,exp(y)), bind(four,inValue(integer(4))))))) in (v1 [[four]]) = ((\y. (valuation[[((fn f:(int -> int) => (f x)) (fn z:int => x))]] (overlay(bind(x,exp(y)), bind(four,inValue(integer(4))))))) [[four]]) = (valuation[[((fn f:(int -> int) => (f x)) (fn z:int => x))]] (overlay(bind(x,exp(four)), bind(four,inValue(integer(4)))))) = let func(v1) = valuation[[(fn f:(int -> int) => (f x))]] (overlay(bind(x,exp(four)), bind(four,inValue(integer(4)))))) in (v1 [[(fn z:int => x)]]) = let func(v1) = func(\q. (valuation[[(f x)]] (overlay(bind(f,exp(q)), (overlay(bind(x,exp(four)), bind(four,inValue(integer(4))))))))) in (v1 [[(fn z:int => x)]]) = valuation[[(f x)]] (overlay(bind(f,exp((fn z:int => x))), (overlay(bind(x,exp(four)), bind(four,inValue(integer(4))))))) = let func(v1) = valuation[[f]] (overlay(bind(f,exp((fn z:int => x))), (overlay(bind(x,exp(four)), bind(four,inValue(integer(4))))))) in (v1 [[x]]) = let func(v1) = let env = (overlay(bind(f,exp((fn z:int => x))), (overlay(bind(x,exp(four)), bind(four,inValue(integer(4))))))) in (case find(env,f) of inValue(v) => v | exp(e) => valuation[[e]] env) in (v1 [[x]]) = let func(v1) = valuation[[(fn z:int => x)]] (overlay(bind(f,exp((fn z:int => x))), (overlay(bind(x,exp(four)), bind(four,inValue(integer(4))))))) in (v1 [[x]]) = x))), (overlay(bind(x,exp(four)), bind(four,inValue(integer(4))))))))) in (v1 [[x]]) = (valuation[[x]] (overlay(bind(z,exp(x)), (overlay(bind(f,exp((fn z:int => x))), (overlay(bind(x,exp(four)), bind(four,inValue(integer(4))))))))) = (valuation[[four]] (overlay(bind(z,exp(x)), (overlay(bind(f,exp((fn z:int => x))), (overlay(bind(x,exp(four)), bind(four,inValue(integer(4))))))))) = inValue(integer(4))