Articulo de referencia

Sistema de tipos puros

Problema sin resolver en informática ¿Todo sistema de tipos puros débilmente normalizador es también fuertemente normalizador? Más problemas sin resolver en informática En las r...

Problema sin resolver en informática
¿Todo sistema de tipos puros débilmente normalizador es también fuertemente normalizador?

En las ramas de la lógica matemática conocidas como teoría de la demostración y teoría de tipos , un sistema de tipos puros ( PTS ), anteriormente conocido como sistema de tipos generalizado ( GTS ), es una forma de cálculo lambda tipado que permite un número arbitrario de clases y dependencias entre cualquiera de ellas. El marco puede verse como una generalización del cubo lambda de Barendregt , en el sentido de que todos los vértices del cubo pueden representarse como instancias de un PTS con solo dos clases. [ 1 ] [ 2 ] De hecho, Barendregt (1991) enmarcó su cubo en este contexto. [ 3 ] Los sistemas de tipos puros pueden oscurecer la distinción entre tipos y términos y colapsar la jerarquía de tipos , como es el caso con el cálculo de construcciones , pero este no es el caso en general, por ejemplo, el cálculo lambda simplemente tipado permite que solo los términos dependan de otros términos.

Los sistemas de tipos puros fueron introducidos independientemente por Stefano Berardi (1988) y Jan Terlouw (1989). [ 1 ] [ 2 ] Barendregt los analizó extensamente en sus trabajos posteriores. [ 4 ] En su tesis doctoral, [ 5 ] Berardi definió un cubo de lógicas constructivas similar al cubo lambda (estas especificaciones no son dependientes). Una modificación de este cubo fue posteriormente denominada cubo L por Herman Geuvers, quien en su tesis doctoral extendió la correspondencia de Curry-Howard a este contexto. [ 6 ] Basándose en estas ideas, G.  Barthe y otros definieron los sistemas de tipos puros clásicos (CPTS) mediante la adición de un operador de doble negación . [ 7 ] De manera similar, en 1998, Tijn Borghuis introdujo los sistemas de tipos puros modales (MPTS). [ 8 ] Roorda ha analizado la aplicación de los sistemas de tipos puros a la programación funcional ; y Roorda y Jeuring han propuesto un lenguaje de programación basado en sistemas de tipos puros. [ 9 ]

Se sabe que todos los sistemas del cubo lambda son fuertemente normalizadores . Los sistemas de tipos puros en general no tienen por qué serlo; por ejemplo, el Sistema U de la paradoja de Girard no lo es. (En términos generales, Girard encontró sistemas puros en los que se puede expresar la frase "los tipos forman un tipo"). Además, todos los ejemplos conocidos de sistemas de tipos puros que no son fuertemente normalizadores ni siquiera son (débilmente) normalizadores : contienen expresiones que no tienen formas normales , al igual que el cálculo lambda sin tipos . Es un problema abierto importante en el campo determinar si esto siempre es así, es decir, si un PTS (débilmente) normalizador siempre tiene la propiedad de normalización fuerte. Esto se conoce como la conjetura de Barendregt-Geuvers-Klop (llamada así por Henk Barendregt , Herman Geuvers y Jan Willem Klop ). [ 10 ]

Definición

Un sistema de tipos puros se define mediante una tripleta(S,A,R){\textstyle ({\mathcal {S}},{\mathcal {A}},{\mathcal {R}})}dóndeS{\textstyle {\mathcal {S}}}es el conjunto de tipos,AS2{\textstyle {\mathcal {A}}\subseteq {\mathcal {S}}^{2}}es el conjunto de axiomas, yRS3{\textstyle {\mathcal {R}}\subseteq {\mathcal {S}}^{3}}es el conjunto de reglas. La tipificación en sistemas de tipos puros está determinada por las siguientes reglas, dondes{\textstyle s}es de cualquier tipo: [ 4 ]

(s1,s2)As1:s2(axioma){\displaystyle {\frac {(s_{1},s_{2})\in {\mathcal {A}}}{\vdash s_{1}:s_{2}}}\quad {\text{(axioma)}}}

ΓA:sincógnitadom(Γ)Γ,incógnita:Aincógnita:A(comenzar){\displaystyle {\frac {\Gamma \vdash A:s\quad x\notin {\text{dom}}(\Gamma )}{\Gamma ,x:A\vdash x:A}}\quad {\text{(inicio)}}}

ΓA:BΓdo:sincógnitadom(Γ)Γ,incógnita:doA:B(debilitación){\displaystyle {\frac {\Gamma \vdash A:B\quad \Gamma \vdash C:s\quad x\notin {\text{dom}}(\Gamma )}{\Gamma ,x:C\vdash A:B}}\quad {\text{(debilitamiento)}}}

ΓA:s1Γ,incógnita:AB:s2(s1,s2,s3)RΓΠincógnita:A.B:s3(producto){\displaystyle {\frac {\Gamma \vdash A:s_{1}\quad \Gamma ,x:A\vdash B:s_{2}\quad (s_{1},s_{2},s_{3})\in {\mathcal {R}}}{\Gamma \vdash \Pi x:AB:s_{3}}}\quad {\text{(producto)}}}

Γdo:Πincógnita:A.BΓa:AΓdoa:B[incógnita:=a](solicitud){\displaystyle {\frac {\Gamma \vdash C:\Pi x:AB\quad \Gamma \vdash a:A}{\Gamma \vdash Ca:B[x:=a]}}\quad {\text{(aplicación)}}}

Γ,incógnita:Ab:BΓΠincógnita:A.B:sΓλincógnita:A.b:Πincógnita:A.B(abstracción){\displaystyle {\frac {\Gamma ,x:A\vdash b:B\quad \Gamma \vdash \Pi x:AB:s}{\Gamma \vdash \lambda x:Ab:\Pi x:AB}}\quad {\text{(abstracción)}}}

ΓA:BB=βBΓB:sΓA:B(conversión){\displaystyle {\frac {\Gamma \vdash A:B\quad B=_{\beta }B'\quad \Gamma \vdash B':s}{\Gamma \vdash A:B'}}\quad {\text{(conversión)}}}

Implementaciones

Los siguientes lenguajes de programación tienen sistemas de tipos puros:

Véase también

Notas

  1. 1 2 Pierce , Benjamin (2002). Tipos y lenguajes de programación . MIT Press. pág. 466. ISBN  0-262-16209-1.
  2. 1 2 Kamareddine, Fairouz D.; Laan, Twan; Nederpelt, Rob P. (2004). "Sección 4c: Sistemas de tipos puros". Una perspectiva moderna sobre la teoría de tipos: desde sus orígenes hasta la actualidad . Springer. pág. 116. ISBN  1-4020-2334-0.
  3. Barendregt, HP (1991). "Introducción a los sistemas de tipos generalizados" . Journal of Functional Programming . 1 (2): 125– 154. doi : 10.1017/s0956796800020025 . hdl : 2066/17240 . S2CID 44757552 . 
  4. 1 2 Barendregt, H. (1992). "Cálculos lambda con tipos" . En Abramsky, S.; Gabbay, D.; Maibaum, T. (eds.). Manual de lógica en informática . Oxford Science Publications .
  5. Berardi, S. (1990). Dependencia de tipos y matemáticas constructivas (tesis doctoral). Universidad de Turín .
  6. Geuvers, H. (1993). Lógicas y sistemas de tipos (tesis doctoral). Universidad de Nijmegen . CiteSeerX 10.1.1.56.7045 . 
  7. Barthe, G.; Hatcliff, J.; Sørensen, MH (1997). "Una noción de sistema de tipos puros clásicos". Electronic Notes in Theoretical Computer Science . 6 : 4–59 . CiteSeerX 10.1.1.32.1371 . doi : 10.1016/S1571-0661(05)80170-7 . 
  8. Borghuis, Tijn (1998). "Sistemas modales de tipos puros". Journal of Logic, Language and Information . 7 (3): 265– 296. doi : 10.1023/A:1008254612284 . S2CID 5067584 . 
  9. Jan-Willem Roorda; Johan Jeuring. "Sistemas de tipos puros para programación funcional" . Archivado del original el 2 de octubre de 2011. Consultado el 29 de agosto de 2010 . La tesis de maestría de Roorda (enlace disponible en la página citada) también contiene una introducción general a los sistemas de tipos puros.
  10. Sørensen, Morten Heine; Urzyczyn, Paweł (2006). «Sistemas de tipos puros y el cubo lambda § 14.7» . Lecciones sobre el isomorfismo de Curry-Howard . Elsevier. pág. 358. ISBN  0-444-52077-5.
  11. SAGE
  12. Milenrama
  13. Henk 2000
  14. "6.4.14. Polimorfismo de tipos — Guía del usuario del compilador Glasgow Haskell 9.15.20260123" .
  15. Weirich et al., System FC with Explicit Kind Equality, ICFP '13: "Por lo tanto, seguimos los sistemas de tipos puros (Barendregt 1992) y unificamos la sintaxis de tipos y clases, lo que nos permite reutilizar las coerciones de tipo como coerciones de clase. [...] Además, nuestras reglas incluyen el axioma *:*, lo que significa que no existe una distinción real entre tipos y clases."

Referencias

  • Berardi, Stefano (1988). Hacia un análisis matemático del cálculo de construcciones de Coquand-Huet y los demás sistemas del cubo de Barendregt (Informe técnico). Departamento de Ciencias de la Computación, CMU y Dipartimento Matematica, Universita di Torino. CMU-CS-88-131.
  • Terlouw, J. (1989). "Een nadere bewijstheoretische analice van GSTT" (Documento) (en holandés). Países Bajos: Universidad de Nijmegen.

Lecturas adicionales

  • Schmidt, David A. (1994). «§ 8.3 Sistemas de tipos generalizados» . La estructura de los lenguajes de programación tipados . MIT Press. págs. 255–258 . ISBN  0-262-19349-3.
  • Sistema de tipo puro en el laboratorio n
  • Jones, Roger Bishop (1999). "Descripción general de los sistemas de tipos puros" .