Kiểu giải thích lý thuyết của Skolemization


8

Giải thích lý thuyết loại / tương đương với Skolemization là gì?

Skolemization chuyển đổi một số công thức thành dạng bình thường Skolem. Hai công thức là tương xứng với nhau.

Hoặc, để nói nó theo thuật ngữ lý thuyết loại: Có một chương trình có một số loại iff có một chương trình có loại này ở dạng bình thường Skolem.

Làm thế nào để các chương trình này liên quan với nhau?


Trong thực tế, tôi đã học đầu tiên về skolemization khi lập trình trong Haskell với các kiểu tồn tại.
Turion

Câu trả lời:


10

Skolemization tương ứng với cái gọi là tiên đề lý thuyết loại, được thảo luận ngắn gọn trong phần 1.6 của cuốn sách HoTT .

ΣΠA:UB:AUC:a:ABaU

ac:(a:Ab:BaCab)((b:a:ABa)a:ACa(ba))

Bằng chứng về điều này rất đơn giản, ví dụ như trong Agda, chúng ta có những điều sau đây (chứng minh sự đẳng cấu thay vì tương đương cho đơn giản bây giờ):

open import Data.Product
open import Function
open import Relation.Binary.PropositionalEquality

iso : Set → Set → Set
iso A B =
  ∃₂ λ (f : A → B)(g : B → A) → (∀ x → f (g x) ≡ x) × (∀ x → g (f x) ≡ x)

ac : ∀ {A : Set}{B : A → Set}{C : ∀ a → B a → Set}
     → iso ((a : A) → Σ (B a) λ b → C a b)
           (Σ ((a : A) → B a) λ b → (a : A) → C a (b a))
ac = (λ f → proj₁ ∘ f , proj₂ ∘ f)
   , (λ {(b , c) a → b a , c a})
   , (λ _ → refl)
   , (λ _ → refl)

Σ

Từ góc độ hoạt động nhiều hơn, điều này tương ứng với nâng lambda , một chuyển đổi chương trình được sử dụng trong trình biên dịch, nâng các định nghĩa thành một phạm vi bên ngoài bằng cách thêm các tham số hàm bổ sung cho các biến bị ràng buộc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.