← Nieuwste papers
💻 computer science

NESA: Relational Neuro-Symbolic Static Program Analysis

Dit paper introduceert NESA, een samenstellende neuro-symbolische aanpak die grote taalmodellen combineert met een beperkte Datalog-taal voor compilatievrije, aanpasbare statische programma-analyse met verminderde hallucinaties, wat resulteert in prestaties die gelijkwaardig aan of beter zijn dan bestaande technieken voor taken zoals bugdetectie en programmaslicing.

Oorspronkelijke auteurs: Chengpeng Wang, Yifei Gao, Wuqi Zhang, Xuwei Liu, Jinyao Guo, Mingwei Zheng, Qingkai Shi, Xiangyu Zhang

Gepubliceerd 2026-04-15
📖 4 min leestijd☕ Koffiepauze-leesvoer

Oorspronkelijke auteurs: Chengpeng Wang, Yifei Gao, Wuqi Zhang, Xuwei Liu, Jinyao Guo, Mingwei Zheng, Qingkai Shi, Xiangyu Zhang

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 enorme, ingewikkelde machine hebt gebouwd, maar je hebt geen handleiding. Je wilt weten: "Waar zit de fout?" of "Welke onderdelen zijn met elkaar verbonden?"

Vroeger was het antwoord op deze vraag: "Je moet de machine eerst volledig in elkaar zetten (compileren) en een expert in de techniek van de machine zelf (de compiler) nodig hebben om de blauwdrukken te lezen." Dat was lastig, duur en werkte niet als je machine nog niet af was.

NESA is een nieuwe, slimme manier om naar code te kijken zonder die machine eerst af te hoeven bouwen. Het is een samenwerking tussen twee heel verschillende soorten "denkers": een supersterke taalcomputer (LLM) en een strakke, logische rekenmachine.

Hier is hoe het werkt, vertaald naar alledaagse taal:

1. Het Probleem: De "Hallucinerende Expert"

Stel je voor dat je een zeer intelligente, maar soms dromerige expert (een Large Language Model of LLM) vraagt om een fout in je code te vinden.

  • Het goede: Deze expert begrijpt de bedoeling van de code heel goed, zelfs als de code nog niet helemaal af is.
  • Het slechte: Omdat hij soms droomt, kan hij dingen verzinnen die er niet zijn (hallucinaties). Hij zegt misschien: "Hier zit een lek," terwijl er niets is. Of hij mist een echt lek omdat hij dacht dat het een ander probleem was.

2. De Oplossing: Een Team van Twee

De auteurs van dit papier hebben NESA bedacht. Het is als een detectivebureau met twee agenten:

  • Agent A (De Rekenmachine): Deze is 100% accuraat, maar alleen goed voor simpele, zichtbare dingen. Hij kan tellen, kijken naar de structuur van zinnen en weten welke regel op welke regel volgt. Hij hallucineert nooit, maar hij snapt geen complexe logica.
  • Agent B (De Dromer/LLM): Deze is slim en begrijpt de betekenis, maar is soms onnauwkeurig.

De truc van NESA: Ze laten Agent B niet het hele werk doen. Ze breken het grote probleem op in kleine stukjes. Agent A doet het simpele werk (zoals "zoek alle variabelen op regel 5"), en Agent B doet alleen de moeilijke, logische puzzels over die specifieke stukjes.

3. De Regelspelletjes (De "Datalog" taal)

Om dit team te sturen, gebruiken ze een speciale taal die lijkt op een receptboek of een spelregels.

  • In plaats van te zeggen: "Zoek alle bugs," zeggen ze: "Eerst zoek ik alle invoerpunten (Agent A), dan zoek ik alle uitgangspunten (Agent A), en pas dan vraag ik aan Agent B: 'Kun je zien of deze twee met elkaar verbonden zijn?'"
  • Door het werk te verdelen, hoeft Agent B niet te raden over de hele machine. Hij hoeft alleen maar te kijken naar twee specifieke onderdelen. Dat maakt hem veel accurater en minder "dromerig".

4. Slimme Strategieën: "Wachten tot het nodig is"

De auteurs hebben twee slimme manieren bedacht om Agent B nog efficiënter te maken:

  • Lazy Prompting (Uitstel van dienst): Je vraagt Agent B pas iets pas als je zeker weet dat de andere agenten hun werk hebben gedaan. Stel, je vraagt: "Is er een verbinding tussen A en B?" Als je eerst weet dat A en B überhaupt niet in hetzelfde gebouw zitten (door Agent A), hoef je Agent B dat niet eens te vragen. Dat bespaart tijd en geld.
  • Incremental Prompting (Geen dubbel werk): Als Agent B al heeft gezegd dat "A en B verbonden zijn", hoeft je hem dat niet nog een keer te vragen als je een nieuw probleem bekijkt. Het systeem onthoudt het antwoord, zodat je niet twee keer voor hetzelfde antwoord hoeft te betalen.

5. Wat levert het op?

In tests bleek NESA wonderbaarlijk goed te zijn:

  • Het werkt zonder compilatie: Je kunt het gebruiken op code die nog niet eens af is (zoals tijdens het schrijven).
  • Het is aanpasbaar: Je kunt het vertellen welke soort bugs je zoekt (bijvoorbeeld: "zoek naar lekken in het geheugen" of "zoek naar hackers die data stelen") door gewoon een paar voorbeelden te geven, zonder dat je een expert in programmeertaal moet zijn.
  • Het werkt beter dan de concurrentie: In tests vond NESA meer echte bugs en minder nep-bugs dan andere geavanceerde tools. Ze vonden zelfs 13 echte, geheime fouten in echte software die door de ontwikkelaars werden opgelost.

Samenvattend

NESA is als het geven van een specifieke opdracht aan een slimme, maar soms dromerige assistent, terwijl je hem steunt met een strakke rekenmachine voor de feiten. Door het werk te verdelen en slim te plannen, krijg je de creativiteit van de AI zonder de fouten die hij normaal maakt. Het maakt het vinden van softwarefouten makkelijker, sneller en goedkoper voor iedereen.

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 →