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?

Manuel Jacob
sumber
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.

András Kovács
sumber