Problema de ciência da computação em aberto:

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

editar

Um 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

editar

As 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
  1. a b Pierce, Benjamin (2002). Types and Programming Languages. [S.l.]: MIT Press. p. 466. ISBN 0-262-16209-1 
  2. 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 
  3. Barendregt, H. P. (1991). «Introduction to generalized type systems». Journal of Functional Programming. 1 (2): 125–154. doi:10.1017/s0956796800020025. hdl:2066/17240Acessível livremente 
  4. 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 
  5. Berardi, S. (1990). Type dependence and Constructive Mathematics (Tese de PhD). University of Torino 
  6. Geuvers, H. (1993). Logics and Type Systems (Tese de PhD). University of Nijmegen. CiteSeerX 10.1.1.56.7045Acessível livremente 
  7. 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.1371Acessível livremente. doi:10.1016/S1571-0661(05)80170-7 
  8. Borghuis, Tijn (1998). «Modal Pure Type Systems». Journal of Logic, Language and Information. 7 (3): 265–296. doi:10.1023/A:1008254612284 
  9. 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.
  10. 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 
  11. SAGE
  12. Yarrow
  13. Henk 2000
  14. «6.4.14. Kind polymorphism — Glasgow Haskell Compiler 9.15.20260123 User's Guide» 
  15. 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

Ligações externas

editar

📚 Artikel Terkait di Wikipedia

Cubo lambda

\;t:\tau }{\Gamma \;\vdash \;\lambda x.t:\sigma \to \tau }}} No Sistema F (também chamado de λ2 para o "cálculo lambda tipado de segunda ordem") há outro

Etel Adnan

agosto de 2025 – via www.theguardian.com  Cube, White. «Etel Adnan Inside the White Cube Bermondsey 2014 | White Cube». whitecube.com (em inglês). Consultado

C Sharp

Instantiate delegate with lambda expression MathAction ma3 = s => s * s * s; double cube = ma3(4.375); Console.WriteLine("cube: {0}", cube); } } // Output: //

Devolver Digital

Edition 3D Realms General Arcade Android, Linux, macOS, Windows Dungeon Hearts Cube Roots iOS, Linux, macOS, Windows Shadow Warrior Classic Redux 3D Realms General

Cronologia das mulheres na ciência

estadunidense Esther Lederberg se tornou a primeira a isolar o bacteriófago lambda, um vírus de DNA, da Escherichia coli K-12. 1951: Esther Afua Ocloo, de

Harbour (compilador)

de controle enquanto uma condição for verdadeira. Exemplo: x := Cube( 2 ) Function Cube( n ) Return n ** 3 Procedures e Functions podem utilizar o qualificador