¿Qué significa el operador principal de torniquetes?

12

Sé que diferentes autores usan notación diferente para representar la semántica del lenguaje de programación. De hecho, Guy Steele aborda este problema en un video interesante .

Me gustaría saber si alguien sabe si el operador principal de torniquetes tiene un significado bien reconocido. Por ejemplo, no entiendo el operador principal al comienzo del denominador de lo siguiente:

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

¿Puede alguien ayudarme a entender? Gracias.

Jim Newton
fuente
Relacionado
leftaroundabout
Wow, esta pregunta tiene más de "1k" puntos de vista, que es más que la suma de puntos de vista de las otras 29 preguntas nuevas! Como he comprobado, ni la etiqueta de "teoría de tipo" ni la etiqueta de "semántica denotacional" se encuentran entre las primeras 50 etiquetas populares. Tengo curiosidad sobre la causa detrás de este fenómeno. No tengo idea. @DW? ¿Tengo una meta pregunta?
John L.
Si no me equivoco, debe mover el operador del torniquete ( ), en la conclusión de la regla, entre y . También agregaría la etiquetaλ x : T 1 t 2λx:T1t2type-checking
mchar
3
@ Apass.Jack Terminó en Hot Network Questions, por lo que está recibiendo más atención debido a eso.
JAB

Respuestas:

20

A la izquierda del torniquete, puede encontrar el contexto local, una lista finita de supuestos sobre los tipos de variables disponibles.

x1:T1,,xn:Tne:T

Arriba, puede ser cero, lo que resulta en . Esto significa que no se hacen suposiciones sobre las variables. Por lo general, significa esto que es un término cerrado (sin ningún tipo de variables libres) que tiene tipo .e : T e Tne:TeT

A menudo, la regla que menciona está escrita en una forma más general, donde puede haber más hipótesis que la mencionada en la pregunta.

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

Aquí, representa cualquier contexto, y representa su extensión obtenida al agregar la hipótesis adicional a la lista . Es común requerir que no aparezca en , de modo que la extensión no "entre en conflicto" con un supuesto anterior.ΓΓ,x:T1x:T1ΓxΓ

chi
fuente
7

Como complemento a las otras respuestas, tenga en cuenta que hay tres niveles de "implicación" en las derivaciones de escritura. Y el mismo comentario se aplica a las derivaciones lógicas, ya que en realidad existe una correspondencia entre los dos (llamada correspondencia de Curry-Howard).

La primera implicación es la flecha que aparece en las fórmulas, y corresponde a la implicación lógica en una fórmula (o un tipo de función para el cálculo ).λ

La segunda implicación se materializa mediante el símbolo del torniquete, y significa "suponiendo que cada fórmula de la izquierda, la fórmula de la derecha se mantenga". En particular, la regla que das dice cómo se debe probar una implicación: para probar , entonces se debe probar bajo el supuesto de que cumple. En términos del cálculo , para demostrar que tiene tipo , uno debe mostrar que tiene tipo , suponiendo que es una variable de tipo (¿ve la correspondencia?).ABBAλλx.tABtBxA

El tercer nivel de implicación se materializa mediante la barra horizontal, y significa "si cada premisa (elementos en la parte superior) se cumple, entonces la conclusión (el elemento en la parte inferior) se cumple". Puede vincular eso a la interpretación de la regla de escritura para -abstracción que proporcionó (consulte la explicación en el párrafo anterior).λ

Rodolphe Lepigre
fuente
3

En los sistemas de verificación de tipos, ( ) representa la relación ternaria sobre entornos de tipos, expresiones y tipos: .Env×Exp×Typ

En su ejemplo, la expresión se escribe en el tipo wrt. a un entorno de tipo que tiene una asignación de suposición de tipo a alguna variable de tipot2T2 T1x

En este contexto, un entorno de tipo es una función parcial que asigna tipos a variables, generalmente denotadas con donde ΓΓEnv:VarTyp

Tenga en cuenta que el operador se reserva su funcionalidad independientemente de dónde aparezca, ya sea en la premisa o en la conclusión de la regla.

mchar
fuente
-1

En cada situación que he visto, significa que hay una prueba de que  asume que  cumple. Si  está vacío, eso significa que  es una tautología: tiene una prueba sin necesidad de suposiciones.XYYXXY

David Richerby
fuente
1
pero si lo que dices es cierto, esto es extraño porque eso también es lo que significa la barra horizontal, ¿verdad? Que si la parte superior es verdadera, entonces la parte inferior es verdadera. Por lo tanto, en efecto, significaría que si es verdadero, entonces es incondicionalmente verdadero. XYXY
Jim Newton
1
La barra horizontal significa que la cosa en la parte inferior es una deducción inmediata de la cosa en la parte superior. Aunque estoy de acuerdo en que se ve muy extraño en su ejemplo que una verdad incondicional se deriva de una condicional ...
David Richerby
La teoría de tipos no es lógica. Por supuesto, está relacionado de muchas maneras y (hasta cierto punto intencionalmente) usa una notación similar, pero ciertamente no hay una conexión a priori a la relación de demostrabilidad, y a menudo tampoco hay una conexión a posteriori (al menos no a una lógica remotamente razonable). Tal como está escrita, la respuesta es, en el mejor de los casos, engañosa porque sugiere que " " es una fórmula que prácticamente nunca está en la teoría de tipos, por ejemplo, un lenguaje que contiene fórmulas como es generalmente no se describe y es a menudo imposible en una meta-lógica estándar, por ejemplo, para el cálculo lambda lineal. x:T1(x:T1)(y:T2)
Derek Elkins salió del SE
@DerekElkins Es un sistema de prueba y los sistemas de prueba son lógicos. es precisamente una proposición, y no es más que la afirmación de que la proposición se cumple cuando cumple. El hecho de que las disyunciones de proposiciones no sean fórmulas es simplemente una restricción de la sintaxis de la lógica. x:TΓx:TΓ
David Richerby
No es solo disyunción. Ninguno de , o tampoco son fórmulas. ¿O estás diciendo que es una lógica que solo tiene proposiciones atómicas? Mencioné la lógica lineal como ejemplo. En lógica lineal ordenada, puede ser muy fácil que mantenga mientras que no. ¿A qué conectivos corresponden la coma y que toman los "valores de verdad" de , y y producen el comportamiento anterior? Hay una opción si la meta-lógica también es una lógica lineal ordenada, pero no explicamos nada. ( 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 salió del SE