← Nieuwste papers
🤖 AI

ConVer: Using Contracts and Loop Invariant Synthesis for Scalable Formal Software Verification

Dit artikel introduceert ConVer, een compositional verificatietool met een top-down aanpak die gebruikmaakt van grote taalmodellen om functiecontracten te synthetiseren en deze iteratief verfijnt via een CEGAR-CEGIS-lus om de toestandsruimte-explosie bij het verifiëren van grote C-programma's en geconverteerde LF-modellen te overwinnen.

Oorspronkelijke auteurs: Muhammad A. A. Pirzada, Weiqi Wang, Yiannis Charalambous, Konstantin Korovin, Lucas C. Cordeiro

Gepubliceerd 2026-05-27
📖 6 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Muhammad A. A. Pirzada, Weiqi Wang, Yiannis Charalambous, Konstantin Korovin, Lucas C. Cordeiro

Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer

Stel je voor dat je probeert te bewijzen dat een enorme, complexe fabriek perfect draait. De fabriek heeft duizenden machines, transportbanden en arbeiders, allemaal verbonden in een gigantisch web. Als je probeert elke machine, elk tandwiel en elke arbeider op exact hetzelfde moment te observeren om een fout te vinden, zou je overweldigd raken. De schaal van de informatie zou je hersenen laten "expanderen" voordat je de fout zou kunnen vinden. Dit is precies het probleem dat software-engineers tegenkomen bij het verifiëren van grote computerprogramma's: er zijn te veel mogelijke toestanden voor de computer om allemaal tegelijk te controleren.

Dit artikel introduceert CONVER, een nieuw hulpmiddel dat is ontworpen om dit "overweldigings"-probleem op te lossen door te veranderen hoe we de code controleren. In plaats van naar de hele fabriek tegelijk te staren, fungeert CONVER als een slimme, top-down manager die het probleem opsplitst in kleine, hanteerbare stukjes.

Hier is hoe CONVER werkt, met behulp van eenvoudige analogieën:

1. De "Top-Down" Strategie: Het Blauwdruk versus de Bakstenen

Meestal moet je, om een programma te verifiëren, een gedetailleerd regelboek (een "contract") schrijven voor elke afzonderlijke functie (elk klein machine) voordat je het hele systeem kunt controleren. Dit is als proberen een handleiding te schrijven voor elke schroef in een auto voordat je kunt zeggen dat de auto veilig is. Het kost eeuwig en vereist experts.

CONVER draait dit verhaal om.

  • De Analogie: Stel je hebt een doel: "De fabriek mag nooit een rood voorwerp produceren."
  • De Oude Manier: Je vraagt elke arbeider: "Wat zijn jullie regels?" en probeert een systeem van onderop te bouwen.
  • De CONVER Manier: Je begint met het grote doel ("Geen rode voorwerpen"). Vervolgens vraag je een AI-assistent (een Groot Taalmodel, of LLM) om de regels voor elke arbeider te raden die het grote doel garanderen. Het is alsof je zegt: "Als de assemblagelijnarbeider deze eenvoudige regels volgt, zal het eindproduct veilig zijn." Je hoeft niet te weten hoe het brein van de arbeider werkt, alleen dat ze de regels volgen.

2. De "Slimme Lus": De Detective en de AI

Zodra de AI de regels (contracten) heeft geraden, zet CONVER ze aan de tand met een tweestapslus, zoals een detective en een verdachte die het spel "raad de regel" spelen.

  • Stap A: De Systeemcontrole (De Manager): CONVER controleert of de hele fabriek werkt als iedereen de geraden regels volgt. Het kijkt niet naar binnen in de machines; het vertrouwt gewoon op de regels.
  • Stap B: De Functiecontrole (De Inspecteur): CONVER controleert vervolgens of de echte machines die regels daadwerkelijk kunnen volgen.
  • De "CEGAR"-Lus: Als de machines de regels niet kunnen volgen, geeft CONVER niet op. Het neemt de specifieke fout (het "tegenvoorbeeld") en toont deze aan de AI.
    • Analogie: De AI zegt: "Ik dacht dat de arbeider 50 pond kon tillen." De Inspecteur zegt: "Nee, de arbeider liet een doos van 50 pond vallen." De AI leert van deze specifieke mislukking en schrijft een nieuwe, betere regel: "De arbeider kan tot 40 pond tillen."
    • Dit gebeurt keer op keer totdat de regels perfect zijn.

3. De "SMART ICE"-Lering: Het Filteren van Ruis

Soms maakt de AI een fout omdat het de vraag verkeerd heeft begrepen, niet omdat de regel verkeerd is. Om dit op te lossen, gebruikt CONVER een techniek die SMART ICE-lering heet.

  • De Analogie: Stel je voor dat je een hond een trucje leert. Als de hond gaat zitten als je "Blijf" zegt, weet je dat het een goede truc is. Maar als de hond gaat zitten omdat hij een eekhoorn zag, is dat een vals alarm.
  • Hoe het werkt: CONVER filtert de "vals alarmen" (ruis) eruit en houdt alleen de "echte fouten" (signaal) over. Het classificeert de fouten in "Positief" (dit werkte), "Negatief" (dit is zeker mislukt) en "Implicatie" (als dit gebeurt, dan moet dat gebeuren). Dit helpt de AI veel sneller te leren en te voorkomen dat ze in de war raakt door haar eigen fouten.

4. De "Pre-Abstractie"-Truc: De Tekeningversie

Sommige delen van de code zijn zo complex (zoals een fabriek met oneindige lussen) dat zelfs het controleren van de regels te moeilijk is.

  • De Analogie: Als een machine te ingewikkeld is om in detail te tekenen, tekent CONVER eerst een eenvoudige tekeningversie ervan. Het controleert of de tekening werkt. Als dat zo is, vervangt het de tekening door de echte machine en controleert het opnieuw.
  • Hierdoor kan CONVER programma's verwerken die normaal gesproken het geheugen van een computer zouden laten crashen.

Wat Vonden Ze?

De onderzoekers testten CONVER op vier verschillende "gymzalen" van code, variërend van simpele wiskundepuzzels tot complexe real-world bestandsparsers en recursieve lussen.

  • Simpele Programma's: Op een set van 45 standaardprogramma's was CONVER ongelooflijk succesvol en verifieerde 82% tot 96% ervan. De meeste hiervan werden opgelost in slechts één ronde van controleren, wat betekent dat de AI de regels bijna perfect op de eerste keer raakte.
  • Moeilijkere Programma's: Op moeilijkere sets (zoals het parseren van beveiligingscertificaten of complexe recursieve lussen) daalde het succespercentage naar 33% tot 64%. Dit is te verwachten omdat deze programma's veel moeilijker te begrijpen zijn.
  • De "AI"-Factor: Ze testten drie verschillende AI-modellen (Qwen, Claude en GPT). Hoe slimmer het AI-model, hoe beter CONVER presteerde. De slimste AI (GPT-OSS 120b) loste de meeste problemen op, wat bewijst dat de kwaliteit van de "gissingen" van de AI de sleutel tot succes is.

De Conclusie

CONVER is een hulpmiddel dat AI gebruikt om de "regelboeken" voor software te schrijven, en vervolgens een slim, iteratief proces gebruikt om die regelboeken te verbeteren totdat ze perfect zijn. Het verandert een enorme, onoplosbare puzzel in een reeks kleine, oplosbare stappen.

  • Het vervangt de noodzaak voor verificatie niet; het automatiseert het moeilijkste deel (het schrijven van de regels).
  • Het garandeert geen 100% succes op elk enkel complex programma, maar het lost er veel op die voorheen niet automatisch te controleren waren.
  • Het werkt door te luisteren naar mislukkingen: Elke keer dat de software faalt, leert het hulpmiddel precies waarom en vraagt het de AI om het opnieuw te proberen met een betere gok.

Kortom, CONVER is als een onuitputtelijke, super-slimme manager die een enorm probleem opsplitst in kleine taken, leert van elke fout en het plan blijft verfijnen totdat de klus geklaard is.

Verdrinkt u in papers in uw vakgebied?

Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.

Probeer Digest →