Hay muchas maneras de modelar el polimorfismo a través de la teoría de dominios, permítanme describir uno que es fácil de entender, para que pueda pensarlo usted mismo. Es un "modelo PER".
Tome cualquier modelo de lo no tipificado λ-cálculo, por ejemplo un dominio D tal que D→D es un retracto de D (por ejemplo, tome D tal que D≅N⊥×(D→D)). DejarΛ:D→(D→D) y Γ:(D→D)→D ser la retracción y la sección, respectivamente.
Vamos a interpretar los tipos como relaciones de equivalencia parcial (PER) en D. Recuerde que un PER es una relación simétrica y transitiva, pero que no necesita ser reflexiva. A cada tipoτ así asignamos un PER ∼τ. Pensar enx∼τx como "x es un elemento de τ"y x∼τy como "x y y son iguales hasta τ está preocupado ".
Podemos tener algunos tipos básicos (pero no es necesario), por ejemplo, si nos aseguramos de que N⊥ es un subdominio de D a través de una incrustación ι:N→D entonces podemos definir ∼nat por
x∼naty⟺∃n∈N.x=ι(n)=y.
PERs dados ∼τ y ∼σ, defina el espacio de funciones PER ∼τ→σ por
x∼τ→σy⟺∀z,w∈D.z∼τw⇒Λ(x)(z)∼σΛ(y)(w)
Los términos se interpretan como sin tipo λ-cálculos como uno los interpretaría normalmente en D.
Aquí está el remate. Puede interpretar el polimorfismo como una intersección de PER, es decir:
x∼∀X.τ(X)y⟺for all PERs ≈, x∼τ(≈)y.
Podemos calcular el PER correspondiente a
∀X.X: es la intersección de todos los PER, pero será el PER vacío. Calculador
∀X.X→XEs un ejercicio interesante. Calculador
∀X.X→X→X es un ejercicio difícil (que me mantuvo ocupado durante una semana cuando era estudiante de teoría de dominios).
Si queremos recurrencia en nuestro idioma, entonces debemos tener en cuenta los puntos fijos. Una posibilidad es restringir los PER a aquellos que contienen⊥Dy están cerrados bajo suprema de cadenas crecientes. Más precisamente, tome solo esos PER≈ para cual
- ⊥D≈⊥Dy
- Si x0≤x1≤x2≤⋯ y y0≤y1≤y2≤⋯ están aumentando las cadenas en D tal que xi≈yi para todos i, entonces supixi≈supiyi.
Ahora podemos interpretar aplicando el teorema de Kanster-Tarski sobre la existencia de puntos fijos, tal como lo hacemos en la teoría del dominio ordinario. Esta vez, no está vacío, ya que contiene precisamente .fixτ:(τ→τ)→τ∀X.X⊥D