Sumith Kulal
Programming Languages, verification and synthesis.
Rohin Shah Sumith Kulal Rastislav Bodik
max (1 2 8 4 3 7 6 5) = 8
max (1 2 8 4 3 7 6 5) = 8
max (1 2 3 4 3 7 6 5) =
delta
update
Complexity?
Non-incremental - O(n)
Incremental - O(1)
7
Incremental - efficient, asymptotically fast
Non-incremental - easier to write
Automatically synthesize incremental updates
P
I
O
O'
I'
3 2 5 7 0 1 4 6
0 1 2 3 4 5 6 7
4 5 1 0 6 2 7 3
0 1 2 3 4 5 6 7
Permutation
Inverse
3 2 5 7 0 1 4 6
0 1 2 3 4 5 6 7
4 5 1 0 6 2 7 3
0 1 2 3 4 5 6 7
3 2 5 1 0 7 4 6
0 1 2 3 4 5 6 7
4 5 1 0 6 2 7 3
0 1 2 3 4 5 6 7
P
?
Swap any two elements of the initial sequence
Guesser
Verifier
Guesser
Verifier
perm: [1, 0, 2, 3] i: 0 j: 1
Guesser
Verifier
perm: [3, 1, 0, 2] i: 2 j: 1
Guesser
Verifier
Statement
Integer
inverse
vector-set!
constant
Integer
Integer
word->text
i
Vector
Vector
perm
Integer
Integer
vector-ref
+
*
vector-inc!
vector-dec!
j
word->text
> Needed for correctness, else you could just undo the delta
> Greatly reduces the search space
Search space size | |||||
Solution size | 3 8 10 | 10 20 12 | 12 | 17 | 23 |
Solver time (s) | 3 4 30 | 122 89 96 | 62 | 7 | 75 |
Total runtime (s) | 44 | 124 91 98 | 64 | 12 | 80 |
Perm | LDA | MB |
Set Updates | Grades |
---|---|
Add Remove Size | Assign Swap Struct |
> Build a dynamic dependence graph, incrementalize using change propagation
> Recent work done in Adapton
> For a particular subset of programs, statically transform the program to get a new, incremental version
> Incremental view maintenance (databases), object oriented programming, Datalog, invariant checkers, etc.
Go here
@sumith1896
Statement
n-topic-text
new-topic
Integer
Topic
vector-set!
constant
vector-ref
Integer
Word
word->text
word
Vector
Vector
Vector
Integer
Integer
vector-ref
+
*
vector-inc!
vector-dec!
old-topic
By Sumith Kulal
Presentation of the talk "Automatic Incrementalization through Synthesis" delivered to the Bodik group at UW on July 24th, 2017.