Interpretação teórica do tipo de Skolemization


8

Qual é a interpretação teórica do tipo / equivalente de Skolemization?

A skolemization converte alguma fórmula na forma normal da Skolem. As duas fórmulas são satisfatórias entre si.

Ou, para dizer em termos teóricos do tipo: Existe um programa com algum tipo, se houver um programa com esse tipo na forma normal do Skolem.

Como esses programas se relacionam?


De fato, eu aprendi primeiro sobre a skolemization ao programar em Haskell com tipos existenciais.
Turion

Respostas:


10

A skolemization corresponde ao chamado axioma teórico de escolha do tipo, que é brevemente discutido na seção 1.6 do livro HoTT .

ΣΠUMA:vocêB:UMAvocêC:uma:UMABumavocê

umac:(uma:UMAb:BumaCumab)((b:uma:UMABuma)uma:UMACuma(buma))

A prova disso é muito simples, por exemplo, no Agda, temos o seguinte (provando isomorfismo em vez de equivalência por simplicidade agora):

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)

Σ

De uma perspectiva mais operacional, isso corresponde ao levantamento lambda , uma transformação de programa usada em compiladores, que eleva as definições em um escopo externo, adicionando parâmetros de função extras para variáveis ​​ligadas.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.