Question sur le “Didacticiel de mise en œuvre de dépendante lambda calcul typé”
-
29-09-2020 - |
Question
J'ai un léger lutte technique avec cette merveilleux tutoriel.Page 5 le tutoriel parle de typage des règles pour Simplement Tapé Lambdas et présente jugement suivant que dérivables par les règles sur la figure 3.
J'ai été incapable de prouver ni id
ni const
par la même raison.Prenez par exemple l' id
exemple.
- Dire que je suis à la recherche sur le type de règle de contrôle
CHK
.Il dit que pourcheck types
Je dois d'abord effectuer l'inférence et puis comparer le résultat avec ce que j'attends. - Pour faire de l'inférence sur l'application, je dois utiliser la
APP
la règle qui immédiatement me force à en déduire le type de la main gauche du côté de la demande, à savoir(id :: α -> α)
- Faire que je suis en utilisant le
ANN
la règle qui m'oblige à vérifier queα -> α
est un type (et je peux le prouver a pas de problème).Puis j'ai eu cette nuid
symbole et pouvoir prouver qu'il est le type deα -> α
. - Enfin, ici, c'est un problème.Pour ce faire, je vais avoir à utiliser
var
la règle, qui requiert le type deid
pour être placé dans le contexte Gamma explicitement, mais il n'est pas fait, donc la preuve est en train de s'effondrer.
La solution
$\mathsf{id}$ et $\mathsf{const}$ ne sont pas des variables de calcul, mais sucre syntaxique pour $\lambda x ightarrow x$ et $\lambda x ightarrow \lambda y ightarrow x$ respectivement.Ceci est indiqué à la fin du §2.2 et subtilement véhiculée par l'utilisation d'une police sans serif, plutôt que de l'italique (c'est une convention typographique de ce document en particulier, pas d'une convention commune).
Ainsi, par exemple, le type de jugement $$ \alpha ::\ast, y ::\alpha \vdash (\mathsf{id} ::\alpha ightarrow \alpha) \:y :: ightarrow \alpha $$ est également le type de jugement $$ \alpha ::\ast, y ::\alpha \vdash (\lambda x ightarrow x ::\alpha ightarrow \alpha) \:y :: ightarrow \alpha .$$ C'est une autre notation pour le même objet mathématique.