2012-07-04 109 views
1

我對lambda微積分很新,在閱讀教程時遇到了這個問題。 這是我的等式。Lambda微積分函數的減少

Y = ƛf.(ƛx.f(xx)) (ƛx.f(xx)) 

現在,如果我們應用的另一種說法,假設F(YF),那麼我們如何能減少this.If我根據測試減少是正確的,我們可以在替換所有˚F(ƛx .f(xx))(ƛx.f(xx)),這是正確的,如果是的話,我們該怎麼做。

感謝

回答

0

Reuction步驟:

Y = ƛf.(ƛx.f(xx)) (ƛx.f(xx)) = ƛf.(f (ƛx.f(xx) ƛx.f(xx))) 
    = ƛf.(f (f (ƛx.f(xx) ƛx.f(xx)))) 
    = ƛf.(f (f (f (ƛx.f(xx) ƛx.f(xx)))) 
    = ƛf.(f (f (f (f (ƛx.f(xx) ƛx.f(xx))))) = ... 

所以這LAMBDA項進入一個無限循環......

說明:
我們來看看它的長期(ƛx.f(xx) ƛx.f(xx))我們代替ƛx.f(xx)f'
這意味着(f' f') =>激活術語f'本身。
可能更容易在這樣看:當您激活ƛy.f(yy),並提供輸入(其替代yƛx.f(xx)
(ƛy.f(yy) ƛx.f(xx))現在的結果是:f(ƛx.f(xx) ƛx.f(xx))這反過來,可以一次又一次去了同樣的過程和拉姆達表達式將只花費...


備註:
這是錯誤寫:
Y = ƛf.(ƛx.f(xx)) (ƛx.f(xx)) 它實際上應該是: Y = ƛf.(ƛx.f(xx) ƛx.f(xx))
ƛx.f(xx)(ƛx.f(xx))之間的區別在於,後者是ƛx.f(xx)激活 - 這是毫無意義的,以激活它像這樣(ƛx.f(xx)),因爲我們需要一個x(輸入)來激活它。

最後:
Y = ƛf.(ƛx.f(xx)) (ƛx.f(xx)) = ƛf.(f (ƛx.f(xx) ƛx.f(xx)))
含義:
YF = (ƛx.F(xx)) (ƛx.F(xx)) = F(ƛx.F(xx)) (ƛx.F(xx)) = F(YF)

+0

你能告訴我要遵循的步驟或技術我可以使用 – Pradeep

+0

我不明白你是怎麼ƛf(F(ƛx .f(xx)ƛx.f(xx)))請告訴我們使用的定理 – Pradeep

+0

所以如果我們寫一個像YF這樣的激活,它是否等於'(ƛx.F(xx))(ƛx.F(xx) )' – Pradeep