← Nieuwste papers
💻 computer science

Defusing Logic Bombs in Symbolic Execution with LLM-Generated Ghost Code

Het paper introduceert Gordian, een hybride raamwerk voor symbolische uitvoering dat LLMs selectief gebruikt om lichte 'ghost code' te genereren die een SMT-oplosser ondersteunt bij het hanteren van complexe codefragmenten, waardoor de testdekking aanzienlijk wordt verbeterd ten opzichte van traditionele en puur op LLM gebaseerde technieken.

Oorspronkelijke auteurs: Dimitrios Stamatios Bouras, Sergey Mechtaev

Gepubliceerd 2026-03-23
📖 5 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Dimitrios Stamatios Bouras, Sergey Mechtaev

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 een detective bent die een heel complex raadsel moet oplossen: een computerprogramma. Je wilt weten of je een bepaalde knop kunt indrukken die een geheime boodschap onthult (een "bug" of een "logic bomb"). Om dit te doen, gebruik je een supersterke, maar soms stijve robot-assistent genaamd Symbolische Executie.

Deze robot is slim: hij probeert alle mogelijke ingangen van het programma tegelijkertijd te testen. Maar hij heeft twee grote zwaktes:

  1. Hij haat wiskundige puzzels: Als het programma ingewikkelde wiskunde of trigonometrie (zoals sinussen en cosinussen) bevat, raakt de robot in de war. Hij kan de berekening niet "oplossen" en stopt.
  2. Hij raakt verdwaald in een doolhof: Als het programma met enorme lijsten van data werkt (zoals een boomstructuur), zijn er zo veel mogelijke paden dat de robot in de war raakt en nooit verder komt.

Recente pogingen om dit op te lossen waren om de robot te vervangen door een LLM (een kunstmatige intelligentie zoals ChatGPT). Die is creatief en kan raadsels oplossen, maar hij is slecht in het onthouden van de hele geschiedenis. Hij vergeet snel wat er in de eerste stap van het programma is gebeurd, waardoor hij de grote, complexe puzzels niet kan oplossen.

De Oplossing: Gordian

De auteurs van dit papier hebben Gordian bedacht. De naam verwijst naar de "Gordische knoop" – een onmogelijke knoop die Alexander de Grote oploste door hem simpelweg door te hakken. Gordian doet iets vergelijkbaars, maar in plaats van de knoop te hakken, laat hij een slimme assistent een tijdelijke brug bouwen om de knoop te omzeilen.

Gordian werkt als een team van twee:

  • De Robot (de traditionele solver) doet het zware, nauwkeurige werk en houdt het grote plaatje in de gaten.
  • De LLM (de creatieve AI) komt alleen helpen op de momenten dat de robot vastloopt.

De LLM schrijft geen hele nieuwe test, maar schrijft een klein stukje "spookcode" (ghost code). Dit is code die niet echt bestaat in het programma, maar die de robot helpt om de moeilijke stukken te begrijpen.

Hier zijn de drie manieren waarop deze "spookcode" werkt, met alledaagse analogieën:

1. De Omgekeerde Trap (Inversie)

Stel je voor dat je een trap moet beklimmen, maar de treden zijn gemaakt van vloeibaar glas (de moeilijke wiskunde). De robot kan niet omhoog.

  • Wat Gordian doet: De LLM bedenkt een truc: "Als we weten waar we naar toe willen, kunnen we de trap niet omhoog, maar wel naar beneden lopen?"
  • De LLM schrijft een stukje code dat de moeilijke wiskunde omkeert. In plaats van te vragen "Wat is de uitkomst van deze ingewikkelde formule?", vraagt het: "Welke invoer geeft deze uitkomst?"
  • De robot loopt nu de trap naar beneden (vanuit het doel naar de start) om te zien welke ingang nodig is. Dit lost de wiskundige blokkade op.

2. De Vervangende Pop (Surrogates)

Soms is een stukje code zo complex dat het niet om te keren is (zoals een magische doos die je niet open kunt maken).

  • Wat Gordian doet: De LLM zegt: "Laten we die magische doos even vervangen door een simpele pop die er hetzelfde uitziet, maar makkelijker te openen is."
  • De robot test nu met die simpele pop. Als hij een oplossing vindt, controleert hij daarna even of die oplossing ook werkt met de echte, moeilijke doos. Zo omzeilt hij de complexiteit zonder de logica te verliezen.

3. De Landkaart van de Doolhof (Heap Partitioning)

Stel je voor dat je een gigantisch doolhof moet verkennen met miljarden mogelijke paden (de "heap" of geheugenstructuur). De robot probeert elk pad, maar wordt moe voordat hij de uitgang vindt.

  • Wat Gordian doet: De LLM kijkt naar het doolhof en zegt: "Wacht, we hoeven niet elk pad te lopen. We weten dat er maar drie soorten doolhoven zijn die belangrijk zijn: een rondje, een rechte lijn, of een Y-vorm."
  • De LLM schrijft code die de robot dwingt om zich te focussen op alleen die drie belangrijke vormen. In plaats van het hele doolhof te verkennen, verkent de robot alleen de relevante stukken. Dit bespaart enorm veel tijd en energie.

Waarom is dit zo goed?

In de tests hebben de auteurs dit getest op echte, moeilijke programma's (zoals wiskundebibliotheken en XML-verwerkers).

  • Resultaat: Gordian vond 52% tot 84% meer van de verborgen "boodschappen" (bugs) dan de oude robot alleen.
  • Vergelijking met AI: Het was zelfs 86% tot 419% beter dan systemen die volledig op de AI vertrouwden.
  • Kosten: Omdat de AI alleen op de moeilijke plekken wordt ingezet (in plaats van de hele tijd), kost het 90% minder rekenkracht (tokens) dan andere AI-methoden.

Conclusie

Gordian is geen vervanging van de robot, maar een slimme tactische assistent. Hij gebruikt de creativiteit van de AI om de robot te helpen de blokkades te omzeilen, terwijl de robot zorgt dat alles logisch en correct blijft. Het is de perfecte combinatie van de sterkte van de oude school (nauwkeurige logica) en de kracht van de nieuwe school (creatieve AI), waardoor we diep in complexe software kunnen kijken zonder vast te lopen.

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 →