Danish summaryDenne rapport er en revideret udgave af min afhandling af samme navn, som i juni 1993 blev accepteret til forsvar af PhD-graden i datalogi ved Aarhus Universitet.
MotivationI de senereår har man arbejdet meget med at udvikle vaerktøjer til at gøre programmer mere effektive. Af teknikker kan naevnes memoisering [Kho90]; udfold/fold transformationer [PP91b]; graf-baseret implementation af "lazy" evaluering [Jon87] og partiel evaluering [JSS89]. At disse metoder forbedrer effektiviteten skyldes at nogle beregninger deles, så de kun skal gøresén gang. Imidlertid er forbindelsen mellem teknikkerne ikke klart forstået, og det er heller ikke klart hvor stor effektivitetsforbedring (speedup) de kan forårsage. Ydermere giver anvendelse af teknikkerne udfold/fold og partiel evaluering risiko for ødelaeggelse af termineringsegenskaber.Den existerende litteratur inden for området vidner om mangel på en model for program udførelse/transformering der er abstrakt nok. Behandlingen har vaeret for afhaengig af det konkrete sprog/system, og derfor er de essentielle begreber ofte druknet i detaljer.Formålet med denne afhandling er at praesentere en model (faktisk to, nemligén for et funktionelt sprog ogén for et logisk sprog) som jeg tror/håber vil hjaelpe til med at isolere de karakteristiske traek ved optimeringsteknikker der er baserede på at beregninger deles.Modellen er basered på en transitionssemantik i Plotkin-stil [Plo81]. Grunden til at en transitionssemantik foretraekkes frem for en denotationel semantik er at førstnaevnte bedre fanger at udfoldning/foldning er operationelle begreber.Hovedidéen, at bruge mange-niveau transitionssystemer, er som føl-ger:• Det oprindelige program (kildeprogrammet) er repraesenteret som regler på niveau 0.• At udføre kildeprogrammet modelleres af (en sekvens af) transitioner på niveau 1, hvor man på niveau 1 "har adgang til" regler på niveau 0.
1• At transformere kildeprogrammet (at foretage "symbolsk evaluering") bliver ligeledes modelleret af transitioner på niveau 1. Resultatet af transformationen, målprogrammet, vil blive repraesenteret som regler på niveau 1.• At udføre målprogrammet modelleres af transitioner på niveau 2, hvor man på niveau 2 har adgang til regler på niveau 1.At beregninger deles afspejles i at en regel på niveau 1, så snart den er udledt, kan bruges mange gange på niveau 2 -hver anvendelse repraesenterer en genvej i beregningsprocessen. Man kan taenke på kildeprogrammet som en samling axiomer i en teori T 0 ; så kan man opfatte målprogrammet som enten en samling teoremer i T 0 eller som en samling axiomer i en ny teori T 1 , som man kan forvente vil vaere mere effektiv end T 0 -cf. [Gru87].I vores model kan korrekthed (løst sagt) udtrykkes som følger: hvis der er en transition på niveau 2 fra en konfiguration C til en anden konfiguration C , skal der også vaere en transition på niveau 1 fra C til (noget "aekvivalent med") C (dette er partiel korrekthed); og hvis der fra en konfiguration C udgår en uendelig kaede af transitioner på niveau 2, skal der og...