Interpretasi tipe-teoretis dari Skolemisasi


8

Apa interpretasi tipe-teoretik / ekuivalen dari Skolemisasi?

Skolemisasi mengubah beberapa formula menjadi bentuk normal Skolem. Kedua formula itu sama-sama memuaskan.

Atau, untuk mengatakannya dalam istilah tipe-teoretik: Ada program yang memiliki beberapa tipe jika ada program yang memiliki tipe ini dalam bentuk normal Skolem.

Bagaimana hubungan program-program ini satu sama lain?


Sebenarnya saya belajar dulu tentang skolemisasi ketika pemrograman di Haskell dengan tipe eksistensial.
Turion

Jawaban:


10

Skolemisasi berhubungan dengan apa yang disebut sebagai aksioma teoretik pilihan, yang secara singkat dibahas dalam bagian 1.6 buku HoTT .

Ini memberikan kesetaraan di mana kita dapat bertukar tipe Σ dan Π . Dengan asumsi SEBUAH:U , B:SEBUAHU dan C:Sebuah:SEBUAHBSebuahU , kami memiliki kesetaraan:

Sebuahc:(Sebuah:SEBUAHb:BSebuahCSebuahb)((b:Sebuah:SEBUAHBSebuah)Sebuah:SEBUAHCSebuah(bSebuah))

Buktinya sangat sederhana, misalnya dalam Agda kita memiliki yang berikut ini (membuktikan isomorfisme bukan kesetaraan untuk kesederhanaan sekarang):

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)

Dari kiri ke kanan sepanjang kesetaraan, kami mengonversi variabel eksistensial menjadi fungsi yang abstrak di atas variabel universal dalam lingkup. Kita juga bisa menggunakan ini secara iteratif, untuk memindahkan semua -s dari tipe campuran-kuantitatif ke awalan.Σ

Dari perspektif yang lebih operasional, ini terkait dengan lambda lifting , sebuah transformasi program yang digunakan dalam kompiler, yang mengangkat definisi ke dalam lingkup luar dengan menambahkan parameter fungsi ekstra untuk variabel terikat.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.