Provas Lean para código gerado por IA quebram após refatoração em 13-27% dos casos
Um grupo de pesquisadores (preprint no arXiv) fez uma pergunta simples: se um código é formalmente comprovado correto em Lean, e o programa é então ligeiramente reescrito — por exemplo, extraindo um trecho de lógica para uma função separada —, a prova antiga continua válida? Para testar isso, eles pegaram 185 problemas do benchmark VERINA e geraram 458 variantes "certificadas" de código: cada variante continua garantindo o mesmo comportamento do original, mas escrita de forma diferente. Descobriu-se que a proporção de provas que permanecem válidas após a refatoração (a chamada PSR) para as provas de referência, escritas manualmente pelos autores do VERINA, quebra em apenas 4,3% dos casos. Já para as provas geradas por modelos de IA especializados (DeepSeek-Prover e Goedel-Prover), a taxa de quebra é de 13-27%. Ainda assim, no mesmo conjunto de problemas, as provas dos modelos de IA na verdade sobrevivem à refatoração com mais frequência do que as de referência — entre 16 e 20 pontos percentuais mais —, simplesmente porque a amostra de referência é mais simples. E o mais importante: quase todas as quebras são corrigidas com uma única edição pontual: renomear um identificador. • DeepSeek-Prover-V2-7B: a taxa de sobrevivência das provas supera a referência em 15,6 pontos percentuais; Goedel-Prover-V2-32B, em 18,8 pontos; Goedel-Prover-V2-8B, em 20,3 pontos. • Das 54 quebras elegíveis em provas de referência, 51 foram corrigidas com uma única edição; das 85 quebras em modelos de IA, 58 foram corrigidas. • Mecanismo de resiliência: provas que vinculam explicitamente a chamada de uma função ao seu corpo por meio da igualdade "by rfl" sobrevivem à extração de lógica em 6 de 6 tarefas, enquanto as outras estratégias conseguem apenas 6 de 31.
Processado por IA de arXiv cs.AI; editado por Hamidun News
Quando um modelo de linguagem escreve código e anexa imediatamente a ele uma prova matemática formal de sua correção em Lean, o resultado parece à prova de falhas: o programa tem a garantia de fazer exatamente o que deveria. Mas todos os testes existentes verificam a prova apenas contra uma única versão fixa do código. No desenvolvimento real, o código é constantemente reescrito — lógica duplicada é extraída para uma função separada, operações são reordenadas, condições são invertidas —, enquanto o comportamento do programa permanece o mesmo. A questão é se a prova antiga resiste a esse tipo de reestruturação, mesmo quando o significado do código não mudou.
Os autores do trabalho propõem uma metodologia chamada RefactorProof para medir exatamente isso. Eles pegaram 185 problemas do conhecido benchmark VERINA (que verifica tanto o código quanto as provas em Lean) e aplicaram a cada problema cinco tipos de reescritas mecânicas e totalmente automáticas: extrair um trecho de lógica para uma função separada, trocar operandos em operações comutativas, inverter condições, entre outras. Para cada reescrita, provou-se separadamente, via Lean, que o comportamento do programa não havia mudado. O resultado foram 458 variantes de código verificadas. Cada variante foi então pareada com a prova original (idêntica byte a byte) para verificar se o Lean ainda a aceitava.
O que se mostrou frágil — e o que não
As provas de referência que os autores do VERINA escreveram manualmente para 46 problemas sobreviveram à refatoração quase sem perdas — uma taxa de quebra de apenas 4,3%. Mas isso não significa que as provas manuais sejam inerentemente mais robustas: esses 46 problemas são os mais simples do benchmark, com um comprimento mediano de código de uma única linha, e apenas 6,5% deles são recursivos.
As provas geradas por modelos especializados em demonstração de teoremas — DeepSeek-Prover-V2-7B e duas versões do Goedel-Prover-V2 (8B e 32B) — quebraram com muito mais frequência: as taxas de falha variaram de 13,3% a 26,8%. Mas, ao comparar os modelos com a referência em um conjunto de problemas idêntico e comparável, o quadro se inverte: as provas dos modelos sobrevivem à refatoração com mais frequência do que as de referência — 15,6 pontos a mais para o DeepSeek-7B, 18,8 pontos para o Goedel-32B e 20,3 pontos para o Goedel-8B. A diferença é estatisticamente significativa nos três casos.
Por que algumas provas desmoronam e outras resistem
Os pesquisadores identificaram um mecanismo concreto por trás dessa resiliência. As provas de referência geralmente começam com o comando `unfold`, que expande a definição da função diretamente no texto. As provas dos modelos, por outro lado, costumam começar afirmando explicitamente que uma chamada de função e seu corpo são iguais por meio da tática `rfl` (uma chamada "ponte definicional"), e só então demonstram o resto automaticamente.
Quando o código é movido para uma função separada (extração de lógica), essa "ponte" se mostra muito mais durável: no nível das tarefas, as provas com ponte sobrevivem em 6 de 6 casos, enquanto as demais estratégias conseguem apenas 6 de 31. Mas esse recurso tem um lado negativo: se a reescrita muda substancialmente o corpo da função (e não apenas sua localização), uma ponte amarrada ao texto específico daquele corpo deixa de passar a verificação de tipos — essas provas sobrevivem apenas 0 de 3 vezes, contra 17 de 19 em provas mais gerais, não atreladas a uma formulação específica.
Uma quebra não é uma catástrofe
A principal conclusão prática é que uma prova que deixa de ser aceita após uma refatoração não significa necessariamente uma reescrita cara. Os pesquisadores testaram isso diretamente: pegaram as provas quebradas e tentaram corrigi-las com uma única edição pontual simples: renomear um identificador. Das 54 quebras elegíveis em provas de referência, 51 foram corrigidas dessa forma; das 85 quebras em provas geradas por modelos, 58 foram corrigidas.
Para equipes que dependem da geração verificável de código por IA, a conclusão é direta: o simples fato de uma prova deixar de passar após uma refatoração não é motivo de pânico, nem indica que um modelo seja, em princípio, pior na geração de provas. É antes um sinal de que vale a pena incorporar ao pipeline de verificação uma checagem automática e um reparo leve das provas após qualquer mudança no código, em vez de tratar a quebra como um veredito definitivo sobre a qualidade do modelo.
- 29 de out. de 2026Cohere flagra Qwen3.8-Flash-Next tentando enviar um arquivo para Pequim
- 29 de out. de 2026Estudo: uma única falha aleatória faz um agente de IA abandonar uma ferramenta funcional em 11,6% dos casos
- 28 de out. de 2026AdaPRA: um agente supervisor eleva o desempenho da IA em tarefas de ciência de dados em 24,5 pontos de percentil
- 28 de out. de 2026AOS-Bench testa agentes de IA: desempenho cai 13-23 pontos em tarefas paralelas
Perguntas frequentes sobre a notícia
O que se mostrou frágil — e o que não?
As provas de referência que os autores do VERINA escreveram manualmente para 46 problemas sobreviveram à refatoração quase sem perdas — uma taxa de quebra de apenas 4,3%. Mas isso não significa que as provas manuais sejam inerentemente mais robustas: esses 46 problemas são os mais simples do benchmark, com um comprimento mediano de código de uma única linha, e apenas 6,5% deles são recursivos. As provas geradas por modelos especializados em demonstração de teoremas — DeepSeek-Prover-V2-7B e duas versões do Goedel-Prover-V2 (8B e 32B) — quebraram com muito mais frequência: a
Por que algumas provas desmoronam e outras resistem?
Os pesquisadores identificaram um mecanismo concreto por trás dessa resiliência. As provas de referência geralmente começam com o comando `unfold`, que expande a definição da função diretamente no texto. As provas dos modelos, por outro lado, costumam começar afirmando explicitamente que uma chamada de função e seu corpo são iguais por meio da tática `rfl` (uma chamada "ponte definicional"), e só então demonstram o resto automaticamente. Quando o código é movido para uma função separada (extração de lógica), essa "ponte" se mostra muito mais durável: no nível das tarefas, a
O que se sabe sobre Uma quebra não é uma catástrofe?
A principal conclusão prática é que uma prova que deixa de ser aceita após uma refatoração não significa necessariamente uma reescrita cara. Os pesquisadores testaram isso diretamente: pegaram as provas quebradas e tentaram corrigi-las com uma única edição pontual simples: renomear um identificador. Das 54 quebras elegíveis em provas de referência, 51 foram corrigidas dessa forma; das 85 quebras em provas geradas por modelos, 58 foram corrigidas. Para equipes que dependem da geração verificável de código por IA, a conclusão é direta: o simples fato de uma prova deixar de pa
Test Frontier LLMs & Autonomous Agents in One Workspace
Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.
O essencial da IA — uma vez por semana
Sete histórias que realmente importaram, escolhidas a dedo. Sem ruído nem releases.
Pronto! Verifique seu e-mail para a confirmação.