← Nieuwste papers
💻 computer science

Recursive Program Synthesis from Sketches and Mixed-Quantifier Properties

Het artikel presenteert Cataclyst, een nieuwe tool voor tegenvoorbeeldgestuurde enumeratieve synthese die gebruikmaakt van sketching, syntactische beperkingsleer en profylactische pruning om succesvol recursieve programma's te synthetiseren uit eigenschappen in mixed-quantifier eerste-orde logica, waarbij het 59 van de 60 benchmarks oplost en bestaande benaderingen aanzienlijk overtreft.

Oorspronkelijke auteurs: Derek Egolf, Stavros Tripakis

Gepubliceerd 2026-07-23
📖 4 min leestijd☕ Koffiepauze-leesvoer

Oorspronkelijke auteurs: Derek Egolf, Stavros Tripakis

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 een wereld voor waarin je precies kunt beschrijven wat je wilt dat een computerprogramma doet—zoals "deze functie moet een lijst sorteren zonder getallen te verwijderen"—en een machine onmiddellijk de perfecte code voor je schrijft. Deze droom wordt programmasynthese genoemd, en het bevindt zich op het snijvlak van informatica en logica. Om te begrijpen hoe het werkt, kun je het zien als een zeer strikt spelletje "Mad Libs". In plaats van alleen maar willekeurige woorden in de lege plekken in te vullen, krijg je een gedeeld verhaal (een sketch genoemd) met lege plekken, en een set regels (eigenschappen genoemd) waar het uiteindelijke verhaal aan moet voldoen. De taak van de computer is om uit te zoeken welke woorden in de lege plekken moeten komen zodat het verhaal zinvol is en de regels volgt. Het lastige deel is dat het aantal mogbare manieren om die plekken in te vullen oneindig is, zoals het proberen te vinden van een specifiek zandkorreltje op een strand dat elke keer dat je wegkijkt, groter wordt. Als de computer elke mogelijkheid één voor één probeert, zou het eeuwig duren. Dit is waarom onderzoekers altijd zoeken naar slimmere manieren om de zoektocht te snoeien, waardoor de computer slechte ideeën kan overslaan voordat hij ze zelfs maar probeert.

Dit artikel introduceert een nieuwe, slimme manier om dit puzzelstukje op te lossen, specifiek voor programma's die zichzelf aanroepen (recursieve programma's) en complexe regels hebben met betrekking tot "voor alle" en "er bestaat" stellingen. De auteurs, Derek Egolf en Stavros Tripakis, hebben een hulpmiddel gebouwd genaamd CATACLYST dat fungeert als een super slimme detective. In plaats van blindelings elke mogelijke combinatie van code te raden, gebruikt CATACLYST een strategie genaamd counterexample-guided synthesis. Zo verloopt het proces: het hulpmiddel kiest een kandidaat-programma en controleert of het werkt. Als het programma faalt, zegt het hulpmiddel niet alleen "fout" en gaat het verder; het vraagt: "Waarom is dit misgegaan?" en leert vervolgens een les van die fout. Het creëert een regel die zegt: "Maak deze specifieke fout nooit meer," waardoor enorme takken van de zoekboom effectief worden afgesneden, zodat de computer daar nooit tijd aan verspilt.

Het artikel presenteert twee belangrijke trucs om dit leerproces super efficiënt te maken. De eerste is counterexample generalization. Stel je voor dat je een toren van blokken probeert te bouwen, maar deze valt omdat je een zwaar blok op een wankel blok hebt geplaatst. Een eenvoudige leerling zou alleen zeggen: "Gebruik dat zware blok daar niet." Maar een slimme leerling zegt: "Gebruik geen enkel zwaar blok op een wankele plek in dit specifieke patroon." Het hulpmiddel doet dit door te analyseren waarom een programma faalde (zoals een contractschending waarbij een functie met slechte input werd gegeven, of een eigenschapschending waarbij de output fout was) en een brede regel te genereren om soortgelijke fouten te stoppen. De tweede truc is prophylactic pruning. Dit is als het controleren van je outfit voordat je het huis verlaat. In plaats van de hele outfit aan te trekken, naar buiten te lopen en dan te beseffen dat je mismatched sokken draagt, controleer je de sokken terwijl je nog aan het aankleden bent. Het hulpmiddel controleert de regels terwijl het de gaten in de sketch invult, en stopt onmiddellijk als een gedeelde oplossing al gedoemd is, in plaats van te wachten tot het hele programma is gebouwd om het af te wijzen.

De resultaten van deze aanpak zijn behoorlijk indrukwekkend. De auteurs hebben CATACLYST getest op een reeks van 60 benchmarks (een set testproblemen). Met zowel de generalisatie- als de prophylactic pruning-trucs ingeschakeld, loste het hulpmiddel 59 van de 60 benchmarks succesvol op, waarbij elk probleem niet langer dan 2 minuten duurde. Wanneer ze de generalisatietruc uitschakelden, loste het hulpmiddel minder problemen op, en wanneer ze de prophylactic pruning uitschakelden, loste het zelfs nog minder op. Dit suggereert dat beide technieken essentieel zijn voor het succes van het hulpmiddel. Het artikel merkt ook op dat er een ander hulpmiddel bestaat dat vergelijkbare complexe regels kan afhandelen, maar dat de "sketching"-methode die hier wordt gebruikt niet ondersteunt, waardoor een directe rechtstreekse race met dat andere hulpmiddel niet mogelijk was, maar het nieuwe hulpmiddel presteerde nog steeds beter dan dat andere hulpmiddel op de benchmarks die het kon draaien. Uiteindelijk laat het artikel zien dat door te leren van fouten en fouten vroegtijdig te controleren, we computers kunnen leren om veel sneller complexe, zelfcorrigerende code te schrijven dan voorheen.

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 →