Que signifie le principal opérateur de tourniquet?

12

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:

x:T1t2:T2λx:T1.t2 : T1T2

Quelqu'un peut-il m'aider à comprendre? Merci.

Jim Newton
la source
Related
leftaroundabout
Wow, cette question a plus de vues "1k", ce qui est plus que la somme des vues de toutes les 29 autres nouvelles questions! Comme je l'ai vérifié, ni la balise "type-theory" ni la balise "denotational-semantics" ne figurent parmi les 50 premières balises populaires. Je suis curieux de connaître la cause de ce phénomène. Je n'en ai aucune idée. @DW? Ai-je une méta-question?
John L.
Si je ne me trompe pas, vous devez déplacer l'opérateur de tourniquet ( ), dans la conclusion de la règle, entre et . Je voudrais également ajouter la baliseλ x : T 1 t 2λx:T1t2type-checking
mchar
3
@ Apass.Jack Il s'est retrouvé dans les questions de réseau à chaud et attire donc plus l'attention à cause de cela.
JAB

Réponses:

20

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.

x1:T1,,xn:Tne:T

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 Tne:TeT

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.

Γ,x:T1t:T2Γ(λx:T1.t):T1T2

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:T1x:T1ΓxΓ

chi
la source
7

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?).ABBAλλx.tABtBxA

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).λ

Rodolphe Lepigre
la source
3

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 typet2T2 T1x

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:VarTyp

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.

mchar
la source
-1

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.XYYXXY

David Richerby
la source
1
mais si ce que vous dites est vrai, c'est étrange parce que c'est aussi ce que signifie la barre horizontale, non? Que si le haut est vrai, le bas est vrai. Ainsi, en effet, le signifierait que si le est vrai, alors est inconditionnellement vrai. XYXY
Jim Newton
1
La barre horizontale signifie que la chose en bas est une déduction immédiate de la chose en haut. Bien que je convienne qu'il semble très étrange dans votre exemple qu'une vérité inconditionnelle soit dérivée d'une vérité conditionnelle ...
David Richerby
La théorie des types n'est pas logique. Il est bien sûr lié de nombreuses manières et (dans une certaine mesure intentionnellement) utilise une notation similaire, mais il n'y a certainement pas de connexion a priori à la relation de provabilité, et souvent pas non plus de connexion a posteriori (du moins pas à une logique à distance raisonnable). Tel qu'écrit, la réponse est, au mieux, trompeuse car elle suggère que " " est une formule qui ne l'est pratiquement jamais dans la théorie des types, par exemple un langage contenant des formules comme est généralement non décrit et est souvent impossible dans une méta-logique standard, par exemple pour le calcul lambda linéaire. x:T1(x:T1)(y:T2)
Derek Elkins a quitté le SE
@DerekElkins C'est un système de preuve et les systèmes de preuve sont des logiques. est précisément une proposition, et n'est rien d'autre que la déclaration que la proposition contient quand est . Le fait que les disjonctions de propositions ne soient pas des formules est simplement une restriction de la syntaxe de la logique. x:TΓx:TΓ
David Richerby
Ce n'est pas seulement une disjonction. Aucun de , ou n'est une formule non plus. Ou dites-vous que c'est une logique qui n'a que des propositions atomiques? J'ai cité la logique linéaire comme exemple. Dans une logique linéaire ordonnée, il peut très facilement se produire que valide alors que ne l'est pas. À quels connecteurs la virgule et le correspondent-ils qui prennent les "valeurs de vérité" de , et et produisent le comportement ci-dessus? Il y a une option si la méta-logique est également une logique linéaire ordonnée, mais nous n'expliquons rien. ( x : A ) ( y : B ) ( x : A ) ( y : B ) x : A , y : B t : C y : B , x : A t : C x : A y : B t : C¬(x:A)(x:A)(y:B)(x:A)(y:B)x:A,y:Bt:Cy:B,x:At:Cx:Ay:Bt:C
Derek Elkins a quitté SE le