Sparkle een bewijssysteem voor Clean Maarten de Mol Katholieke Universiteit Nijmegen 11 januari 2002
Overzicht Inleiding: waarom een bewijssysteem? Korte beschrijving van Sparkle: Implementatie Doelgroep Vogelvlucht Demonstratie Sparkle in het onderwijs.
Inleiding (1) Idee: annoteren van functionele programma’s met eigenschappen. Extra informatie voor de lezer Doel: formeel aantonen dat die eigenschappen correct zijn. Eigenschap wordt certificaat Meer vertrouwen in programma
Inleiding (2) Methode: formeel redeneren. Nodig: formele definities van: semantiek van programmeertaal logica bovenop deze semantiek redeneerstappen binnen deze logica Voordeel: betrouwbaarheid Nadeel: moeilijk uit te voeren Hulpmiddel: bewijssysteem: Sparkle.
Sparkle: implementatie Geschreven in Clean 2.0: Ongeveer regels code Gebruikt bibliotheken: Clean 2.0 compiler(± regels code) Object I/O(± regels code) Sparkle is een van de grootste applicaties geschreven in Clean. Ontwikkeltijd: 3 jaar.
Sparkle: doelgroep Sparkle is sterk gekoppeld aan de programmeertaal Clean: Bewijzen over Clean-programma’s Gemaakt door Clean-programmeurs Sparkle zal vooral als zij-activiteit door niet experts gebruikt worden. Andere invalshoek dan bij generieke bewijssystemen zoals PVS, Coq, Isabelle
Sparkle: vogelvlucht Belangrijkste eigenschappen van een bewijssysteem: Specificatietaal voor programma’s Specificatietaal voor eigenschappen Bibliotheek van redeneerstappen Ondersteuning bij het maken van bewijzen
Sparkle: specificatie Programma: Deel van Clean 2.0: (bijna ook van Haskell) Functionele programmeertaal Laziness, sharing, strictheids annotaties Eigenschap: Eerste orde propositie logica Uitgebreid met gelijkheid op expressies xs::[Int] : xs heapSort xs = myOwnSort xs
Sparkle: bewijzen Bibliotheek van 42 redeneerstappen: Geleend van andere bewijssystemen Gespecialiseerd op Clean Ondersteuning bij bewijzen door: Automatisch genereren van hints Automatisch toepassen van hints Mogelijkheid om redeneerstap toe te passen alleen met behulp van klikken
Sparkle in het onderwijs Leerdoelen: Laten zien dat formele bewijzen maken over functionele programma’s (relatief) makkelijk is. Sparkle kan daarvoor worden gebruikt: Ondersteunt Clean 2.0 Uitgebreide user interface Kleine bewijzen zijn zeer eenvoudig
Sparkle: downloaden Sparkle heeft een eigen website: Sparkle zit in de standaard Clean- distributie: Probeer het eens uit!