of 17

• date post

16-Jan-2016
• Category

## Documents

• view

31

0

Embed Size (px)

description

WORK IT, WRAP IT, FIX IT, FOLD IT. Graham Hutton and Neil Sculthorpe. This Talk. Worker/wrapper is a simple but powerful method for optimizing recursive programs; Previously, we developed theories for fix and fold , but with different correctness conditions; - PowerPoint PPT Presentation

### Transcript of WORK IT, WRAP IT, FIX IT, FOLD IT

• WORK IT, WRAP IT, FIX IT, FOLD ITGraham Hutton and Neil Sculthorpe

• *This TalkWorker/wrapper is a simple but powerful method for optimizing recursive programs;

Previously, we developed theories for fix and fold, but with different correctness conditions;

We combine and extend the two approaches to give a generalised worker/wrapper theory.

• *Worker / Wrapper

program

A technique for changing the type of a recursive program to improve its performance:

• *Fixed Pointsones = 1 : onesones = fix f

f xs = 1 : xscan be rewritten as:fix f = f (fix f)Our original formalisation was based on the use of explicit fixed points. For example:

• *The ProblemAType of the desired worker, fix g.Type of the original program, fix f.BSuppose we wish to change the type of a recursiveprogram that is defined using fix.

• *AssumptionsWe assume conversion functionsA can be faithfully represented by B.such that:abs . rep = idA

• *Lets Calculate!*fix f

• *Summaryfix fWe have derived the following factorisation:Wrapper of type B A.Recursive program of type A.abs=Recursive worker of type B.fix g

• *Final StepWe simplify the workerfix (rep . f. abs)to eliminate the overhead of repeatedly convertingbetween the two types, by fusing togetherfix g=

• *The Worker / Wrapper RecipeExpress the original program using fix;Choose the new type for the program;Define appropriate conversion functions;Apply the worker/wrapper transformation;Simplify the resulting definitions.

• *GeneralisingThe technique also works for weaker assumptions:From the fix paper.abs . rep = idAabs . rep . f = ffix (abs . rep . f) = fix f

• *

• *Generalised RecipeIf the worker is already given, we aim to verify that one of the conditions is satisfied;

Otherwise, our aim is to construct the worker, using one of the conditions as a specification;

Similar assumptions and conditions also give a generalised worker/wrapper theory for fold.

• *Example

• *Example

• *SummaryGeneralised technique for changing the type of a program to improve its performance;

Captures a wide variety of program optimization techniques in a single unified framework;

The paper also presents a range of new results concerning strictness side conditions.

• *Further WorkOther recursion patterns;Time and space analysis;Computational effects;Implementing the technique.