Cập nhật [2011/09/20]: Tôi mở rộng đoạn về η -expansion và extensionality. Cảm ơn Anton Salikhmetov đã chỉ ra một tài liệu tham khảo tốt.
η -conversion(λx.fx)=f là một trường hợp đặc biệt củaβ - chuyển đổichỉtrong trường hợp đặc biệt khif là chính nó là một khái niệm trừu tượng, ví dụ như, nếuf=λy.yy sau đó
(λx.fx)=(λx.(λy.yy)x)=β(λx.xx)=αf.
Nhưng điều gì sẽ xảy ra nếu
f là một biến hoặc một ứng dụng không giảm đến mức trừu tượng?
Theo một cách nào đó, η -rule giống như một loại mở rộng đặc biệt, nhưng chúng ta phải cẩn thận một chút về cách thức được nêu. Chúng tôi có thể tuyên bố tính mở rộng như:
- cho tất cả λ -terms M và N , nếu Mx=Nx thì M=N , hoặc
- với mọi nếu ∀ x . f x = g x thì f = g .f,g∀x.fx=gxf=g
Cái đầu tiên là một tuyên bố meta về các điều khoản của -calculus. Trong đó x xuất hiện như một biến chính thức, nghĩa là nó là một phần của λ -calculus. Nó có thể được chứng minh từ β η -rules, xem ví dụ Định lý 2.1,29 trong "Lambda Tính: Cú pháp và ngữ nghĩa của nó" của Barendregt (1985). Nó có thể được hiểu như là một tuyên bố về tất cả các hàm có thể xác định , nghĩa là những hàm đó là ký hiệu của λ -terms.λxλβηλ
Câu lệnh thứ hai là cách các nhà toán học thường hiểu các câu toán học. Lý thuyết về -calculus mô tả một loại cấu trúc nhất định, chúng ta hãy gọi chúng là " λ -models ". Một λ -Người mẫu có thể là không đếm được, vì vậy không có gì bảo đảm rằng mọi phần tử của nó tương ứng với một λ -term (giống như có số thực hơn có biểu thức mô tả số thực). Extensionality sau đó nói: nếu chúng ta mất bất kỳ hai điều e và g trong một λ -Người mẫu, nếu f x = g x cho tất cả x trong mô hình, sau đó f = gλλλλfgλfx=gxxf=g. Bây giờ ngay cả khi mô hình đáp ứng các -rule, nó không cần phải đáp ứng extensionality theo nghĩa này. (Cần tham khảo ở đây và tôi nghĩ chúng ta cần cẩn thận cách giải thích sự bình đẳng.)η
Có một số cách mà chúng ta có thể thúc đẩy - và η -conversions. Tôi sẽ chọn ngẫu nhiên một loại lý thuyết, cải trang thành λ -calculus, và ai đó có thể giải thích lý do khác.βηλ
Chúng ta hãy xem xét các đánh máy -calculus (vì nó ít gây nhầm lẫn, nhưng ít nhiều lập luận cùng làm việc cho untyped λ -calculus). Một trong những luật cơ bản mà nên giữ là luật hàm mũ C Một × B ≅ ( C B ) Một . (Tôi đang sử dụng các ký hiệu A → B và B A thay thế cho nhau, chọn bất kỳ ký hiệu nào có vẻ tốt hơn.) Các đẳng cấu i : C A × B → ( C B ) A và j :λλ
CA×B≅(CB)A.
A → BBMộttôi : CA × B→ ( CB)Một trông thấy quen quen, viết bằng
λ -calculus? Có lẽ họ sẽ là
i = λ f : C Một × B . λ một : Một . λ b : B . f ⟨ một , b ⟩ và
j = λ g : ( C B ) Một . λ p : A × Bj : ( CB)Một→ CA × Bλi = λ f: CA × B.λa:A.λb:B.f⟨a,b⟩
Một tính toán ngắn với một vài
β -reductions (bao gồm
β -reductions
π 1 ⟨ một , b ⟩ = một và
π 2 ⟨ một , b ⟩ = b cho sản phẩm) cho chúng ta biết rằng, đối với mỗi
g : ( C B ) A ta có
i ( j g ) =j=λg:(CB)A.λp:A×B.g(π1p)(π2p).
ββπ1⟨a,b⟩=aπ2⟨a,b⟩=bg:(CB)A
Kể từ khi
tôi và
j là phần tử nghịch đảo của nhau, chúng tôi hy vọng
i ( j g ) = g , nhưng để thực sự chứng minh này, chúng ta cần phải sử dụng
η -reduction hai lần:
i ( j g ) = ( λ một : Một . Λ b : B . g a b ) = η (i(jg)=λa:A.λb:B.gab.
iji(jg)=gη
Vì vậy, đây là một trong những lý do để có
η -reductions. Bài tập:
-rule nào là cần thiết để chỉ ra rằng
j ( i f ) = f ?
i(jg)=(λa:A.λb:B.gab)=η(λa:A.ga)=ηg.
ηηj(if)=f