Todo sistema de tipos puro fracamente normalizante também é fortemente normalizante?
Nos ramos da lógica matemática conhecidos como teoria da prova e teoria dos tipos, um sistema de tipos puro (PTS), anteriormente conhecido como sistema de tipos generalizado (GTS), é uma forma de cálculo lambda tipado que permite um número arbitrário de sortes e dependências entre quaisquer delas. O arcabouço pode ser visto como uma generalização do cubo lambda de Barendregt, no sentido de que todos os cantos do cubo podem ser representados como instâncias de um PTS com apenas duas sortes.[1][2] De fato, Barendregt (1991) formulou seu cubo neste cenário.[3] Sistemas de tipos puros podem obscurecer a distinção entre tipos e termos e colapsar a hierarquia de tipos, como é o caso do cálculo das construções, mas isso não é geralmente o caso, por exemplo, o cálculo lambda simplesmente tipado permite apenas que termos dependam de termos.
Sistemas de tipos puros foram introduzidos independentemente por Stefano Berardi (1988) e Jan Terlouw (1989).[1][2] Barendregt os discutiu extensivamente em seus artigos subsequentes.[4] Em sua tese de doutorado,[5] Berardi definiu um cubo de lógicas construtivas análogo ao cubo lambda (essas especificações são não-dependentes). Uma modificação deste cubo foi posteriormente chamada de L-cubo por Herman Geuvers, que em sua tese de doutorado estendeu a correspondência de Curry–Howard a este cenário.[6] Baseando-se nessas ideias, G. Barthe e outros definiram sistemas de tipos puros clássicos (CPTS) adicionando um operador de dupla negação.[7] Similarmente, em 1998, Tijn Borghuis introduziu os sistemas de tipos puros modais (MPTS).[8] Roorda discutiu a aplicação de sistemas de tipos puros à programação funcional; e Roorda e Jeuring propuseram uma linguagem de programação baseada em sistemas de tipos puros.[9]
Os sistemas do cubo lambda são todos conhecidos por serem fortemente normalizantes. Sistemas de tipos puros em geral não precisam ser, por exemplo, o Sistema U do paradoxo de Girard não é. (Grosso modo, Girard encontrou sistemas puros nos quais se pode expressar a sentença "os tipos formam um tipo"). Além disso, todos os exemplos conhecidos de sistemas de tipos puros que não são fortemente normalizantes também não são (fracamente) normalizantes: eles contêm expressões que não têm formas normais, assim como o cálculo lambda não tipado
. É um grande problema em aberto na área se este é sempre o caso, isto é, se um PTS (fracamente) normalizante sempre tem a propriedade de normalização forte. Isso é conhecido como a conjectura de Barendregt–Geuvers–Klop (em homenagem a Henk Barendregt, Herman Geuvers e Jan Willem Klop).[10]
Definição
editarUm sistema de tipos puro é definido por um triplo onde é o conjunto de sortes, é o conjunto de axiomas, e é o conjunto de regras. A tipagem em sistemas de tipos puros é determinada pelas seguintes regras, onde é qualquer sorte:[4]
Implementações
editarAs seguintes linguagens de programação têm sistemas de tipos puros:
Ver também
editar- Sistema U – um exemplo de PTS inconsistente
- Cálculo λμ usa uma abordagem diferente para controle do que CPTS
Referências
editar- ↑ a b Pierce, Benjamin (2002). Types and Programming Languages. [S.l.]: MIT Press. p. 466. ISBN 0-262-16209-1
- ↑ a b Kamareddine, Fairouz D.; Laan, Twan; Nederpelt, Rob P. (2004). «Section 4c: Pure type systems». A modern perspective on type theory: from its origins until today. [S.l.]: Springer. p. 116. ISBN 1-4020-2334-0
- ↑ Barendregt, H. P. (1991). «Introduction to generalized type systems». Journal of Functional Programming. 1 (2): 125–154. doi:10.1017/s0956796800020025. hdl:2066/17240
- ↑ a b Barendregt, H. (1992). «Lambda calculi with types». In: Abramsky, S.; Gabbay, D.; Maibaum, T. Handbook of Logic in Computer Science. [S.l.]: Oxford Science Publications
- ↑ Berardi, S. (1990). Type dependence and Constructive Mathematics (Tese de PhD). University of Torino
- ↑ Geuvers, H. (1993). Logics and Type Systems (Tese de PhD). University of Nijmegen. CiteSeerX 10.1.1.56.7045
- ↑ Barthe, G.; Hatcliff, J.; Sørensen, M. H. (1997). «A Notion of Classical Pure Type System». Electronic Notes in Theoretical Computer Science. 6: 4–59. CiteSeerX 10.1.1.32.1371
. doi:10.1016/S1571-0661(05)80170-7
- ↑ Borghuis, Tijn (1998). «Modal Pure Type Systems». Journal of Logic, Language and Information. 7 (3): 265–296. doi:10.1023/A:1008254612284
- ↑ Jan-Willem Roorda; Johan Jeuring. «Pure Type Systems for Functional Programming». Consultado em 29 de agosto de 2010. Arquivado do original em 2 de outubro de 2011 A tese de mestrado de Roorda (linkada a partir da página citada) também contém uma introdução geral aos sistemas de tipos puros.
- ↑ Sørensen, Morten Heine; Urzyczyn, Paweł (2006). «Pure type systems and the lambda cube § 14.7». Lectures on the Curry–Howard isomorphism. [S.l.]: Elsevier. p. 358. ISBN 0-444-52077-5
- ↑ SAGE
- ↑ Yarrow
- ↑ Henk 2000
- ↑ «6.4.14. Kind polymorphism — Glasgow Haskell Compiler 9.15.20260123 User's Guide»
- ↑ Weirich et al., System FC with Explicit Kind Equality, ICFP '13: "Portanto, seguimos sistemas de tipos puros (Barendregt 1992) e unificamos a sintaxe de tipos e kinds, permitindo reutilizar coerções de tipo como coerções de kind. [...] Além disso, nossas regras incluem o axioma *:* o que significa que não há distinção real entre tipos e kinds."
Bibliografia
editar- Berardi, Stefano (1988). Towards a mathematical analysis of the Coquand–Huet calculus of constructions and the other systems in Barendregt's cube (Relatório técnico). Department of Computer Science, CMU, and Dipartimento Matematica, Universita di Torino. CMU-CS-88-131
- Terlouw, J. (1989). «Een nadere bewijstheoretische analyse van GSTTs». Netherlands: University of Nijmegen (em neerlandês)
Leitura adicional
editar- Schmidt, David A. (1994). «§ 8.3 Generalized Type Systems». The structure of typed programming languages. [S.l.]: MIT Press. pp. 255–8. ISBN 0-262-19349-3
Ligações externas
editar- Sistema de tipos puro in nLab
- Jones, Roger Bishop (1999). «Visão geral de Sistemas de Tipos Puros»