Animation, Verification and Visualisation of Prolog Transition Systems with ProB
Dit artikel presenteert recente uitbreidingen van de Prolog-animatiemodus van ProB, inclusief verbeterde simulatie, trace-replay, gebruikersinvoer en visualisatiefuncties, die worden toegepast op casestudies zoals Connect Four om strategie-evaluatie, Event-B bewijsverificatie en educatieve demonstraties te ondersteunen.
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 mysterie probeert op te lossen, maar in plaats van een plaats delict is je "misdaad" een stuk computercode dat een bug zou kunnen verbergen. In de wereld van de computerwetenschappen wordt dit formele verificatie genoemd. Het is alsof je een perfecte, wiskundige kaart bouwt van hoe een programma zou moeten werken, en vervolgens elke stap controleert om er zeker van te zijn dat het programma niet verdwaalt of crasht. Meestal houdt dit complexe wiskunde in die alleen experts kunnen lezen. Maar wat als je die droge wiskunde kunt veranderen in een levend, ademend videospel? Dat is de magie van Prolog, een programmeertaal die denkt in logische puzzels in plaats van standaard instructies. Wanneer je Prolog combineert met een tool genaamd PROB, krijg je een "model checker" — een superintelligente robot die jouw logische puzzel kan zien uitspelen, fouten kan opsporen en je zelfs in staat stelt om door het verhaal te stappen, één zet tegelijk, om precies te zien waar de dingen misgaan.
Dit artikel gaat over het geven van een grote upgrade aan die robot. De auteurs, een team van de Heinrich Heine Universiteit Düsseldorf, hebben een bestaande tool genaamd PROB (die al Prolog spreekt) genomen en er een hele nieuwe set superkrachten aan toegevoegd. Denk aan het veranderen van een zwart-wit schetsboek in een high-definition, interactieve filmstudio. Ze hebben het makkelijker gemaakt om te visualiseren wat er gebeurt, een manier toegevoegd om duizenden spellen in seconden te simuleren om strategieën te testen, en zelfs een systeem gecreëerd waarbij je de actie kunt pauzeren, de computer een specifieke instructie kunt geven en kunt kijken hoe deze reageert. Ze hebben deze nieuwe functies getest door het klassieke spel Connect Four in een logische puzzel te veranderen, waarbij verschillende computer-"hersenen" tegen elkaar werden uitgespeeld om te zien wie wint. Het resultaat is een toolkit die het controleren van complexe computercode meer laat voelen als het spelen van een spel en minder als het doen van huiswerk.
De Magie van de "Levende" Logische Kaart
In de kern beschrijft het artikel hoe je een set regels geschreven in Prolog (een taal die eruitziet als een lijst met "als dit, dan dat"-statements) kunt veranderen in een transitiesysteem. Stel je een bordspel voor waarbij elk vakje een "toestand" is (zoals "Verkeerslicht is Rood") en elke zet een "transitie" is (zok als "Schakel naar Groen"). In de oude dagen kon PROB deze regels laden en je een knop laten indrukken om van de ene naar de andere stap te bewegen, waarbij het pad werd getoond. Maar het was een beetje onhandig.
De auteurs hebben deze ervaring aanzienlijk opgepoetst. Ten eerste hebben ze de visualisaties veel beter gemaakt. Voorheen zag je misschien alleen een tekstlijst met "Toestand: Rood". Nu hebben ze tools geïntegreerd die daadwerkelijke plaatjes kunnen tekenen. Als je een verkeerslicht modelleert, kan de tool nu een echte, gloeiende rode cirkel op je scherm tonen. Als je een schaakspel modelleert, kan het het schaakbord weergeven met de stukken op hun exacte posities. Nog cooler is dat ze interactieve visualisaties hebben toegevoegd: je kunt met de rechtermuisknop op een stuk in de afbeelding klikken, en de tool laat je alle legale zetten zien die je kunt maken, net als in een echt videospel. Ze hebben ook een functie gemaakt om deze visuele verhalen te exporteren als HTML-bestanden, zodat je jouw "film" van de logische puzzel met iedereen kunt delen, zelfs als zij niet over de speciale software beschikken.
De "Pauzeer en Vraag" Functie
Een van de meest opwindende nieuwe trucs is iets wat ze symbolische transities noemen. Stel je voor dat je een spel speelt tegen een computer, maar de computer loopt vast omdat hij niet weet welke zet jij als volgende wilt doen. In het verleden kon de computer dan gewoon gokken of stoppen. Nu kan de tool pauzeren en zeggen: "Hé, ik heb een mens nodig om dit deel te beslissen!" Het wacht tot jij een specifieke waarde invoert (zoals "Verplaats de ridder naar F3") en vervolgt dan het verhaal. Dit is enorm belangrijk voor het testen van complexe logica, zoals het bewijzen van een wiskundig theorema, waarbij een mens een keuze moet maken die een computer niet op zichzelf kan voorspellen.
Ze hebben ook trace replay verbeterd. Denk aan dit als een "Save Game" functie. Als je een perfecte reeks zetten vindt die een probleem oplost, kun je deze opslaan. Later kun je dat save-bestand laden, en de tool speelt exact dezelfde zetten stap voor stap af. Dit is cruciaal om er zeker van te zijn dat als je vandaag een bug oplost, je er niet per ongeluk morgen weer een hebt geïntroduceerd. De nieuwe versie slaat deze replays op in een slim formaat (JSON) dat zich precies herinnert in welke toestand je was, zodat de replay elke keer perfect is.
De "Miljoen-Spellen" Simulator
Misschien wel de krachtigste toevoeging is de mogelijkheid om Monte Carlo-simulaties uit te voeren. Dit is een chique manier om te zeggen: "laten we het spel een miljoen keer spelen om te zien wat er gebeurt." De auteurs hebben PROB verbonden met een simulator genaamd SIMB. In plaats van alleen één spel te bekijken, kun je de computer de opdracht geven om Connect Four 10.000 keer achter elkaar te spelen, waarbij verschillende strategieën tegen elkaar strijden.
Ze gebruikten dit om drie verschillende "hersenen" voor Connect Four te testen:
- Random: Een speler die zomaar een zet kiest zonder na te denken.
- Minimax: Een klassieke AI die een paar zetten vooruit kijkt om het beste pad te vinden.
- MCTS (Monte Carlo Tree Search): Een intelligentere AI die veel mogelijke toekomsten simuleert om zijn beslissing te nemen.
De resultaten waren fascinerend. Wanneer de Random speler tegen Minimax vocht, won de Random speler ongeveer 55,7% van de tijd als hij begon, maar dat aantal daalde naar 7,3% wanneer Minimax begon. Echter, toen Minimax tegen MCTS vocht, verpletterde de MCTS-speler het met een overwinning in ongeveer 99% van de spellen. De auteurs merkten op dat hun Minimax-speler een beetje zwak was omdat deze slechts twee zetten vooruit keek (een ondiepe zoektocht), wat verklaart waarom hij zo hard verloor van de meer geavanceerde MCTS.
Ze maten ook hoe lang deze spellen duurden. De Random- en Minimax-spelers waren snel en voltooiden 10.000 spellen in minder dan 20 minuten. Maar de MCTS-speler was wat langzamer en deed er enkele uren over om hetzelfde aantal spellen te spelen omdat hij veel zwaarder nadacht. Interessant genoeg ontdekten ze dat de MCTS-speler gemiddeld slechts 9,7 zetten nodig had om de Random-speler te verslaan, terwijl Minimax er 18,0 nodig had.
Waarom dit Belangrijk is
Dit gaat niet alleen over het spelen van spelletjes. De auteurs laten zien dat deze tools perfect zijn voor onderwijs. Stel je voor dat een student leert programmeren; in plaats van alleen naar een scherm vol tekst te staren, kan de student zien hoe de code tot leven komt als een visuele animatie. Als ze een fout maken, kunnen ze zien hoe het "verkeerslicht" op rood springt of het "schaakstuk" verdwijnt, wat het veel gemakkelijker maakt om te begrijpen waar het misging.
Het paper benadrukt ook dat dit systeem geweldig is voor het bouwen van interpreters. Een interpreter is als een vertaler die ervoor zorgt dat de ene programmeertaal met de andere kan communiceren. Door de nieuwe functies van PROB te gebruiken, kunnen studenten en onderzoekers gemakkelijk vertalers voor andere talen (zo zoals Java of WebAssembly) bouwen en deze direct testen door ze in de visualizer te laten draaien.
Uiteindelijk beweren de auteurs niet dat ze de computerwetenschap volledig hebben opgelost. Ze suggereren dat door deze logische tools visueler, interactiever en in staat tot massale simulaties te maken, we bugs eerder kunnen vangen, studenten beter kunnen onderwijzen en complexe systemen dieper kunnen begrijpen. Ze geven zelfs een hint naar een toekomst waarin deze tools gebruikt kunnen worden om AI-agenten te trainen via reinforcement learning, waardoor de computer kan leren om spellen (of logische puzzels) te spelen door middel van trial-and-error, net zoals een mens dat zou doen. Maar voor nu is de belangrijkste overwinning het veranderen van de droge, abstracte wereld van logische bewijzen in een speeltuin waar je de regels kunt zien, kunt aanraken en ermee kunt spelen.
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.