Đặt lý thuyết đang làm hại bạn ở đây và bạn càng sớm giải phóng bản thân khỏi nó thì càng tốt cho sự hiểu biết của bạn về khoa học máy tính.
Quên các giao lộ và đoàn thể. Người có được ý tưởng này mà và ∃ giống như ⋂ và ⋃ , đó là loại điều trường Ba Lan đang làm một thời gian dài trước với đại số Boolean, nhưng nó thực sự không phải là cách để đi (chắc chắn không phải trong khoa học máy tính).∀∃⋂⋃
Bạn muốn xem những cái này như bộ. Ok, nhưng sau đó chúng ta phải bỏ qua các vấn đề về kích thước và giả vờ rằng có một bộ tất cả các bộ. (Có thể khắc phục các vấn đề về kích thước bằng cách chuyển đến một danh mục khác.) Loại là thực sự thích sản phẩm Descartes
∀ X . T : = ∏ S : S e t T [ X ↦ S ] .
Đó là, một phần tử của ∀ X . T là hàm f từ bộ này sang bộ khác: với mỗi bộ S, nó cung cấp một phần tử∀ x . T
∀ X. T: = ∏S: S e tT[ X↦ S] .
∀ X. T fS loại
T [ x ↦ S ] . Ví dụ, một phần tử của
∀ X . ( X → X ) → ( X → X ) là hàm
f lấy một tập
S và cho hàm số loại
( S → S ) → ( S → S ) . Dưới đây là một số chức năng như vậy:
f 0 ( S ) ( g ) (f( S)T[ x ↦ S]∀ X. ( X→ X) → ( X→ X)fS( S→ S)→(S→S)
Vì vậy, chúng tôi nhận được một cho mỗi số tự nhiên và thật khó để nghĩ ra bất kỳ ví dụ nào khác. (Bài tập: google "Nhà thờ mã hóa số tự nhiên".)
f0( S) ( g) ( x )f1( S) ( g) ( x )f2( S) ( g) ( x )f3( S) ( g) ( x ): = x: = g( x ): = g( g( x ) ): = g( g( g( x ) ) )
Tiếp theo, chúng ta hãy xem xét các loại tồn tại. Thứ nhất, mã hóa đúng về ∀ là
∃ X . T : = ∀ Y . ( ∀ X . ( T → Y ) ) → Y nơi biến Y không xuất hiện trong T ! (Điều này sẽ được đề cập trong TAPL Pierce.) Trước khi chúng ta nhìn vào mã hóa này, chúng ta hãy làm ∃ X . T trực tiếp về bộ. Lần này nó là một coproduct:
∃ X . T :∃∀
∃ X. T: = ∀Y. ( ∀ X. ( T→ Y) ) → Y
YT∃ X. T
Một phần tử của
∃X. Tlà một
cặp(S,a)trong đó
Slà một tập hợp và
alà một phần tử của
T[X↦S]. Một ví dụ sẽ các loại
∃X. (X×X→X), có các phần tử là cặp
(S,m∃ X. T: = ∐S: S e tT[ X↦ S] .
∃ X. T ( S, a )SmộtT[ X↦ S]∃ X. ( X× X→ X) trong đó
S là tập hợp và
m : S × S → S là phép toán nhị phân trên nó. Điều này cũng được gọi là một
magma. Nếu bạn nhận được một chút fancier, bạn có thể thể hiện các cấu trúc nổi tiếng như nhóm và vòng (trước tiên bạn cần phát minh ra
các loại danh tính).
( S, m )Sm : S× S→ S
Chúng ta hãy xem cách mã hóa của về ∀ công trình. Đó là sai để hy vọng rằng chúng tôi sẽ có được một sự bình đẳng giữa ∃ X . T và ∀ Y . ( ∀ X . ( T → Y ) ) → Y (NB: Y là tươi) - chỉ thiết lập lý thuyết sẽ cung cấp cho người mong đợi như vậy. Chúng ta nên mong đợi hai là đẳng cấu . Vì vậy, nhiệm vụ là tìm một song ánh giữa
A : = ∐ S : S e∃∀∃ X. T∀ Y. ( ∀ X. ( T→ Y) ) → YY
và
B:= Π R : S e t ( Π S : S e t (T[X↦S]→R))→R.
Đây là một bài tập trongλ-calculus. Theo một hướng ta có bản đồf:A→Bđược định nghĩa là
f(S,a)(R
A : = ∐S: S e tT[ X↦ S]
B : = ΠR : S e t( ∏S: S e t( T[ X↦ S] → R ) ) → R .
λf: A → B
và trong một bản đồ khác
g : B → A được xác định bởi
g ( φ ) : = φ ( A ) ( λ S . Λ một . ( S , một ) ) .
(Ký hiệu
λ S . Λ một . ( S , một )f( S, a ) ( R ) ( h ) : = h ( S) ( Một )
g: B → Ag( ϕ ) : = ϕ ( A ) ( λ S. λ a . ( S, a ) ) .
λ S. λ a . ( S, a )có nghĩa là chức năng
.) Bây giờ chúng ta có thể kiểm tra xem
f và
g là phần tử nghịch đảo của nhau. Một hướng là dễ dàng:
g ( f ( S , một ) ) = f ( S , một ) ( Một ) ( λ S ' . Λ một ' . ( S ' , một ' ) ) = ( λS↦ một ↦ ( S, a )fg
Hướng khác trông như thế này:
f ( g ( ϕ ) ) ( R ) ( h ) = h ( π 1 ( g ( ϕ ) ) ( π 2 ( g (g( f( S, a ) ) = f( S, Một ) ( Một ) ( λ S'. λ một'. ( S', một') ) = ( Λ S'. λ một'. ( S', một') ( S) ( a ) = ( S, a ) .
Chúng ta có thể đi trên một chút bằng cách viết lại
g ( φ ) để
φ ( A ) ( λ S . Λ một . ( S , một ) ) , nhưng sau đó chúng tôi sẽ gặp khó khăn!
f( g( ϕ ) ) ( R ) ( h ) = h ( π1( g( ϕ ) ) ( π2( g( ϕ ) ) ) .
g( ϕ )φ ( A ) ( λ S. λ a .( S, a ) )
∃∀
∃ x . ϕ ( x )
∀ P: P r o p . (∀x.(Φ(x)⇒P) ) ⇒ P,
PPφ