Show simple item record

dc.rights.licenseCC-BY-NC-ND
dc.contributor.advisorSwierstra, W.S.
dc.contributor.advisorSerrano Mena, A.
dc.contributor.authorTomé Cortiñas, C.
dc.date.accessioned2018-08-24T17:00:42Z
dc.date.available2018-08-24T17:00:42Z
dc.date.issued2018
dc.identifier.urihttps://studenttheses.uu.nl/handle/20.500.12932/30531
dc.description.abstractThe functional programming paradigm advocates a style of programming based on higher-order functions over inductively defined datatypes. A fold, which captures their common pattern of recursion, is the prototypical example of such a function. However, its use comes at a price. The definition of a fold is not tail-recursive which means that the size of the stack during execution grows proportionally to the size of the input. McBride has proposed a method called dissection, to transform a fold into its tail-recursive counterpart. Nevertheless, it is not clear why the resulting function terminates, nor it is clear that the transformation preserves the fold’s semantics. In this thesis, we formalize the construction of such tail-recursive function and prove that it is both terminating and equivalent to the fold. In addition, using McBride’s dissection, we generalize the tail-recursive function to work on any algebra over any regular datatype.
dc.description.sponsorshipUtrecht University
dc.format.extent707504
dc.format.mimetypeapplication/pdf
dc.language.isoen
dc.titleVerified tail-recursive folds through dissection
dc.type.contentMaster Thesis
dc.rights.accessrightsOpen Access
dc.subject.keywordsdependent types, Agda, generic programming, verification, well-founded recursion
dc.subject.courseuuComputing Science


Files in this item

Thumbnail

This item appears in the following Collection(s)

Show simple item record