Table Of ContentNormalization and Partial Evaluation
of Functional Logic Programs
M.Sc. Björn Peemöller
Dissertation
zurErlangungdesakademischenGrades
DoktorderIngenieurwissenschaften
(Dr.-Ing.)
derTechnischenFakultät
derChristian-Albrechts-UniversitätzuKiel
eingereichtimJahr2016
KielComputerScienceSeries(KCSS)2017/1dated2017-06-11
URN:NBNurn:nbn:de:gbv:8:1-zs-00000328-a6
ISSN2193-6781(printversion)
ISSN2194-6639(electronicversion)
Electronicversion,updates,errataavailableviahttps://www.informatik.uni-kiel.de/kcss
Theauthorcanbecontactedviabjoern.peemoeller@gmail.com
PublishedbytheDepartmentofComputerScience,KielUniversity
ProgrammingLanguagesandCompilerConstruction
Pleaseciteas:
BjörnPeemöller.NormalizationandPartialEvaluationofFunctionalLogicPrograms.Number2017/1
Ź
inKielComputerScienceSeries.DepartmentofComputerScience,2017.Dissertation,Facultyof
Engineering,KielUniversity.
@book{Peemoeller2017,
author = {Bj{\"o}rn Peem{\"o}ller},
title = {Normalization and Partial Evaluation of Functional Logic Programs},
publisher = {Department of Computer Science, Kiel University},
year = {2017},
number = {2017/1},
isbn = {978-3-7448-2192-6}
series = {Kiel Computer Science Series},
note = {Dissertation, Faculty of Engineering, Kiel University}
}
©2017byBjörnPeemöller
HerstellungundVerlag:BoD—BooksonDemand,Norderstedt
ISBN:978-3-7448-2192-6
ii
About this Series
The Kiel Computer Science Series (KCSS) covers dissertations, habilitation theses,
lecturenotes,textbooks,surveys,collections,handbooks,etc.writtenattheDepart-
ment of Computer Science at Kiel University. It was initiated in 2011 to support
authorsinthedisseminationoftheirworkinelectronicandprintedform,without
restrictingtheirrightstotheirwork.Theseriesprovidesaunifiedappearanceand
aimsathigh-qualitytypography.TheKCSSisanopenaccessseries;allseriestitlesare
electronicallyavailablefreeofchargeatthedepartment’swebsite.Inaddition,authors
areencouragedtomakeprintedcopiesavailableatareasonableprice,typicallywith
aprint-on-demandservice.
Pleasevisithttp://www.informatik.uni-kiel.de/kcssformoreinformation,forinstruc-
tionshowtopublishintheKCSS,andforaccesstoallexistingpublications.
iii
1.Gutachter: Prof.Dr.MichaelHanus
Christian-Albrechts-UniversitätzuKiel
2.Gutachter: Priv.-Doz.Dr.FrankHuch
Christian-Albrechts-UniversitätzuKiel
DatumdermündlichenPrüfung:25.Juli2016
iv
Zusammenfassung
DieseArbeitbefasstsichmitderNormalisierungundderpartiellenAuswertungvon
Programmeninderfunktional-logischenProgrammierspracheCurry.DasParadigma
derfunktional-logischenProgrammierungkombiniertdiebeidenwichtigstenBereiche
derdeklarativenProgrammierung,diefunktionaleunddielogischeProgrammierung.
WährendfunktionaleSprachenKonzeptewiealgebraischeDatentypen,Funktionen
höhererOrdnungodereinebedarfsgesteuerteAuswertungbereitstellen,bietenlogi-
scheSpracheneinenicht-deterministischeAuswertungsowieeineeingebauteSuche
nachErgebnissen.DiesebeidenParadigmenwerdeninfunktional-logischenSprachen
kombiniert,sodasseineVielzahlanSprachkonstruktenundKonzeptenzurVerfü-
gungstehtumkompakteundausdrucksstarkeProgrammezuentwickeln.Jedoch
erschwerendieVielzahlsyntaktischerKonstrukteundderhoheAbstraktionsgrad
auchdieÜbersetzungineffizienteZielprogramme.
ZurReduktiondersyntaktischenKomplexitätbeinhaltengängigeKompilierungs-
schemataüblicherweiseeineNormalisierungsphase,inderkomplexeKonstrukteschritt-
weisedurcheinfachereersetztwerden,biseinProgrammschließlichineinermini-
malen Teilsprache ausgedrückt werden kann. Obwohl einzelne Transformationen
vergleichsweiseeinfachsind,mussauchderenkorrekteKombinationsichergestellt
sein,damitdieKonstrukteihreursprünglicheBedeutungbehalten.
DieEffizienznormalisierterProgrammekanndannmittelsverschiedenerOptimie-
rungstechnikenverbessertwerden.EinesehrmächtigeTechnikisthierbeidiepartielle
Auswertung,beiderzurKompilierungszeitdieAusführungbestimmterProgramm-
teile simuliert wird, um so ein semantisch äquivalentes Programm zu berechnen,
daszurLaufzeitüblicherweiseeffizienterausgeführtwird.DadiepartielleAuswer-
tung eine vollautomatische Optimierung darstellt, kann sie zudem in bestehende
Kompilierungsschemata eingebunden werden. Allerdings erfordert dies auch die
TerminierungdesOptimierungsprozesses,waseinewesentlicheHerausforderung
nebendersemantischenÄquivalenzdarstellt.
DieseArbeitbetrachtetdieSpracheCurryalsRepräsentantenfürdasfunktional-
logischeProgrammierparadigma.ZunächstwirdeineformaleDarstellungderNor-
malisierung von Curry-Programmen entwickelt, um die korrekte Transformation
unterschiedlicherSprachkonstruktefestzulegen.FürdieresultierendeKernsprache
wirddannderendynamischeSemantikdefiniert,umdaraufaufbauendeingrundle-
gendesSchemazurpartiellenAuswertungzuentwickelnunddessenKorrektheitund
Terminierungzuzeigen.AufgrundderNormalisierungeignetsichdiesesSchema
bereitszurpartiellenAuswertungbeliebigerCurry-Programme.DesWeiterenwird
dieImplementierungeinespraktischenpartiellenAuswertersskizziertunddessen
AnwendbarkeitundVorteilhaftigkeitanhandeinigertypischerBeispieledemonstriert.
v
Abstract
This thesis deals with the development of a normalization scheme and a partial
evaluatorforthefunctionallogicprogramminglanguageCurry.Thefunctionallogic
programmingparadigmcombinesthetwomostimportantfieldsofdeclarativepro-
gramming,namelyfunctionalandlogicprogramming.Whilefunctionallanguages
provideconceptssuchasalgebraicdatatypes,higher-orderfunctionsordemand-
drivenevaluation,logiclanguagesusuallysupportanon-deterministicevaluation
andabuilt-insearchforresults.Functionallogiclanguagesfinallycombinethese
twoparadigmsinanintegratedway,henceprovidingmultiplesyntacticconstructs
andconceptstofacilitatetheconcisenotationofhigh-levelprograms.However,both
thevarietyofsyntacticconstructsandthehighdegreeofabstractioncomplicatethe
translationintoefficienttargetprograms.
Toreducethesyntacticcomplexityoffunctionallogiclanguages,atypicalcompi-
lationschemeincorporatesanormalizationphasetosubsequentlyreplacecomplex
constructsbysimpleronesuntilaminimallanguagesubsetisreached.Whilethein-
dividualtransformationsareusuallysimple,theyalsohavetobecorrectlycombined
tomakethesyntacticconstructsinteractintheintendedway.
Theefficiencyofnormalizedprogramscanthenbeimprovedbymeansofdiffer-
entoptimizationtechniques.Averypowerfuloptimizationtechniqueisthepartial
evaluationofprograms.Partialevaluationbasicallyanticipatestheexecutionofcertain
programfragmentsatcompiletimeandcomputesasemanticallyequivalentprogram,
whichisusuallymoreefficientatruntime.Sincepartialevaluationisafullyauto-
maticoptimizationtechnique,itcanalsobeincorporatedintothenormalcompilation
schemeofprograms.Nevertheless,thisalsorequiresterminationoftheoptimization
process,whichestablishesoneofthemainchallengesforpartialevaluationbesides
semanticequivalence.
InthisworkweconsiderthelanguageCurryasarepresentativeofthefunctional
logicprogrammingparadigm.Wedevelopaformalrepresentationofthenormal-
ization process of Curry programs into a kernel language, while respecting the
interferenceofdifferentlanguageconstructs.Wethendefinethedynamicsemantics
ofthiskernellanguage,beforewesubsequentlydevelopapartialevaluationscheme
andshowitscorrectnessandtermination.Duetothepreviouslydescribednormal-
izationprocess,thisschemeisthendirectlyapplicabletoarbitraryCurryprograms.
Furthermore,theimplementationofapracticalpartialevaluatorissketchedbasedon
thepartialevaluationscheme,anditsapplicabilityandusefulnessisdocumentedby
avarietyoftypicalpartialevaluationexamples.
vii
Preface by Prof. Dr. Michael Hanus
Declarativeprogramminglanguagessupportthedevelopmentofreliablesoftwarein
ahigh-levelmanner.Duetotheirabstractionfromaconcretecomputerarchitecture,
theimplementationofdeclarativeprogramminglanguagesisdemanding.Thisthesis
isaninterestingcontributiontothisproblem. BjörnPeemöller developedanopti-
mizationtechniqueforfunctionallogicprogramswhichisappliedtothesourcelevel.
Sincedeclarativeprogramsoftencontaingenericandre-usableoperationsthatare
appliedinvariouscontexts,itisadvantageoustospecializethevarioususesofsuch
operationsandgeneratenewspecializedoperationsthatareusuallymoreefficient.
Thistransformationprocessiscalled“partialevaluation”andithasbeensuccessfully
applied to different classes of programming languages. In fact, partial evaluation
for functional logic languages has been pioneered by the Technical University of
Valenciamorethanfifteenyearsago.Sincethestructureandpracticeoffunctional
logicprogramminghasbeenadvancedsincethattime,theoriginalpartialevaluation
techniquesarenotapplicabletomodernfunctionallogiclanguageslikeCurry.
BjörnPeemöllersolvedthisgapinhisthesis.Sincepartialevaluationisacomplex
process,hedevelopsapartialevaluatorforasimplifiedintermediatelanguage,called
FlatCurry.InordertoapplythispartialevaluatortopracticalCurryprograms,the
firstpartofthethesisspecifiesatransformationofCurryprogramsintoFlatCurry
programs. Although this transformation is implemented in contemporary Curry
systems,thepreciseandabstractspecificationofthistaskisanimportantcontribution
whichcanbeusedasastandardreferenceinfuturework.Themainpartofthisthesis
contains the specification and correctness proof of the partial evaluator. In order
todevelopapracticaltool,anumberofsmallertransformationsareaddedwhich
improvetheefficiencyofthegeneratedprograms.Thefinalbenchmarksdemonstrate
thesuccessofhisapproach.Thedevelopedpartialevaluatorproducessimilarefficient
codeastheoriginalpartialevaluator,butitisapplicabletoalargerclassofprograms.
Inparticular,itisabletooptimizeprogramscontainingfunctionalpatternssothat
the potential non-determinism is completely eliminated. In this way the partial
evaluatorcanbeusedasanautomatictooltotransformhigh-levelnon-deterministic
specificationsintoefficientdeterministicprograms.
This thesis contains good and original results and I recommend it to anyone
interestedinsourcecodeoptimizationtechniquesfordeclarativeprograms.
MichaelHanus
Kiel,October2016
ix
Description:Programming Languages and Compiler Construction funktionale Sprachen Konzepte wie algebraische Datentypen, Funktionen . 1 Introduction. 1.