ebook img

Normalization and Partial Evaluation of Functional Logic Programs PDF

297 Pages·2017·1.44 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Normalization and Partial Evaluation of Functional Logic Programs

Normalization 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 [email protected] 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.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.