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?

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

András Kovács
quelle