Il existe de nombreuses façons de modéliser le polymorphisme via la théorie des domaines, permettez-moi d'en décrire une qui est facile à comprendre, afin que vous puissiez y penser vous-même. C'est un "modèle PER".
Prenez n'importe quel modèle de -calculus non typé , par exemple un domaine tel que est un retrait de (par exemple, prenez tel que . Soit et la rétraction et la section.λDD→DDDD≅N⊥×(D→D))Λ:D→(D→D)Γ:(D→D)→D
Nous allons interpréter les types comme les relations d'équivalence partielle (PER) sur . Rappelons qu'un PER est une relation symétrique et transitive, mais pas nécessairement réflexive. A chaque type on assigne donc un PER . Considérez comme " est un élément de " et comme " et sont égaux en ce qui concerne ".Dτ∼τx∼τxxτx∼τyxyτ
Nous pouvons avoir certains types de base (mais pas besoin), par exemple si nous nous assurons que est un sous-domaine de via un imbrication alors nous pouvons définir par
N⊥Dι:N→D∼nat
x∼naty⟺∃n∈N.x=ι(n)=y.
Étant donné PERs et , définissez l' espace fonction PER par
∼τ∼σ ∼τ→σ
x∼τ→σy⟺∀z,w∈D.z∼τw⇒Λ(x)(z)∼σΛ(y)(w)
Les termes sont interprétés comme typées termes de que l' on devrait normalement les interpréter .λD
Voici la punchline. Vous pouvez interpréter le polymorphisme comme une intersection de PER, c'est-à-dire:
On peut calculer le PER correspondant à : c'est l'intersection de tous les PER, mais ce sera le PER vide. Calcul de est un exercice intéressant. Calcul de est un exercice difficile (qui m'a occupé pendant une semaine quand j'étais étudiant en théorie des domaines).
x∼∀X.τ(X)y⟺for all PERs ≈, x∼τ(≈)y.
∀X.X∀X.X→X∀X.X→X→X
Si nous voulons une récursivité dans notre langue, nous devons tenir compte des points fixes. Une possibilité est de restreindre les PER à ceux qui contiennent et sont fermés sous suprema de chaînes croissantes. Plus précisément, ne prenez que les PERs pour lesquels⊥D≈
- ⊥D≈⊥D , et
- si et augmentent les chaînes en telles que pour tout , alors .x0≤x1≤x2≤⋯y0≤y1≤y2≤⋯Dxi≈yiisupixi≈supiyi
Nous pouvons maintenant interpréter en appliquant le théorème de Kanster-Tarski sur l'existence de points fixes, tout comme nous le faisons dans la théorie des domaines ordinaires. Cette fois, n'est pas vide, car il contient précisément .fixτ:(τ→τ)→τ∀X.X⊥D