When Agda met Vampire
Dit paper introduceert een prototype dat Agda integreert met de geautomatiseerde theorema-bewijzer Vampire door bewijsverplichtingen naar een expressief fragment van eerste-orde logica te vertalen en de resulterende klassieke bewijzen terug te vertalen naar constructieve bewijstermen, waardoor complexe bewijzen over velden met eenheidswortels automatisch worden gegenereerd met minimale engineeringinspanning.
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 twee zeer gespecialiseerde experts hebt die samen moeten werken aan een enorm bouwwerk, maar ze spreken totaal verschillende talen en hebben ook nog eens heel verschillende wereldbeelden.
- Expert A (Agda) is een constructivistische architect. Hij bouwt alleen dingen die hij zelf kan zien en aanraken. Als hij zegt "dit huis bestaat", dan moet hij ook de blauwdrukken en de bakstenen kunnen tonen. Hij werkt volgens strenge, logische regels waarbij niets mag worden aangenomen zonder bewijs. Hij is extreem nauwkeurig, maar soms traag en houdt niet van "gokken".
- Expert B (Vampire) is een klassieke detective. Hij is razendsnel, ziet patronen waar niemand anders ze ziet en kan in een flits een heel complex misdrijf oplossen. Maar hij werkt met een andere logica: hij gelooft dat als iets niet onmogelijk is, het moet waar zijn (de wet van de uitgesloten midden). Hij heeft geen blauwdrukken nodig, alleen het bewijs dat het niet anders kan.
Het probleem? De architect (Agda) wil de detective (Vampire) niet vertrouwen omdat die detective soms "magische" stappen maakt die de architect niet kan controleren. Als de detective zegt "Ik heb het gevonden!", zegt de architect: "Toon me de stap-voor-stap constructie, anders bouw ik het niet."
Het idee: De "Vertaler" en de "Ombouw"
De auteurs van dit papier (Artjoms Šinkarovs en Michael Rawson) hebben een slimme oplossing bedacht. Ze hebben een vertaler gebouwd die deze twee experts met elkaar laat praten, zonder dat ze hun eigen identiteit hoeven te verliezen.
Hier is hoe het werkt, in drie simpele stappen:
1. De Vertaling (Van Bouwplaat naar Detectivetaal)
De architect heeft een lastig probleem: "Bewijs dat deze twee complexe constructies hetzelfde zijn." Dit is te ingewikkeld voor de architect om snel te doen.
De vertaler pakt dit probleem en vertaalt het naar een taal die de detective begrijpt: Eenvoudige logica.
- Hij haalt de complexe, abstracte regels van de architect weg.
- Hij maakt er een reeks simpele "als-dan" regels van (zoals: "Als A waar is, en B waar is, dan is C waar").
- Dit is de taal van de detective.
2. De Detective aan het werk
De detective (Vampire) krijgt deze simpele regels en gaat aan het werk. Omdat hij razendsnel is, vindt hij in een fractie van een seconde een oplossing. Hij schreeuwt: "Ik heb het! Het is onmogelijk dat dit niet klopt!"
- Let op: De detective geeft een antwoord in zijn eigen stijl: "Als je aanneemt dat het niet klopt, dan krijg je een tegenstrijdigheid." Dit is een klassieke manier van bewijzen.
3. De Ombouw (Van Detective-antwoord naar Bouwplaat)
Hier komt de magie. De detective heeft geen blauwdrukken, alleen een bewijs dat "het niet fout kan zijn". De architect wil echter een blauwdruk.
De vertaler pakt het bewijs van de detective en bouwt het om.
- Hij neemt de "tegenstrijdigheid" van de detective en draait het om naar een positief bewijs.
- Hij vervangt de "magische" stappen van de detective door concrete, stap-voor-stap constructies die de architect kan begrijpen.
- Het resultaat is een perfect, controleerbaar bewijs in de taal van de architect.
De architect kijkt naar het resultaat, knikt en zegt: "Ja, dit klopt. Ik kan dit bouwen."
Waarom is dit zo cool?
In het papier beschrijven ze een echt voorbeeld uit de praktijk. Ze hadden een heel complex wiskundig probleem over complexe getallen en eenheidswortels (denk aan cirkels en golven in de wiskunde).
- Een professionele architect (een Agda-ontwikkelaar) had twee volle dagen nodig om dit probleem handmatig op te lossen.
- Met hun nieuwe systeem (Agda + Vampire) duurde het een fractie van een seconde.
Het systeem deed het zware, saaie werk van het verbinden van de puzzelstukjes, terwijl de architect zich kon focussen op het grote plaatje.
De Grootte van de Oplossing
Het mooie aan deze aanpak is dat ze geen van beide systemen hebben "herschreven".
- Ze hebben Agda niet aangepast.
- Ze hebben Vampire niet aangepast.
- Ze hebben alleen een tussenlaag (een vertaler) gebouwd die slim genoeg is om te weten wat het kan en wat het niet kan. Ze hebben een stukje van de taal geselecteerd dat voor beide kanten makkelijk te begrijpen is.
Conclusie
Stel je voor dat je een team hebt met een super-nauwkeurige, maar trage ingenieur en een razendsnelle, maar soms ongeduldige detective. In plaats dat ze ruzie maken over hun methodes, geef je ze een tolk die de vragen van de ingenieur vertaalt naar de taal van de detective, en het antwoord van de detective terugvertaalt naar een plan dat de ingenieur kan uitvoeren.
Dit papier laat zien dat je zo automatisering kunt toevoegen aan zeer strenge, veilige systemen zonder de veiligheid te riskeren. Het is alsof je een robotarm hebt die de saaie, repetitieve puzzelstukjes legt, zodat de menselijke bouwer alleen nog maar hoeft te kijken of het eindresultaat mooi 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.