Question sur le “Didacticiel de mise en œuvre de dépendante lambda calcul typé”

cs.stackexchange https://cs.stackexchange.com/questions/128297

  •  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 pour check 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 nu id 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 de id pour être placé dans le contexte Gamma explicitement, mais il n'est pas fait, donc la preuve est en train de s'effondrer.

enter image description here enter image description here

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top