[[fun I2 = E in ...: theta]es = [[define I1(I2:tauexp) = ... in invoke
I1(E): theta]]es
[[fun I2 = E in ...: theta]es = [[pi2|-...:theta]](e
-U- {I2=[[pi|-E:tauexp]]e})s where pi2 = pi -U- {I2:tauexp}
[[def I1(I2:tauexp)=...in
call I1(E):theta]]e s = [[pi |- call I1(E): theta]]e1s where pi1 = pi -U- {I1: tauexp->theta}, and e1 = e -U- {I1=g} and gfs'=[[pi2-U-...:theta]](e-U-{I2=f})s' = gf1s where f1s'=[[pi1|-E:tauexp]]e1s' = [[pi2 |- ...: theta]](e -U- {I2=f1}) s = [[pi2 |- ...: theta]](e -U- {I2=f2}) s where f2s' = [[pi|- E: tauexp]]es' (since I1 does not appear in E)