Case study: solving P-99 with LPTP and an LLM
Este artigo apresenta um experimento no qual um LLM (Claude) gerou e verificou formalmente soluções para os primeiros 33 dos Ninety-Nine Prolog Problems usando LPTP, demonstrando uma abordagem de "vericoding" que combina especificações informais em inglês com geração de código automatizada e provas matemáticas rigorosas de correção.
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 um mundo onde os computadores não apenas seguem instruções rígidas e robóticas, mas podem realmente entender a maneira confusa e imprecisa como os humanos descrevem problemas. Esta é a fronteira da Inteligência Artificial, especificamente um ramo chamado Modelos de Linguagem de Grande Escala (LLMs). Pense em um LLM como um estudante superinteligente e incrivelmente bem informado que leu quase tudo na internet. Se você pedir para ele escrever uma história, ele pode; se pedir para escrever código, ele pode. Mas há uma pegadinha: este estudante é propenso a "alucinações", o que significa que ele pode inventar fatos com confiança ou escrever um código que parece perfeito, mas que secretamente quebra quando você tenta executá-lo.
Para corrigir isso, os cientistas usam a Verificação Formal, que é como um professor de matemática super rigoroso que verifica cada passo do dever de casa de um aluno para garantir que seja logicamente impossível estar errado. No mundo da ciência da computação, existe um conjunto famoso de desafios chamado 99 Problemas de Prolog (ou P-99). Estes são como os "treinos de academia" para a programação lógica, um estilo de codificação onde você descreve o que quer que aconteça, em vez de como fazê-lo passo a passo. A grande questão que os pesquisadores estão fazendo é: Podemos deixar o estudante de IA escrever o código baseado em uma descrição simples em inglês e, depois, fazer com que o professor de matemática verifique instantaneamente se ele está realmente correto? Este artigo explora exatamente esse experimento, misturando a liberdade criativa da IA com a segurança de ferro da lógica formal.
O Experimento: Uma Dupla de Codificação com um Professor Rigoroso
Neste estudo, uma equipe de pesquisadores decidiu testar uma nova forma de trabalhar chamada "vibe-coding" misturada com "vericoding". Imagine o "vibe-coding" como pedir a um amigo criativo para construir uma casa na árvore para você baseada em um esboço grosseiro que você desenhou em um guardanapo. Você diz: "Quero uma casa na árvore com um escorregador e uma porta secreta", e ele simplesmente começa a construir. É rápido e divertido, mas o resultado pode ser instável. O "vericoding" é o oposto: é como contratar um arquiteto que exige plantas, testes de estresse e inspeções de segurança antes que um único prego seja martelado.
Os pesquisadores queriam ver se poderiam combinar essas duas abordagens. Eles usaram um modelo de IA chamado Claude (especificamente a versão Opus 4.6) para atuar como o construtor criativo. Eles deram a ele os primeiros 33 problemas da famosa lista P-99, que estão escritos em um inglês simples e informal. Por exemplo, um problema diz apenas: "Encontre o último elemento de uma lista".
O trabalho da IA era:
- Escrever o código Prolog para resolver o problema.
- Escrever um arquivo de teste para verificar se o código funciona em exemplos.
- Escrever uma prova formal para garantir matematicamente que o código é seguro, correto e que sempre terminará de executar.
Para verificar as provas, eles usaram uma ferramenta chamada LPTP (Logic Program Theorem Prover). Pense no LPTP como o professor de matemática rigoroso que se recusa a aceitar "parece certo" como resposta. Ele exige uma derivação lógica passo a passo para cada afirmação.
Os Resultados: Uma Mistura de Magia e Matemática
O experimento foi um sucesso, mas não foi uma varinha mágica. A equipe conseguiu resolver 33 de 88 exercícios (cerca de 37,5%) usando este método. Aqui está o que aconteceu nos bastidores:
- A Parte Criativa (Vibe-Coding): A IA foi surpreendentemente boa na codificação inicial. Ela escreveu 58 procedimentos lógicos (o código real) e 508 casos de teste em apenas alguns minutos por problema. Ela entendeu as instruções em inglês e gerou código que rodava corretamente.
- A Parte Rigorosa (Vericoding): Foi aqui que o trabalho real começou. A IA teve que provar que seu código estava correto. Ela gerou 257 lemas (pequenos fatos matemáticos) e escreveu impressionantes 11.800 linhas de prova.
- O Toque Humano: Os pesquisadores não deixaram a IA agir de forma desenfreada. Eles verificaram manualmente cada um dos arquivos. Eles executaram os testes, leram as declarações lógicas e rodaram novamente as provas com o LPTP. Se a IA travasse ou escrevesse uma prova que não fazia sentido, os humanos intervinham para dar uma dica. Por exemplo, para um problema sobre encontrar o último item de uma lista, os humanos tiveram que perguntar à IA: "Ei, como isso se conecta à função
append?", para ajudá-la a formular a prova correta.
As Grandes Descobertas
O artigo revela alguns pontos fundamentais sobre esta nova forma de trabalhar:
- A IA está ficando boa no "Vibe-Coding": A IA conseguiu pegar uma descrição vaga em inglês e transformá-la em código Prolog funcional muito rapidamente. Ela até evitou truques "impuros" que o código Prolog do mundo real costuma usar, mantendo um estilo lógico estrito que o professor de matemática (LPTP) pudesse entender.
- A IA precisa de um empurrão para o "Vericoding": Embora a IA pudesse gerar o código facilmente, provar por que ele estava correto era mais difícil. Para propriedades funcionais complexas (como provar que o código faz exatamente o que deveria fazer), a IA às vezes precisava que os pesquisadores humanos explicassem a lógica em inglês simples primeiro. Uma vez que os humanos davam uma dica, a IA conseguia formalizá-la e provar.
- Não é um problema "Resolvido" ainda: A equipe não resolveu todos os 99 problemas. Alguns levaram à IA apenas 15 minutos (como o simples "último elemento"), enquanto outros levaram várias horas (como o "fatoração de números primos"). Os pesquisadores observam que, para os problemas mais difíceis, a IA ainda tem dificuldade em criar as estratégias de prova por conta própria sem orientação humana.
Um Vislumbre do Futuro: A Conexão "MCP"
O artigo também descreve uma nova ferramenta que eles estão construindo chamada Model Context Protocol (MCP). Atualmente, a IA e o professor de matemática (LPTP) conversam através de arquivos e documentos de texto, o que é um pouco como enviar cartas de ida e volta. A nova ferramenta MCP é como dar a eles uma linha telefônica direta. Isso permite que a IA peça ajuda ao professor de matemática em tempo real, verifique seu próprio trabalho instantaneamente e corrija erros sem esperar que um humano intervenha. Eles testaram isso com outros modelos de IA (como o Gemini) e descobriram que, embora alguns modelos pudessem gerar as ideias para as provas, apenas o Claude foi capaz de gerar as provas válidas que passaram pelas verificações rigorosas.
A Conclusão
Este artigo mostra que estamos entrando em uma era onde a IA pode atuar como uma parceira criativa na escrita de códigos lógicos complexos, mas ela ainda precisa de um "piloto" humano para guiá-la pelas partes mais difíceis. A IA pode escrever o código e até rascunhar as provas matemáticas, mas às vezes se perde nos detalhes. Ao combinar a velocidade e a criatividade da IA com um verificador de provas formais como o LPTP, os pesquisadores criaram um sistema que captura os erros da IA antes que eles se tornem bugs reais. Não é uma máquina de "consertar tudo" totalmente automatizada ainda, mas é uma nova ferramenta poderosa que torna a escrita de software confiável mais rápida e segura do que nunca.
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.