Typentheoretische Interpretation der Skolemisierung


8

Was ist die typentheoretische Interpretation / Äquivalent der Skolemisierung?

Die Skolemisierung konvertiert einige Formeln in die Skolem-Normalform. Die beiden Formeln sind miteinander nicht zufriedenstellend.

Oder, um es typtypisch auszudrücken: Es gibt ein Programm mit einem Typ, wenn es ein Programm mit diesem Typ in Skolem-Normalform gibt.

In welcher Beziehung stehen diese Programme zueinander?


Tatsächlich habe ich beim Programmieren in Haskell mit existenziellen Typen zuerst etwas über Skolemisierung gelernt.
Turion

Antworten:


10

Die Skolemisierung entspricht dem sogenannten typentheoretischen Axiom der Wahl, das in Abschnitt 1.6 des HoTT-Buches kurz erörtert wird .

ΣΠEIN::U.B.::EINU.C.::ein::EINB.einU.

einc::(ein::EINb::B.einC.einb)((b::ein::EINB.ein)ein::EINC.ein(bein))

Der Beweis dafür ist sehr einfach, z. B. in Agda: Wir beweisen der Einfachheit halber Isomorphismus statt Äquivalenz):

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)

Σ

Aus operativer Sicht entspricht dies dem Lambda-Lifting , einer in Compilern verwendeten Programmtransformation, bei der Definitionen durch Hinzufügen zusätzlicher Funktionsparameter für gebundene Variablen in einen äußeren Bereich gehoben werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.