Dit artikel beschrijft een gesprek tussen Ben Lorica en Leo de Moura over de impact van AI op formele verificatie. In tegenstelling tot traditioneel testen, dat slechts de aanwezigheid van bugs aantoont, stelt formele verificatie (met tools zoals de taal Lean) ontwikkelaars in staat om wiskundig te bewijzen dat code aan specifieke eigenschappen voldoet.
De belangrijkste punten zijn:
- AI-versnelling: Door autoformalisatie kan AI bestaande code vertalen naar Lean. De schaal van bewijzen is hierdoor explosief gegroeid, waarbij AI-gegenereerde bewijzen inmiddels miljoenen regels tellen.
- Verschuiving in Software Engineering: De rol van de engineer verschuift van het schrijven van code naar het definiëren van nauwkeurige specificaties en requirements. Het uiteindelijke doel is een volledig 'geverifieerde softwarestack' voor kritieke componenten.
- Impact op Wetenschap: In de wiskunde en theoretische natuurkunde (via Physlib) zorgt formele verificatie voor ongekende precisie. Er is een merkbare verschuiving gaande waarbij toegang tot rekenkracht (compute) belangrijker wordt dan individuele intelligentie.
- Toekomstige Toepassingen: De techniek kan worden uitgebreid naar domeinen als financiën, chemie, biologie en het recht, waar regels en procedures geformaliseerd kunnen worden.
Wanneer AI de code schrijft, wie bewijst dan dat het werkt?
Wat is formele verificatie?
Voor iemand die gewend is aan code-reviews, QA en testen, is formele verificatie een fundamenteel andere benadering. Lean is zowel een programmeertaal als een proof assistant. Hiermee kan men niet alleen code schrijven, maar ook eigenschappen definiëren waaraan die code moet voldoen. Men kan openstaande wiskundige conjectures formuleren en bewijzen leveren voor deze claims.
Het cruciale verschil is dat het bewijs niet informeel is, maar geschreven in de Lean-taal en door een machine wordt gecontroleerd (machine-checked). Om een resultaat te vertrouwen dat met Lean is bewezen, hoeft men enkel de 'kernel' te vertrouwen—het onderdeel waar het bewijs daadwerkelijk wordt gecontroleerd.
Verificatie versus traditioneel testen
Traditioneel testen is zeer nuttig voor het vinden van bugs, maar het is niet in staat om te bewijzen dat er geen bugs zijn. Testing toont de aanwezigheid van fouten aan, niet de afwezigheid ervan.
Met formele verificatie begint men bij de eigenschappen. Men kan AI vragen om code te implementeren die aan specifieke eigenschappen voldoet en om een Lean-bewijs te leveren dat dit aantoont. Een voorbeeld hiervan is het porten van zlib (een compressiebibliotheek) naar Lean. Hierbij is een eigenschap bewezen die stelt dat wanneer data wordt gecomprimeerd en vervolgens gedecomprimeerd, de oorspronkelijke data exact terugkomt zonder verlies of corruptie.
AI en de versnelling van formele verificatie
Autoformalisatie
Een belangrijke ontwikkeling is autoformalisatie: het vermogen van frontier-modellen om code of wiskundige teksten (bestaande uit woorden en symbolen) te vertalen naar Lean. Dit stelt ontwikkelaars in staat om bestaande code in elke wislige taal om te zetten naar een Lean-model voor verificatie.
Voor Rust-code bestaat er een specifieke tool genaamd Aeneas, die wordt gebruikt door teams zoals het SymCrypt-team bij Microsoft om cryptografische bibliotheken te verifiëren.
Schaalbaarheid en AI-bewijzen
De schaal van bewijzen is door AI explosief gegroeid. De menselijke wiskundige bibliotheek voor Lean, Mathlib, telt 2,5 miljoen regels en deed er tien jaar over om te worden opgebouwd. Inmiddels zijn er AI-gegenereerde bewijzen van 50 miljoen regels. Het bewijs voor de Laatste Stelling van Fermat, geschreven door de AI van Anthropic, bevat bijvoorbeeld 13 miljoen regels.
De betrouwbaarheid van AI-modellen
Bij het gebruik van AI om een model van software in Lean te maken, rijst de vraag: is dit model getrouw (faithful) aan de oorspronkelijke code?
Om dit te controleren, wordt gebruikgemaakt van differential testing, waarbij het Lean-model en het daadwerkelijke programma naast elkaar worden gedraaid om discrepanties te vinden. Er zijn al gevallen bekend waarbij AI (zoals Claude) werd gevraagd om bugs in zijn eigen code (Claude Code) te vinden via Lean, wat leidde tot echte bugfixes.
De Navier-Stokes casus
Een voorbeeld van de subtiliteit van dit proces is het bewijs voor de Navier-Stokes-vergelijkingen. Er ontstond controverse omdat het informele bewijs in natuurlijke taal en het formele bewijs in Lean niet volledig overeenkwamen (bijvoorbeeld over het gebruik van een vierde versus een vijfde afgeleide).
Om dit soort mismatches te voorkomen, is er de tool Verso Blueprint. Deze maakt het mogelijk om natuurlijke taal en LaTeX te mengen met Lean, waardoor de presentatie en het formele bewijs beter op elkaar afgestemd kunnen worden.
De toekomst van Software Engineering
De focus van de software engineer verschuift van het schrijven van code naar het definiëren van requirements en specificaties. Er ontstaan twee kritieke kloven:
- De requirement-kloof: Het verschil tussen wat men wil en wat men kan opschrijven.
- De model-kloof: De vraag of de testomstandigheden representatief zijn voor de productieomgeving.
De geverifieerde softwarestack
De visie van de "verified stack" richt zich op kritieke softwarecomponenten:
- Besturingssystemen;
- Compilers;
- Communicatielagen (zoals TCP/IP).
Wanneer een leverancier claimt dat software "formeel geverifieerd" is, zijn de belangrijkste vragen om de validiteit te controleren:
- Welke specificaties en eigenschappen zijn precies geverifieerd?
- Welke proof checker kernel is gebruikt?
- Hoe groot is de trusted codebase?
AI-Agents en beveiliging
Voor autonome agenten betekent verificatie vooral het creëren van betrouwbare sandboxes en het handhaven van strikte policies. Omdat agenten zeer goed zijn in het vinden van kwetsbaarheden, is het essentieel dat de code die deze policies afdwingt formeel geverifieerd is. Om te voorkomen dat een agent een fout in één specifieke kernel exploiteert, kan men gebruikmaken van meerdere, onafhankelijk geïmplementeerde kernels (bijvoorbeeld in Rust, C#, Haskell of zelfs TeX).
Impact op Wiskunde en Natuurkunde
Wiskunde is het ideale domein voor formele verificatie omdat definities er inherent precies zijn. Met Mathlib kunnen wiskundigen nu op een schaal werken die voorheen onmogelijk was. Terence Tao heeft bijvoorbeeld projecten opgezet waarbij hij als architect fungeerde en anderen (of AI) de "gaten" in het bewijs vulden, waarbij Lean zorgde voor de verificatie van de bijdragen.
Theoretische Natuurkunde
In de theoretische natuurkunde begint dit proces ook vorm te krijgen via Physlib. Hoewel natuurkunde modellen van de echte wereld gebruikt (die inherent onprecies zijn), kunnen de wiskundige modellen binnen die theorieën wel formeel geverifieerd worden. Er zijn al gevallen bekend waarbij formele verificatie bugs in belangrijke natuurkundige papers heeft blootgelegd.
De verschuiving van IQ naar Compute
Er vindt een verschuiving plaats in wie "wint" in de academische wereld. Waar voorheen rauwe intelligentie en het vermogen om mentale pijn te verdragen (het moeizame proces van bewijzen) doorslaggevend waren, wordt toegang tot rekenkracht (compute) steeds belangrijker. De persoon met het grootste cluster kan meer bewijzen genereren en verifiëren dan iemand zonder die middelen.
Toepassingen in andere domeinen
Naast wiskunde en software engineering is er interesse in andere velden:
- Financiën: Het formaliseren van handelsalgoritmen en de wiskundige achtergrond van financiële instrumenten.
- Chemie en Biologie: Het bouwen van libraries voor wetenschappelijke precisie.
- Recht: Hoewel recht vaak subjectief is, zijn bepaalde delen, zoals civiele procedures, zeer formulaic en bijna als een programma te beschouwen, wat ze geschikt maakt voor formalisatie.
- Accountancy: Het vertalen van algemeen aanvaarde boekhoudprincipes (GAAP) en belastingwetgeving naar formele regels.
Wanneer AI de code schrijft, wie bewijst dan dat het werkt?
Wat is formele verificatie?
Voor iemand die gewend is aan code-reviews, QA en testen, is formele verificatie een fundamenteel andere benadering. Lean is zowel een programmeertaal als een proof assistant. Hiermee kan men niet alleen code schrijven, maar ook eigenschappen definiëren waaraan die code moet voldoen. Men kan openstaande wiskundige conjectures formuleren en bewijzen leveren voor deze claims.
Het cruciale verschil is dat het bewijs niet informeel is, maar geschreven in de Lean-taal en door een machine wordt gecontroleerd (machine-checked). Om een resultaat te vertrouwen dat met Lean is bewezen, hoeft men enkel de 'kernel' te vertrouwen—het onderdeel waar het bewijs daadwerkelijk wordt gecontroleerd.
Verificatie versus traditioneel testen
Traditioneel testen is zeer nuttig voor het vinden van bugs, maar het is niet in staat om te bewijzen dat er geen bugs zijn. Testing toont de aanwezigheid van fouten aan, niet de afwezigheid ervan.
Met formele verificatie begint men bij de eigenschappen. Men kan AI vragen om code te implementeren die aan specifieke eigenschappen voldoet en om een Lean-bewijs te leveren dat dit aantoont. Een voorbeeld hiervan is het porten van zlib (een compressiebibliotheek) naar Lean. Hierbij is een eigenschap bewezen die stelt dat wanneer data wordt gecomprimeerd en vervolgens gedecomprimeerd, de oorspronkelijke data exact terugkomt zonder verlies of corruptie.
AI en de versnelling van formele verificatie
Autoformalisatie
Een belangrijke ontwikkeling is autoformalisatie: het vermogen van frontier-modellen om code of wiskundige teksten (bestaande uit woorden en symbolen) te vertalen naar Lean. Dit stelt ontwikkelaars in staat om bestaande code in elke wislige taal om te zetten naar een Lean-model voor verificatie.
Voor Rust-code bestaat er een specifieke tool genaamd Aeneas, die wordt gebruikt door teams zoals het SymCrypt-team bij Microsoft om cryptografische bibliotheken te verifiëren.
Schaalbaarheid en AI-bewijzen
De schaal van bewijzen is door AI explosief gegroeid. De menselijke wiskundige bibliotheek voor Lean, Mathlib, telt 2,5 miljoen regels en deed er tien jaar over om te worden opgebouwd. Inmiddels zijn er AI-gegenereerde bewijzen van 50 miljoen regels. Het bewijs voor de Laatste Stelling van Fermat, geschreven door de AI van Anthropic, bevat bijvoorbeeld 13 miljoen regels.
De betrouwbaarheid van AI-modellen
Bij het gebruik van AI om een model van software in Lean te maken, rijst de vraag: is dit model getrouw (faithful) aan de oorspronkelijke code?
Om dit te controleren, wordt gebruikgemaakt van differential testing, waarbij het Lean-model en het daadwerkelijke programma naast elkaar worden gedraaid om discrepanties te vinden. Er zijn al gevallen bekend waarbij AI (zoals Claude) werd gevraagd om bugs in zijn eigen code (Claude Code) te vinden via Lean, wat leidde tot echte bugfixes.
De Navier-Stokes casus
Een voorbeeld van de subtiliteit van dit proces is het bewijs voor de Navier-Stokes-vergelijkingen. Er ontstond controverse omdat het informele bewijs in natuurlijke taal en het formele bewijs in Lean niet volledig overeenkwamen (bijvoorbeeld over het gebruik van een vierde versus een vijfde afgeleide).
Om dit soort mismatches te voorkomen, is er de tool Verso Blueprint. Deze maakt het mogelijk om natuurlijke taal en LaTeX te mengen met Lean, waardoor de presentatie en het formele bewijs beter op elkaar afgestemd kunnen worden.
De toekomst van Software Engineering
De focus van de software engineer verschuift van het schrijven van code naar het definiëren van requirements en specificaties. Er ontstaan twee kritieke kloven:
- De requirement-kloof: Het verschil tussen wat men wil en wat men kan opschrijven.
- De model-kloof: De vraag of de testomstandigheden representatief zijn voor de productieomgeving.
De geverifieerde softwarestack
De visie van de "verified stack" richt zich op kritieke softwarecomponenten:
- Besturingssystemen;
- Compilers;
- Communicatielagen (zoals TCP/IP).
Wanneer een leverancier claimt dat software "formeel geverifieerd" is, zijn de belangrijkste vragen om de validiteit te controleren:
- Welke specificaties en eigenschappen zijn precies geverifieerd?
- Welke proof checker kernel is gebruikt?
- Hoe groot is de trusted codebase?
AI-Agents en beveiliging
Voor autonome agenten betekent verificatie vooral het creëren van betrouwbare sandboxes en het handhaven van strikte policies. Omdat agenten zeer goed zijn in het vinden van kwetsbaarheden, is het essentieel dat de code die deze policies afdwingt formeel geverifieerd is. Om te voorkomen dat een agent een fout in één specifieke kernel exploiteert, kan men gebruikmaken van meerdere, onafhankelijk geïmplementeerde kernels (bijvoorbeeld in Rust, C#, Haskell of zelfs TeX).
Impact op Wiskunde en Natuurkunde
Wiskunde is het ideale domein voor formele verificatie omdat definities er inherent precies zijn. Met Mathlib kunnen wiskundigen nu op een schaal werken die voorheen onmogelijk was. Terence Tao heeft bijvoorbeeld projecten opgezet waarbij hij als architect fungeerde en anderen (of AI) de "gaten" in het bewijs vulden, waarbij Lean zorgde voor de verificatie van de bijdragen.
Theoretische Natuurkunde
In de theoretische natuurkunde begint dit proces ook vorm te krijgen via Physlib. Hoewel natuurkunde modellen van de echte wereld gebruikt (die inherent onprecies zijn), kunnen de wiskundige modellen binnen die theorieën wel formeel geverifieerd worden. Er zijn al gevallen bekend waarbij formele verificatie bugs in belangrijke natuurkundige papers heeft blootgelegd.
De verschuiving van IQ naar Compute
Er vindt een verschuiving plaats in wie "wint" in de academische wereld. Waar voorheen rauwe intelligentie en het vermogen om mentale pijn te verdragen (het moeizame proces van bewijzen) doorslaggevend waren, wordt toegang tot rekenkracht (compute) steeds belangrijker. De persoon met het grootste cluster kan meer bewijzen genereren en verifiëren dan iemand zonder die middelen.
Toepassingen in andere domeinen
Naast wiskunde en software engineering is er interesse in andere velden:
- Financiën: Het formaliseren van handelsalgoritmen en de wiskundige achtergrond van financiële instrumenten.
- Chemie en Biologie: Het bouwen van libraries voor wetenschappelijke precisie.
- Recht: Hoewel recht vaak subjectief is, zijn bepaalde delen, zoals civiele procedures, zeer formulaic en bijna als een programma te beschouwen, wat ze geschikt maakt voor formalisatie.
- Accountancy: Het vertalen van algemeen aanvaarde boekhoudprincipes (GAAP) en belastingwetgeving naar formele regels.