Je sais que différents auteurs utilisent une notation différente pour représenter la sémantique du langage de programmation. En fait, Guy Steele aborde ce problème dans une vidéo intéressante .
J'aimerais savoir si quelqu'un sait si le principal opérateur de tourniquet a une signification bien reconnue. Par exemple, je ne comprends pas l' opérateur principal au début du dénominateur de ce qui suit:
Quelqu'un peut-il m'aider à comprendre? Merci.
type-theory
denotational-semantics
Jim Newton
la source
la source
type-checking
Réponses:
Sur la gauche du tourniquet, vous pouvez trouver le contexte local, une liste finie d'hypothèses sur les types de variables à portée de main.
Au- dessus, peut être nul, . Cela signifie qu'aucune hypothèse sur les variables n'est faite. Habituellement, cela signifie que est un terme fermé (sans variables libres) ayant le type .⊢ e : T e Tn ⊢e:T e T
Souvent, la règle que vous mentionnez est écrite sous une forme plus générale, où il peut y avoir plus d'hypothèses que celle mentionnée dans la question.
Ici, représente n'importe quel contexte, et représente son extension obtenue en ajoutant l'hypothèse supplémentaire à la liste . Il est courant d'exiger que n'apparaisse pas dans , afin que l'extension n'entre pas en conflit avec une hypothèse précédente.Γ , x : T 1 x : T 1 Γ x ΓΓ Γ,x:T1 x:T1 Γ x Γ
la source
En complément des autres réponses, notons qu'il existe trois niveaux d '«implication» dans le typage des dérivations. Et la même remarque vaut pour les dérivations logiques puisqu'il y a en fait une correspondance entre les deux (appelée la correspondance de Curry-Howard).
La première implication est la flèche qui apparaît dans les formules, et elle correspond à l'implication logique dans une formule (ou un type de fonction pour le -calculus).λ
La deuxième implication est matérialisée par le symbole du tourniquet, et signifie "en supposant que chaque formule à gauche, la formule à droite tient". En particulier, la règle que vous donnez indique comment on doit prouver une implication: pour prouver , alors on doit prouver sous l'hypothèse que est vraie. En termes de -calculus, pour prouver que a de type , il faut montrer que a de type , en supposant que est une variable de type (voir la correspondance?).A⇒B B A λ λx.t A→B t B x A
Le troisième niveau d'implication est matérialisé par la barre horizontale et signifie «si chaque prémisse (éléments en haut) est vraie, alors la conclusion (l'élément en bas) est vraie». Vous pouvez lier cela à l'interprétation de la règle de frappe pour -abstraction que vous avez donnée (voir l'explication dans le paragraphe précédent).λ
la source
Dans les systèmes de vérification de type, le ( ) représente la relation ternaire entre les environnements de type, les expressions et les types: .⊢ ⊢Env×Exp×Typ
Dans votre exemple, l'expression est tapée au type wrt. à un environnement de type ayant une hypothèse de type mappant à une variable de typet2 T2 T1 x
Dans ce contexte, un environnement de type est une fonction partielle qui attribue des types à des variables, généralement désignées par oùΓ Γ∈Env:Var⇀Typ
A noter que, l'opérateur se réserve ses fonctionnalités quel que soit l'endroit où il apparaît, soit dans la prémisse soit dans la conclusion de la règle.
la source
Dans chaque situation que j'ai vue, signifie qu'il y a une preuve de supposant que est vrai . Si est vide, cela signifie que est une tautologie: il a une preuve sans avoir besoin d'hypothèses.X⊢Y Y X X Y
la source