我必须确定函数 s1 和 s2 的自由和有界变量集:
s1 := \x -> if y then \z -> (x \y -> y) else (\z -> w) x
所以,对于 s1 我会写:
FV(s1):= FV (y) ∪ FV (x) ∪ FV (w)
我对么?或者应该是:
FV(s1):= FV (y) ∪ FV (x) ∪ FV (y) ∪ FV (w) ∪ FV (x)
因为 y 和 x 是两次免费的。一旦 y 在 If 然后 -> y 的结果和 x: x 在 \z 的结果中是自由的一次,在最后是第二次。
有界变量将是:
BV(s1):= BV (x) ∪ BV (z) ∪ BV (y) ∪ BV (z)
因为 z 是有界 var 的两倍。
以同样的方式,我会确定 s2 的 FV 和 BV:
s2 := let f x1 x2 = y1 (\x -> x2) in let y1 = f w (f y2 y2), y2 = y1 in f
FV(s2):= FV (y1) ∪ FV (x2) ∪ FV (w) ∪ FV (y1)
BV(s2):= BV (f) ∪ BV (x1) ∪ BV (x2) ∪ BV (x) ∪ BV (y1)
你能告诉我我是对还是错?
提前致谢