Anthropic meldde op 22 oktober 2026 dat Claude samen met Theorem Rocq-gecontroleerde bewijzen maakte voor 239 geselecteerde testingangen in 123 OSS-Fuzz-bibliotheken. De bewijzen stellen dat de onderzochte programma’s niet crashen bij invoer kleiner dan 64 MB, binnen een specifiek model van een statische RISC-V-binary onder Linux. Ze gelden voor die ingangen en die formele voorwaarden, niet voor al het gedrag van de bibliotheken.
Van fuzztests naar machinegecontroleerde bewijzen
Een fuzztest probeert software met grote aantallen automatisch gegenereerde invoerbestanden. Zo’n test kan fouten vinden in de uitvoeringen die daadwerkelijk plaatsvinden. Formele verificatie stelt een eigenschap wiskundig vast en bewijst dat een programma die eigenschap binnen een omschreven model volgt.
Anthropic beschreef hoe bestaande fuzztests werden omgezet in formele specificaties voor gecompileerde RISC-V-programma’s. Claude genereerde de Rocq-bewijscode; de kernel van Rocq controleerde of het bewijs uit de specificatie volgde. Theorem leverde de formele beschrijving van RISC-V-instructies en Linux-processen die in het model werd gebruikt.
Wat de 239 bewijzen afdekken
De gerapporteerde hoofdproef omvat 239 testingangen in 123 bibliotheken uit Google OSS-Fuzz. De getoetste eigenschap was dat een ingang niet crasht bij invoer kleiner dan 64 MB. Dat resultaat geldt voor een statische, single-threaded RISC-V-binary met een vast geheugenbudget en Linux-semantiek.
De bewijsgrens volgt dus de gekozen ingang, eigenschap en machinebeschrijving. Anthropic meldde dat niet alle ingangen van de bibliotheken zijn geverifieerd. Ook kan een programma dat een bibliotheek aanroept die bibliotheek verkeerd gebruiken. Een bewezen ingang dekt daarom niet automatisch alle functies of gebruikssituaties van een bibliotheek.
Bugs die tijdens het bewijswerk aan het licht kwamen
Anthropic meldde dat Claude tijdens pogingen om bewijzen te maken ook bugs patchte, waarna de specificatie opnieuw op de aangepaste code werd toegepast. Een gemeld voorbeeld was een teller die bij een zeldzame invoer van ongeveer 20 MB onder nul liep en tot een schrijfactie buiten de toegewezen geheugenruimte leidde. Bij een afbeeldingsdecoder vond Anthropic een leesactie buiten de toegewezen ruimte waarvoor een invoer van 64 MB en meer dan 2 GB geheugen nodig waren.
Anthropic schreef dat het patches bestrafte, bewijs vroeg dat ze invoer veranderden en de wijzigingen registreerde en controleerde om misbruik van het bewijsdoel tegen te gaan. Het bedrijf meldde ook een fout in logica die beperkte welke bestanden een toepassing mocht laden. Dit zijn bevindingen uit het projectverslag van Anthropic en Theorem.
Waarom de formele garantie begrensd blijft
Rocq controleert of een bewijs klopt ten opzichte van de opgegeven specificatie. De controle stelt niet zelfstandig vast of die specificatie alle gewenste eigenschappen van software beschrijft. Ook de formele beschrijving van de machine en het besturingssysteem behoort tot de onderdelen waarop het bewijs steunt.
De hoofdproef modelleerde single-threaded statische RISC-V-programma’s onder Linux. Een productieprogramma kan op een andere architectuur draaien of dynamische koppelingen gebruiken. Anthropic merkte daarnaast op dat AddressSanitizer, een hulpmiddel dat tijdens uitvoering bepaalde geheugenfouten opspoort, niet elke fout in geheugenveiligheid vindt. Niet-bereikte code en het gedrag van aanroepende programma’s vallen evenmin automatisch onder een bewijs voor een geselecteerde ingang.
De appendix over Python en de omvang van de bewijzen
In een afzonderlijke casus controleerde Verus alle 17 lagen van een Rust-interpreter voor Python aan de hand van de formele semantiek van het project. De vergelijking met CPython was een aparte, empirische test: Anthropic meldde overeenkomstig gedrag in 99,95 procent van ruim 1,7 miljoen gegenereerde programma’s. Dat percentage beschrijft de geteste programma’s; het is geen formeel bewijs van equivalentie voor elk mogelijk Python-programma.
De appendix onderscheidde ongeveer één miljard Rocq-regels die tijdens bewijsproeven waren gegenereerd van circa 180 miljoen regels die deel uitmaakten van bewijzen die de controle doorstonden. Een typisch voltooid bewijs besloeg ongeveer 600.000 regels, verspreid over zo’n 1.400 bestanden. De controle daarvan duurde volgens Anthropic 30 minuten tot enkele uren rekentijd op een processor.