Transformation and Analysis of (Constraint) Logic Programs. Sandro Etalle Het proefschrift is als volgt opgebouwd. Hoofdstuk 1 bevat een korte introductie op het gebied van logisch programmeren en programma transformaties. In Hoofdstuk 2 wordt de semantiek van normale logische programma's behandeld. Dit hoofdstuk dient als introductie voor de daaropvolgende drie hoofdstukken. Daarnaast bevat het hoofdstuk een nieuw resultaat waarin programma equivalentie met betrekking tot de Kunen semantiek wordt gekarakteriseert. In Hoofdstuk 3 beginnen we met de studie van eigenschappen van Unfold/Fold transformatie systemen. In dit hoofdstuk bewijzen we dat de Unfold/Fold methode van Tamaki en Sato, toegepast op een terminerend programma, resulteert in een programma dat zelf ook terminerend is. In Hoofdstuk 4 introduceren we de vervangingsoperatie, en onderzoeken enkele nieuwe toepassingscondities, in de context van normale logische programma's. De resultaten uit dit hoofdstuk worden in het daarop- volgende hoofdstuk gebruikt om nieuwe toepassingscondities voor de Fold operatie te vinden, die de correctheid van deze operatie met betrekking tot de Fitting semantiek garanderen. In Hoofdstuk 5 defini¨eren we een transformatie- systeem voor zogenaamde `Modular Constraint Logic Programs'; logische programma's met een modulaire opbouw, waarin programmaregels randvoorwaarden kunnen bevatten. Daarnaast geven we een aantal toepassingscondities die er voor zorgen dat het systeem compositioneel is; we bewijzen dat onder deze condities de getransformeerde module dezelfde antwoordformules heeft als het orgineel, ook wanneer deze modules met andere modules samengevoegd worden. In Hoofdstuk 6 gaan we dieper in op de problemen die spelen bij het transformeren van `Modular Constraint Logic Programs', met name bij de vervangingsoperatie. In dit hoofdstuk defini¨eren we nieuwe toepassingscondities, onder welke tijdens de transformatie bepaalde observeerbare eigenschappen behouden blijven, ook onder compositie van modules. Er dient opgemerkt te worden dat, binnen onze aanpak, de toepassingscondities niet gebonden zijn aan specifieke observeerbare eigenschappen. Het is vaak mogelijk deze condities zodanig aan te passen, dat ze voldoen voor de observeerbare eigenschappen waar we het meest in zijn geinteresseerd. In Hoofdstuk 7 laten we programma transformaties voor wat ze zijn, en houden we ons bezig met programma analyse. Het is algemeen bekend dat unificatie het hart is van de resolutie methode die in PROLOG gebruikt wordt, en dat de efficientie waarmee dit gebeurt een grote invloed heeft op de prestaties van de interpreter. In dit hoofdstuk presenteren we eenvoudige condities onder welke het mogelijk is unificatie te vervangen door `iterated matching', een procedure die een stuk effici¨enter is te implementeren dan unificatie. We gebruiken deze condities vervolgens om aan te tonen dat `iterated matching' volstaat bij een aantal veelgebruikte PROLOG programma's. Met deze kennis is het mogelijk de executie van deze programma's te versnellen.