← Últimos artigos
💻 computer science

Definitional Inversion, Without Normalisation

Este artigo introduz uma nova técnica de prova baseada em teoria de domínios que estabelece propriedades de inversão definicional para sistemas de tipos dependentes sem depender de normalização, permitindo, assim, a análise metateórica de sistemas não normalizantes como Idris e Lean, bem como daqueles com type-in-type.

Autores originais: Mario Carneiro, Thierry Coquand, Adrien Frabetti Mathieu, Meven Lennon-Bertrand, Paul-André Melliès, Stephanie Weirich

Publicado 2026-07-16
📖 7 min de leitura🧠 Leitura aprofundada

Autores originais: Mario Carneiro, Thierry Coquand, Adrien Frabetti Mathieu, Meven Lennon-Bertrand, Paul-André Melliès, Stephanie Weirich

Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo

Imagine que você está construindo uma biblioteca mágica e massiva, onde cada livro é uma prova matemática e as próprias prateleiras são feitas de lógica. Este é o mundo dos sistemas de tipos dependentes, o motor secreto por trás de assistentes de prova modernos como o Lean e linguagens de programação como o Idris. Neste mundo, as regras são incrivelmente rígidas: se você tentar colocar um "gato" em uma prateleira rotulada como "números", o sistema de segurança da biblioteca (o verificador de tipos) deve gritar imediatamente "Erro!" e parar você. Esta segurança baseia-se num conceito chamado igualdade definicional, que é a forma da biblioteca decidir se duas coisas são essencialmente a mesma. Por exemplo, um "quadrado" é apenas um "retângulo com lados iguais"? Se o sistema diz que sim, ele os trata como idênticos.

No entanto, verificar estas regras é complicado. Tradicionalmente, para provar que a biblioteca era segura, os matemáticos tinham de mostrar que cada um dos livros podia ser simplificado até à sua forma mais básica e simples (um processo chamado normalização). Mas muitas bibliotecas modernas e poderosas são desenhadas para serem infinitas ou autorreferenciais, o que significa que não podem ser simplificadas até um ponto final. É como tentar achatar um fractal; você continua a encontrar mais detalhes. Durante muito tempo, se um sistema não pudesse ser simplificado, não podíamos provar que era seguro. Este artigo introduz uma nova forma de verificar a segurança da biblioteca sem precisar de achatar o fractal primeiro.


O Enigma Infinito e o Espelho Mágico

Pense num sistema de tipos dependentes como um enorme puzzle de auto-verificação. As peças são tipos (como "números" ou "funções") e o objetivo é garantir que, quando você encaixa duas peças, elas se ajustam perfeitamente. A regra mais crítica neste puzzle é a inversão definicional. É a lógica que diz: "Se duas estruturas complexas parecem iguais, as suas partes também devem ser iguais". Por exemplo, se você tem dois tipos de função que são idênticos, o artigo prova que os seus tipos de entrada e de saída também devem ser idênticos. Isto é crucial porque permite que o computador decomponha com segurança código complexo em partes menores sem se confundir.

Durante décadas, a única forma de provar que estas peças se encaixavam era usar um método chamado confluência (verificar se diferentes caminhos de simplificação levam ao mesmo resultado) ou relações lógicas (uma forma complexa de comparar como os termos se comportam). Mas estas ferramentas antigas bateram numa parede. A confluência falha quando se adicionam certas regras "extensionais" (como as leis η\eta, que dizem que uma função é definida inteiramente pelo que ela faz, não por como é escrita). As relações lógicas geralmente exigem que o sistema seja "normalizador" (capaz de parar de simplificar), o que exclui muitas linguagens de programação poderosas e do mundo real que permitem loops infinitos ou tipos autorreferenciais.

A Nova Abordagem: Um Mapa de Possibilidades

Os autores, uma equipa de cientistas da computação e matemáticos, propõem uma nova estratégia baseada na teoria dos domínios. Em vez de tentar forçar as peças do puzzle a simplificarem-se numa única forma final, eles constroem um mapa de todos os comportamentos possíveis.

Imagine que está a tentar identificar uma criatura misteriosa numa floresta escura.

  • A Forma Antiga: Você espera que a criatura pare de se mover e revele a sua verdadeira forma final. Se a criatura nunca parar de se mover (porque é um loop infinito), você não consegue identificá-la, e a floresta torna-se insegura.
  • A Nova Forma: Você não espera que a criatura pare. Em vez disso, você observa as suas pegadas. Você nota que ela deixa uma pegada de "pé esquerdo", depois uma de "pé direito", depois outra de "pé esquerdo" novamente. Mesmo que a criatura nunca pare de caminhar, você ainda pode deduzir a sua forma olhando para o padrão dos seus passos.

Na linguagem do artigo, estas "pegadas" são chamadas de elementos compactos ou observações finitas. Os autores constroem um "domínio" matemático (um espaço estruturado) onde cada tipo é representado não por uma resposta final, mas pelo conjunto de todas as coisas finitas que podemos observar sobre ele. Eles utilizam uma técnica chamada projetores finitos para fatiar este domínio em pedaços geríveis.

O Que Eles Descobriram

Usando este método de "pegadas", a equipa provou com sucesso que a inversão definicional se mantém verdade mesmo em sistemas que:

  1. Nunca param de simplificar (não-normalizadores), tais como aqueles com uma regra de "tipo-em-tipo" (onde um tipo pode conter a si próprio).
  2. Incluem leis η\eta, que são regras complicadas que fazem com que funções e pares se comportem de forma mais intuitiva, mas que quebram os métodos de prova tradicionais.

Eles demonstraram isto num pequeno núcleo de uma teoria de tipos chamada MLTTη\eta (Teoria de Tipos de Martin-Löf com leis η\eta). Mostraram que, mesmo neste sistema caótico e potencialmente infinito, se dois tipos forem iguais, os seus blocos de construção também devem ser iguais. Isto é um grande feito porque prova que a "rede de segurança" do sistema de tipos funciona mesmo quando o sistema é permitido ser desordenado e infinito.

Por Que Isto Importa

Os autores não resolveram apenas um puzzle para um sistema de brinquedo minúsculo; eles mostraram que o seu método é robusto. Eles estenderam a sua prova para incluir:

  • Somas dependentes (pares de dados).
  • Tipos unitários (um tipo com apenas um valor).
  • Combinadores de ponto fixo (ferramentas que permitem recursão infinita).
  • Números naturais com correspondência de padrões (pattern matching).
  • Tipos de identidade (provar que duas coisas são a mesma).
  • Proposições de irrelevância de prova (onde o conteúdo de uma prova não importa, apenas o seu facto de existir).

Eles até construíram um modelo para um "universo de proposições estritas", mostrando que a sua técnica pode lidar com as características complexas encontradas em ferramentas do mundo real como Lean, Agda e Rocq.

Os Limites e o Futuro

O artigo é muito claro sobre o que ele não faz. Ele não prova que estes sistemas são "normalizadores" (que sempre param). De facto, ele trabalha explicitamente para sistemas que não param. Também não resolve o problema dos "neutros" (variáveis que ainda não foram preenchidas) da mesma forma que resolve para termos fechados, embora sugira como isso poderá ser feito no futuro.

Os autores já transformaram as suas provas matemáticas em código, verificando-as três vezes em três assistentes de prova diferentes (Agda, Lean e Rocq). Isto sugere que o seu método não é apenas uma ideia teórica, mas uma ferramenta prática.

A Conclusão

Este artigo é como entregar aos construtores da biblioteca mágica uns novos óculos. Antes, eles só podiam verificar a segurança da biblioteca se os livros fossem estáticos e acabados. Agora, podem verificar a segurança de livros que ainda estão a ser escritos, ou livros que se referem a si mesmos para sempre. Ao focar-se no comportamento observável (as pegadas) em vez do destino final (a paragem), eles abriram a porta para verificar os sistemas de tipos mais poderosos, complexos e potencialmente infinitos que podemos imaginar. Isto prepara o caminho para o "Lean4Lean" e "MetaRocq" — projetos onde os assistentes de prova verificam o seu próprio código — tornando as ferramentas que usamos para construir a matemática e o software ainda mais confiáveis.

Afogado em artigos na sua área?

Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.

Experimentar Digest →