Skip to main content

Claude escreveu a prova. A especificação ainda é sua.

A Anthropic e a Theorem usaram o Claude para gerar provas formais em 123 bibliotecas do OSS-Fuzz.

Updated 6 min readMarkdown
Claude escreveu a prova. A especificação ainda é sua.

O binário é RISC-V estático, compilado com clang, musl libc e lld. O fuzz target existe desde antes da prova — o que Claude fez foi transformar o teste em um enunciado matemático: para todo input abaixo de 64 MiB, o programa termina sem erro de memória e sem falha de asserção. A prova foi escrita em Rocq, checada pelo kernel do assistente, e cobre 239 pontos de entrada em 123 bibliotecas do OSS-Fuzz. São cerca de 180 milhões de linhas de prova. Uma prova típica passa de 600 mil linhas para um binário mediano de 18 mil instruções.

A Anthropic publicou o resultado em 22 de outubro de 2026, em colaboração com a Theorem. O pipeline parte do fuzz target que o projeto já tinha. Esse target vira especificação formal sob o modelo de processo Linux e de CPU RISC-V da Theorem. Claude escreve a prova; o Rocq confere se ela bate com o enunciado. No caminho, o modelo encontrou e corrigiu bugs — incluindo a redescoberta de uma CVE em libexpat e falhas que anos de fuzzing não pegaram, como um underflow de contador acionado por um input de aproximadamente 20 MB com um arranjo raro de dados e um decoder de imagem que precisava de 64 MB de entrada e mais de 2 GB de memória para expor a falha.

A prova, porém, demonstra exatamente a propriedade que foi formulada. Single-thread. Binário estático. Orçamento de memória fixo. RISC-V e Linux modelados. Input até 64 MB. Fora desse recorte — multi-thread, glibc em x86 ou ARM, cenários que a especificação não nomeou —, a garantia não se estende. A própria Anthropic deixa isso explícito: "formally verified" não é sinônimo de "sem bug em qualquer uso real". A incerteza remanescente se concentra nos componentes em que se precisa confiar: as semânticas de RISC-V e de processo Linux, os enunciados dos teoremas e o próprio kernel do Rocq.


O que significa "virar especificação formal"

O repositório público da Theorem deixa o mecanismo visível. Cada prova é sobre um binário compilado, não sobre código-fonte. O enunciado afirma que, em todo input dentro dos limites, a build com sanitizer se comporta como a build sem sanitizer e que o sanitizer nunca detecta erro. A checagem é feita com Rocq 9.2.0, e os enunciados são escritos em LPS, um modelo formal de processo Linux executando um binário RISC-V — um modelo declaradamente best effort e incompleto, que descreve parte do Linux e faz suposições que não verifica. A prova é tão boa quanto o LPS.

Um exemplo concreto ajuda a materializar o que "virar especificação formal" significa. No repositório oss-verify-proofs, a biblioteca boost-beast tem o entry point http_request provado para as builds ASan, UBSan e ASan+UBSan. O fuzz target original recebe bytes e chama o parser HTTP. A especificação formal não descreve o parser em português: ela enuncia, no vocabulário do LPS, que para qualquer sequência de bytes abaixo do limite, a execução daquele binário específico a partir do entry point do ELF não alcança o estado de erro que o sanitizer detectaria. O "erro" deixa de ser um crash observado e passa a ser um estado formal no modelo. O que se prova é a ausência desse estado, não a ausência de qualquer comportamento indesejado que a especificação não nomeou.


O custo oculto e o novo papel da engenharia

Há um custo operacional que a conversa sobre "prova gerada por IA" costuma deixar de fora. O kernel do Rocq não aceita a prova porque Claude disse que está certa. Ele verifica passo a passo, segundo regras lógicas, e uma única prova leva de 30 minutos a várias horas de tempo de CPU. O tempo de geração é uma coisa; o tempo de checagem é outra, e é ele que transforma 180 milhões de linhas em um artefato auditável. A escala do resultado — 239 entry points em poucas semanas — não elimina esse custo. Ela o desloca para a infraestrutura de checagem e para a fila de provas que precisam ser revalidadas quando o código ou o modelo semântico mudam.

Isso muda a conversa sobre verificação assistida por IA. Passar no teste deixa de ser o teto quando dá para provar ausência de crash num envelope definido. O trabalho caro e humano migra para outro lugar: escrever a especificação certa, escolher o que entra no teorema e o que fica de fora, e decidir se as hipóteses (modelo de sistema operacional, arquitetura, limites de input) cobrem o risco que o time de fato aceita. A ferramenta verifica o artefato. Quem define o que precisa ser verdadeiro continua sendo engenharia.

Para quem opera agentes de código e pipelines de segurança, o recorte prático é direto. Quando o time adotar prova formal gerada por modelo, o checklist deixa de ser só "o kernel aceitou?" e passa a incluir: quais propriedades foram enunciadas, sob quais premissas, e o que o negócio ainda precisa tratar fora do envelope formal. Um selo de "verificado" sobre um contrato incompleto não é uma garantia a mais. É uma garantia com letras miúdas que ninguém leu.


Aprofunde-se no tema de forma estruturada — do contexto à governança de agentes — consultando a série Engenharia de Software Assistida por IA, disponível na Amazon e no Kindle Unlimited.

https://livro-engenharia-de-software-assistida-por-ia.aspepper.workers.dev/?utm_source=hashnode&utm_medium=article&utm_campaign=serie_ia

  • Cupom de 30% OFF: LEIA30

Fontes de pesquisa consultadas:

  • Anthropic + Theorem — LLMs are making formal software verification feasible at a much larger scale (22 out. 2026)
  • Theorem — repositório theorem-labs/oss-verify-proofs, enunciados e provas Rocq sobre binários RISC-V do OSS-Fuzz
  • Interesting Engineering — Claude finds bugs that survived trillions of software test runs (22 out. 2026)
  • Blockchain.News — Anthropic says Claude proved security properties in 123 open-source libraries (22 out. 2026)
  • 36Kr — Claude Generates 180 Million Lines of Formal Proof (23 out. 2026), com dados sobre tempo de checagem por prova
  • DevOps.com — Claude Writes 180 Million Lines of Proofs to Verify 123 Open Source Libraries (23 out. 2026)
  • Mallory — Anthropic Uses Claude to Prove Bounded Crash Safety Across 123 Open-Source Libraries (23 out. 2026)
  • ExplainX — Claude Formal Verification: 123 Libraries Proven Crash-Free (22 out. 2026), com detalhes sobre o tamanho típico das provas
  • WebProNews — Why Claude's No-Crash Proofs for 239 Open-Source Fuzz Targets Come With Fine Print (23 out. 2026)
  • Documentação de semântica do LPS em theorem-labs/oss-verify-proofs/docs/semantics.md

#EngenhariaDeSoftware #IA #VerificacaoFormal #Claude #Anthropic #Seguranca #OSSFuzz #Rocq #ProvasFormais #SoftwareEngineering #AI #FormalVerification #DevSecOps #Backend #RISC-V #Teorema #Especificacao

About the author

  • Engenheiro de Software Sênior e Arquiteto de Soluções com anos de experiência construindo sistemas distribuídos e de alta criticidade. Autor da série de livros "Engenharia de Software Assistida por IA". Escrevo sobre arquitetura de software, ecossistema .NET, engenharia de contexto, MCP e como utilizar agentes de IA para criar sistemas robustos. Livros na Amazon: https://www.amazon.com.br/stores/author/B0H7VR7VS3/allbooks ---------------- Senior Software Engineer & Solution Architect with over 20 years of experience building scalable, distributed systems. Author of "Engenharia de Software Assistida por IA". Writing about modern software architecture, .NET, context engineering, MCP, and AI-assisted development. Books on Amazon: https://www.amazon.com.br/stores/author/B0H7VR7VS3/allbooks

No comments yet. Be the first to comment.