Cours 13: Théorème de Friedman: correction
Nouveau professeur pour cette seconde partie : Michele Pagani
Rappels
En $λ$-calcul simplement typé:
- Types:
- \[A, B \; ≝ \; σ \mid A → B\]
- Termes:
- \[M \; ≝ \; x \mid λx^A. M \mid MN\]
Sémantique dénotationnelle dans $Set$:
- $⟦σ⟧_X = X ∈ Set$
- $⟦A → B⟧_χ = ⟦B⟧_X^{⟦A⟧_X}$
- $⟦x_1:A_1, ⋯, x_n: A_n ⊢ M:B⟧_X = ⟦x_1:A_1⟧_X × ⋯ × ⟦x_n: A_n⟧_X ⟶ ⟦B⟧_X$
Exponentielle dans une CCC:
\[\begin{xy} \xymatrix{ B^A × A \ar[r]^{ev} & B \\ C × A\ar@{.>}[u]^{Λ(f) × id} \ar[ur]_f & } \end{xy}\]Pour le $λ$-calcul simplement typé: on a besoin d’un objet réflexif dans une CCC
\[D \vartriangleright D ⇒ D\]i.e.
tout élément de $D ⇒ D$ est aussi un élément de $D$.
NB: $Set$ n’a pas d’objet réflexif, ce qui a poussé Dana Scott à définir ses domaines de Scott.
Modèles du $λ$-calcul
- $Set$ pour le simplement typé
- $Scott$ (CPOs et fonction Scott-continues): pour le $λ$-calcul typé et non typé
- $Stab$ (espaces cohérents et fonctions stables)
NB: sématnique dénotationnelle: pourquoi?
-
Pour étudier la théorie équationnelle entre les termes:
\[M \sim N ⟺ ⟦Γ ⊢ M⟧ = ⟦Γ ⊢ N⟧\]et parler “d’équivalences de programmes”, et de leurs propriétés partagées
-
on peut introduire de nouvelles primitives dans le calcul:
\[A ⇒ B \; = \; !A \multimap B\]Exemples:
- primitives probabilistes
- computation quantique ⟶ on a besoin de la linéarité (non duplication, etc…)
-
Compilation dans le langage haut-niveau vers un langage bas-niveau: Ex: Categorical Abstract Machine (a donné naissance à CamL) basée sur les catégories cartésiennes closes.
Ex:
\[⟦(λx.x)y⟧ = ev \circ ⟨Λ(π_2^2), π_2^2⟩\]
NB: dans cette seconde partie du cours, on se concentrera surtout sur 1 et 2.
Théorème de Friedman (1973)
Chap. 4 de AMADIO-CURIEN: “Domains and $λ$-calculi” ⟶ théorème 4.5.8
Th (Friedman, 1973): Let $X$ be an infinite set and $⟦_⟧_X$ be the interpretation of the simply typed $λ$-calculus in the CCC Set associating $X$ with the ground type. For any terms $Γ ⊢ M:A$ and $Γ ⊢ N:A$, we have:
\[M =_{βη} N ⟺ ⟦M⟧_X = ⟦N⟧_X\]
NB:
-
on peut alors profiter du fait que travailler avec $⟦M⟧_X$ et $⟦N⟧_X$ est beaucoup plus agréable !
-
pas vrai pour n’importe quelle CCC
$βη$-equivalence
- Congruence:
-
- symetric
- reflexive
- transitive
-
and:
\[\cfrac{M =_{βη} N}{λx. M =_{βη} λx. N} \\ \, \\ \cfrac{M =_{βη} N \qquad P =_{βη} Q}{MP =_{βη} NQ}\]
- $=_{βη}$:
-
is the smallest congruence over $Λ$ s.t.
\[(λx. M)N =_{βη} M \lbrace N/x \rbrace\\ λx.Mx =_{βη} M \text{ if } x∉fv(M)\]
Definition de $⟦_⟧_X$
\[⟦x_1:A_1, ⋯, x_n: A_n ⊢ M:B⟧ ∈ ⟦x_1:A_1⟧ × ⋯ × ⟦x_n: A_n⟧ ⟶ ⟦B⟧\]-
Variables ⟶ projections:
\[⟦x_1: A_1, ⋯, x_n: A_n ⊢ x_i: A_i⟧ = π_i\] -
$λ$-abstractions ⟶ use the adjonction:
\[⟦Γ ⊢ λx^A. M: A → B⟧ = Λ(⟦Γ, x:A ⊢ M:B⟧)\\ = \vec{g} ⟼ (a ⟼ ⟦M⟧(\vec{g}, a))\] -
Application ⟶ pairing:
\[⟦Γ ⊢ MN: B⟧ = ev \circ ⟨⟦Γ ⊢ M: A → B⟧, ⟦Γ ⊢ N: A⟧⟩\\ = \vec{g} ⟼ ⟦M⟧(\vec{g}, ⟦N⟧(\vec{g}))\]
NB: on a fait un effacement dans le premier point, une duplication dans le dernier point.
Démonstration du théorème de Friedman
\[M =_{βη} N \overset{\text{correction}}{⟹} ⟦M⟧_X = ⟦N⟧_X\] \[M =_{βη} N \overset{\text{complétude}}{⟸} ⟦M⟧_X = ⟦N⟧_X\]Correction
\[M =_{βη} N \overset{\text{correction}}{⟹} ⟦M⟧_X = ⟦N⟧_X\]par induction sur la taille de la dérivation de $=_{βη}$
Trois actions possibles :
\[\cfrac{}{(λx.M)N =_{βη} M \lbrace N/x \rbrace}\\ \; \\ \cfrac{x ∉ fv(M)}{λx.M x =_{βη} M}\\ \cfrac{}{M =_{βη} M}\]Le plus délicat: premier cas: $⟦(λx.M)N⟧ = ⟦M \lbrace N/x \rbrace⟧$
Substitution lemma: Let $Γ, x:A ⊢ M:B$ and $Γ ⊢ N:A$, then
\[⟦Γ ⊢ M \lbrace N/x \rbrace: B⟧ = \vec{g} ⟼ ⟦M⟧(\vec{g}, ⟦N⟧(\vec{g}))\]
Proof: By induction on $M$.
Attention: il y a une difficulté pour $⟦λx.Mx⟧ = ⟦M⟧$ (contextes et types omis): on a besoin de montrer que $(a ⟼ ⟦Γ, x:A ⊢ M:B⟧(\vec{g}, a) a) = (a ⟼ ⟦Γ ⊢ M:A→B⟧(\vec{g}, a))$, via
Weakening lemma: si $x ∉ fv(M)$:
\[⟦Γ, x:A ⊢ M:B⟧(\vec{g}, a) = ⟦Γ ⊢ M:B⟧(\vec{g})\]
Complétude
\[M =_{βη} N \overset{\text{complétude}}{⟸} ⟦M⟧_X = ⟦N⟧_X\]Preuve de Friedman: définit
- un modèle syntaxique $S$
-
une famille de relations $\lbrace R^A\rbrace_{A ∈ Types}$
- $R^A ⊆ ⟦A⟧^{Set}_X × ⟦A⟧^S$
- pour tout $M$: $⟦⊢ M:A⟧^{Set} R^A ⟦⊢M:A⟧^S$
-
$R^A$ est fonctionnelle:
\[∀d ∈ ⟦A⟧^{Set}_X, ⟦N⟧, ⟦N'⟧ ∈ ⟦A⟧^S\\ d R^A ⟦N⟧^S \text{ et } d R^A ⟦N⟧^S ⟹ ⟦N⟧^S = ⟦N'⟧^S\] - \[\cfrac{⟦M⟧^S = ⟦N⟧^S}{M =_{βη} N}\]
NB: $R^A$ est un cas particulier de relation logique (logical relation) ⟶ ex: les candidats de réductibilité (on s’intéressait aux termes fortement normalisables au lieu de la relation de $βη$-équivalence) étaient des cas particuliers de relation logique unaire.
Leave a comment