Teoria de Tipos na pesquisa de linguagens de programação: A Teoria dos tipos é uma ferramenta na criação e pesquisa sobre novas linguagens de programação. Ela é formada por um amálgama de matemática, lógica filosófica e computação. Através dela, torna­se possível a implementação de compiladores eficientes e códigos íntegros. Essa teoria é o estudo de sistemas de tipos, que é um conjunto de regras sobre tipos de dados que previne as linguagens de erros decorrentes de más interpretações. Esses erros são comumente erros de tipos, erros de passagem de parâmetro para funções (em número e tipo), alterações do código durante a execução, etc. Geralmente esses sistemas são definidos através de julgamentos de tipos, da forma Γ├e:τ onde e é uma expressão, τ seu tipo e Γ as variáveis globais por ela utilizadas. Estes julgamentos definem se uma expressão foi bem digitada. Há certa similaridade entre as regras que governam os tipos e as implicações da dedução natural. Isso não ocorre por acaso: existe uma teoria de que há um isomorfismo entre proposições e tipos. Uma semântica operacional define a execução de um programa, e é definida por relações transitivas entre estados de uma máquina abstrata. Uma das funções de um sistema de tipos é prevenir erros de execução. Um erro de tipo é uma expressão onde e não resulta em um valor. Programas bem digitados nunca incorrem em tais tipos de erro. Linguagens de programação podem ser definidas por suas estruturas de tipos. Entre os benefícios que isso traz, estão e modularidade com que a linguagem é apresentada, evitando confusões. Outra vantagem é estudar o comportamento de um programa. Além disso, é possível através dessa definição classificar a segurança do programa. Verificação Automática e Projeto de Supercondutores Os avanços recentes na computação têm mudado a ciência, a engenharia e os negócios. Isso é possível graças à evolução dos estudos dos semicondutores. Porém a tecnologia de supercondutores tem enfrentado um grande desafio: manter esse avanço está se tornando muito difícil, evitando a exploração de toda a capacidade dessa tecnologia. À medida que a complexidade de um projeto aumenta, ele se torna mais propenso a conter uma falha. Para validar os projetos, desenvolveram­se técnicas de verificação. O grande problema é que essas técnicas estão se tornando mais e mais complexas e tomando muito tempo do projeto. Existem ferramentas a nível acadêmico que implementam algoritmos de Verificação Formal baseada em modelos de comportamento, que usam técnicas matemáticas para corrigir o funcionamento dos projetos. Eles têm sido aplicados ultimamente também em escala industrial e têm obtido resultados extremamente satisfatórios. O primeiro passo da Verificação Formal é definir o comportamento desejado. Para isso, pode ser usada a lógica temporal. Nessa lógica o tempo é tratado linearmente, ou seja, existe um único futuro possível. Na lógica temporal linear (LTL) são usados os conetivos da lógica acompanhados de X (próximo), F (eventualmente), G (sempre) e U (até que). LTL é interpretada sobre computações, que são seqüências de atribuições verdadeiras a proposições atômicas. Projetos podem ser descritos através de várias descrições formais. Seja qual for o formalismo usado, um projeto de estado finito pode ser descrito através de um sistema de transições rotulado. Uma das áreas mais próximas da verificação automática é a aproximação autômato­teórica. A idéia por trás dessa teoria é a de que dada uma fórmula LTL é possível criar um autômato de estado finito sobre as infinitas palavras que aceitam todas as computações que satisfazem essa fórmula. A correspondência entre essa teoria e a verificação automática reduz o problema da verificação a um problema autômato­teórico, que pode ser resolvido através da criação de determinados autômatos que, ao final, se o autômato receber alguma entrada, o sistema incorreu em algum erro e a entrada é uma computação incorreta. Caso não haja entradas, o projeto está correto. Existem soluções altamente eficientes para a implementação e verificação desses autômatos. Além disso, com o uso de estruturas de dados é possível testar projetos cada vez mais complexos. Nos últimos anos, a verificação formal automatizada tem se mostrado muito hábil. Ela pôde reduzir o tempo de projeto e comercialização de produtos de algumas das maiores empresas do ramo da informática.