Presentation is loading. Please wait.

Presentation is loading. Please wait.

Synthesis with the Sketch System

Similar presentations


Presentation on theme: "Synthesis with the Sketch System"— Presentation transcript:

1 Synthesis with the Sketch System
Day 3 Over the last few days, we have seen several different applications of synthesis for what could collectively be called Quality Control Armando Solar-Lezama

2 In place list reversal

3 Problem statement Given a list like this: Produce a list like this:
head . . . head . . .

4 Constraints Your algorithm must be O(n)
Your algorithm must use a constant space It can not use arrays or recursion

5 The Spec harness void main(int n){ if(n >= MAXN){ n = MAXN-1; }
node[n] nodes = null; list l = newList(); popList(n, l, nodes); reverseSK(l); check(n, l, nodes); }

6 The Spec void popList(int n, list l, ref node[n] nodes){
node tail= null; for(int i=0; i<n;++i){ node t = newNode(); if(i>0){ tail.next = t; }else{ l.head = t; } tail = t; nodes[i] = t;

7 The Spec void check(int n, list l, node[n] nodes){ node cur = l.head;
int i=0; while(cur != null){ assert cur == nodes[n-1-i]; cur = cur.next; i = i+1; } assert i == n; if(n > 0){ assert l.head == nodes[n-1]; }else{ assert l.head == null;

8 The Sketch {| (tmp1 | tmp2 | l.head)(.next)? |}
void reverseSK(ref list l){ node tmp1 = null; node tmp2 = null; while( ){ } {| (tmp1 | tmp2 | l.head)(.next)? |}


Download ppt "Synthesis with the Sketch System"

Similar presentations


Ads by Google