Aggiornamento [2011-09-20]: ho ampliato il paragrafo riguardante -expansion e estensionalità. Grazie ad Anton Salikhmetov per avermi indicato una buona referenza.η
-conversion ( λ x . f x ) = f è un caso speciale di β - conversionesolonel caso speciale quando f è esso stesso un'astrazione, ad es. se f = λ y . y y then ( λ x . f x ) = ( λ x . ( λ y . y y ) x ) = β ( λ x .η( λ x . fx ) = fβff= λ y. yyMa cosa succede se f è una variabile o un'applicazione che non si riduce a un'astrazione?
( λ x . fx ) = ( λ x . ( λ y. yy) x ) =β( λ x . x x ) =αf.
f
In un certo senso -rule è come un tipo speciale di estensioni, ma dobbiamo stare un po 'attenti a come viene affermato. Possiamo affermare l'estensione come:η
- per tutti gli -term M e N , se M x = N x quindi M = N , oppureλMNMx = NXM= N
- per tutte se ∀ x . f x = g x quindi f = g .f, g∀ x . fx = gXf= g
La prima è una meta-dichiarazione sui termini del calcolo . In esso x appare come una variabile formale, cioè fa parte del calcolo λ . Può essere provato da β η -rules, vedere ad esempio Teorema 2.1.29 in "Lambda Calculus: its Syntax and Semantics" di Barendregt (1985). Può essere inteso come un'affermazione su tutte le funzioni definibili , cioè quelle che sono denotazioni di λ- term.λXλβηλ
La seconda affermazione è come i matematici di solito comprendono le dichiarazioni matematiche. La teoria del calcolo descrive un certo tipo di strutture, chiamiamole " modelli λ ". Un modello λ potrebbe non essere numerabile, quindi non vi è alcuna garanzia che ogni suo elemento corrisponda a un λ- termine (proprio come ci sono più numeri reali di quante siano le espressioni che descrivono i reali). Estensionalità dice poi: se prendiamo tutte le due cose f e g in un λ -model, se f x = g x per tutti x nel modello, allora f = gλλλλfgλfx=gxxf=g. Ora, anche se il modello soddisfa la regola , non è necessario soddisfare l'estensione in questo senso. (È necessario un riferimento qui e penso che dobbiamo stare attenti a come viene interpretata l'uguaglianza.)η
Esistono diversi modi in cui possiamo motivare le conversioni e η . Prenderò a caso quello teorico-categoria, mascherato da λ -calculus, e qualcun altro può spiegare altre ragioni.βηλ
Consideriamo il calcolo tipizzato (perché è meno confuso, ma più o meno lo stesso ragionamento funziona per il calcolo non tipizzato λ ). Una delle leggi fondamentali che dovrebbero tiene in mano è la legge esponenziale C A × B ≅ ( C B ) A . (Sto usando le notazioni A → B e B A in modo intercambiabile, selezionando quale sembra avere un aspetto migliore.) Cosa fanno gli isomorfismi i : C A × B → ( C B ) A e j :λλ
CA×B≅(CB)A.
A→BBAi:CA×B→(CB)A sembra, scritto in
λ -calculus? Presumibilmente sarebbero
i = λ F : C A × B . λ un : A . λ B : B . f ⟨ un , b ⟩ e
j = λ g : ( C B ) A . λ p : A × Bj:(CB)A→CA×Bλi=λf:CA×B.λa:A.λb:B.f⟨a,b⟩
Un breve calcolo con un paio di
beta -reductions (compreso il
β -reductions
π 1 ⟨ un , b ⟩ = un e
π 2 ⟨ un , b ⟩ = b per prodotti) ci dice che, per ogni
g : ( C B ) A abbiamo
i ( j g ) =j=λg:(CB)A.λp:A×B.g(π1p)(π2p).
ββπ1⟨a,b⟩=aπ2⟨a,b⟩=bg:(CB)A
Dal momento che
i e
j sono inverse l'una dell'altra, ci aspettiamo che
i ( j g ) = g , ma in realtà dimostrare questo abbiamo bisogno di usare
η -riduzione due volte:
i ( j g ) = ( λ un : A . Λ B : B . g a b ) = η (i(jg)=λa:A.λb:B.gab.
iji(jg)=gη
Quindi questa è una ragione per avereriduzioni
η . Esercizio: qualeregola
η è necessaria per mostrare che
j ( i f ) = f ?
i(jg)=(λa:A.λb:B.gab)=η(λa:A.ga)=ηg.
ηηj(if)=f