Adaptive)Concretization)for) Parallel)Program)Synthesis)
Jinseong(Jeon1,)Xiaokang)Qiu2,) Armando)Solar@Lezama2,)and)Jeffrey)S.)Foster1) )
1.)University)of)Maryland,)College)Park) 2.)MIT)CSAIL)
Adaptive)Concretization)for) Parallel)Program)Synthesis) - - PowerPoint PPT Presentation
Adaptive)Concretization)for) Parallel)Program)Synthesis) Jinseong(Jeon 1 ,)Xiaokang)Qiu 2 ,) Armando)Solar@Lezama 2 ,)and)Jeffrey)S.)Foster 1) ) 1.)University)of)Maryland,)College)Park) 2.)MIT)CSAIL ) Syntax@guided)Synthesis) bit[32]
Jinseong(Jeon1,)Xiaokang)Qiu2,) Armando)Solar@Lezama2,)and)Jeffrey)S.)Foster1) )
1.)University)of)Maryland,)College)Park) 2.)MIT)CSAIL)
2
bit[32] spec(bit[32] x) { return x – (x % 8); } bit[32] foo(bit[32] x) implements spec { if (??) { // G return x & ??; // A } else { return x | ??; // B } }
unknown) 32@bit)integer) program) speciMication) starts)from) structural) hypothesis) (a.k.a.)template))
3
bit[32] foo(bit[32] x) implements spec { if (??) { // G return x & ??; // A } else { return x | ??; // B } }
65)(=1)+)32*2)) unknown)bits)
bit[32] foo(bit[32] x) ... { if (true) { // G return x & 0x00000000; // A } else { return x | 0x00000000; // B } } bit[32] foo(bit[32] x) ... { if (true) { // G return x & 0x00000001; // A } else { return x | 0x00000000; // B } } bit[32] foo(bit[32] x) ... { if (false) { // G return x & 0xffffffff; // A } else { return x | 0xffffffff; // B } }
...
4
bit[32] foo(bit[32] x) implements spec { if (??) { // G return x & ??; // A } else { return x | ??; // B } }
Sketch)solves) in)50ms) eq(spec(x), bvSub(x, bvMod(x, 8))) eq(foo(x), spec(x)) eq(foo(x), ite(G, bvAND(x, A), bvOR(x, B)))
bit[32] spec(bit[32] x) { return x – (x % 8); }
5 eq(spec(x), bvSub(x, bvMod(x, 8))) eq(foo(x), spec(x)) eq(foo(x), ite(G, bvAND(x, A), bvOR(x, B)))
bit[32] foo(bit[32] x) ... { if (true) { // G return x & 0x00000000; // A } else { return x | 0x00000000; // B } } bit[32] foo(bit[32] x) ... { if (true) { // G return x & 0x00000001; // A } else { return x | 0x00000000; // B } }
Symbolic)search) Explicit)search) Adaptive)Concretization)
6
bit[32] foo(bit[32] x) implements spec { if (??) { // G return x & ??; // A } else { return x | ??; // B } }
eq(spec(x), bvSub(x, bvMod(x, 8))) eq(foo(x), spec(x)) eq(foo(x), ite(G, bvAND(x, A), bvOR(x, B)))
bit[32] spec(bit[32] x) { return x – (x % 8); }
7
eq(spec(x), bvSub(x, bvMod(x, 8))) eq(foo(x), spec(x)) eq(foo(x), ite(G, bvAND(x, A), bvOR(x, B)))
G)x)@)x)%)8)
x0) =) ite) &) A_0) |) B_0) x1) =) ite) &) A_1) |) B_1) x2) =) ite) &) A_2) |) B_2) x3) =) ite) &) A_3) |) B_3) x4) =) ite) &) A_4) |) B_4) x5) =) ite) &) A_5) |) B_5) x6) =) ite) &) A_6) |) B_6) x7) =) ite) &) A_7) |) B_7) x8) =) ite) &) A_8) |) B_8) x9) =) ite) &) A_9) |) B_9)#node)488) 50ms)to)solution)
8
x)@)x)%)8)
x0) =) ite) &) A_0) |) B_0) x1) =) ite) &) A_1) |) B_1) x2) =) ite) &) A_2) |) B_2) x3) =) ite) &) A_3) |) B_3) x4) =) ite) &) A_4) |) B_4) x5) =) ite) &) A_5) |) B_5) x6) =) ite) &) A_6) |) B_6) x7) =) ite) &) A_7) |) B_7) x8) =) ite) &) A_8) |) B_8) x9) =) ite) &) A_9) |) B_9)E E’ E’’
G)x)@)x)%)8)
x0) =) ite) &) A_0) |) B_0) x1) =) ite) &) A_1) |) B_1) x2) =) ite) &) A_2) |) B_2) x3) =) ite) &) A_3) |) B_3) x4) =) ite) &) A_4) |) B_4) x5) =) ite) &) A_5) |) B_5) x6) =) ite) &) A_6) |) B_6) x7) =) ite) &) A_7) |) B_7) x8) =) ite) &) A_8) |) B_8) x9) =) ite) &) A_9) |) B_9) G)x)@)x)%)8)
x0) =) ite) &) A_0) |) B_0) x1) =) ite) &) A_1) |) B_1) x2) =) ite) &) A_2) |) B_2) x3) =) ite) &) A_3) |) B_3) x4) =) ite) &) A_4) |) B_4) x5) =) ite) &) A_5) |) B_5) x6) =) ite) &) A_6) |) B_6) x7) =) ite) &) A_7) |) B_7) x8) =) ite) &) A_8) |) B_8) x9) =) ite) &) A_9) |) B_9)G(
x(+(x(%(8(
x0( =( ite( &( A_0( |( B_0( x1( =( ite( &( A_1( |( B_1( x2( =( ite( &( A_2( |( B_2( x3( =( ite( &( A_3( |( B_3( x4( =( ite( &( A_4( |( B_4( x5( =( ite( &( A_5( |( B_5( x6( =( ite( &( A_6( |( B_6( x7( =( ite( &( A_7( |( B_7( x8( =( ite( &( A_8( |( B_8( x9( =( ite( &( A_9( |( B_9(
9
10
true x(+(x(%(8(
x0( =( ite( &( A_0( |( B_0( x1( =( ite( &( A_1( |( B_1( x2( =( ite( &( A_2( |( B_2( x3( =( ite( &( A_3( |( B_3( x4( =( ite( &( A_4( |( B_4( x5( =( ite( &( A_5( |( B_5( x6( =( ite( &( A_6( |( B_6( x7( =( ite( &( A_7( |( B_7( x8( =( ite( &( A_8( |( B_8( x9( =( ite( &( A_9( |( B_9(
11
x(+(x(%(8(
x0( =( &( A_0( x1( =( &( A_1( x2( =( &( A_2( x3( =( &( A_3( x4( =( &( A_4( x5( =( &( A_5( x6( =( &( A_6( x7( =( &( A_7( x8( =( &( A_8( x9( =( &( A_9(
#node)488)⇒)391) 50)⇒)30ms)to)solution)
true
faster)than)pure)symbolic)search)
12
x(+(x(%(8(
x0( =( |( B_0( x1( =( |( B_1( x2( =( |( B_2( x3( =( |( B_3( x4( =( |( B_4( x5( =( |( B_5( x6( =( |( B_6( x7( =( |( B_7( x8( =( |( B_8( x9( =( |( B_9(
false
#node)488)⇒)391) 50)⇒)2ms)to)UNSAT)
G(
x(+(x(%(8(
x0( =( ite( &( A_0( |( B_0( x1( =( ite( &( A_1( |( B_1( x2( =( ite( &( A_2( |( B_2( x3( =( ite( &( A_3( |( B_3( x4( =( ite( &( A_4( |( B_4( x5( =( ite( &( A_5( |( B_5( x6( =( ite( &( A_6( |( B_6( x7( =( ite( &( A_7( |( B_7( x8( =( ite( &( A_8( |( B_8( x9( =( ite( &( A_9( |( B_9(
13
14
G(
x(+(x(%(8(
x0( =( ite( &( A_0( |( B_0( x1( =( ite( &( A_1( |( B_1( x2( =( ite( &( A_2( |( B_2( x3( =( ite( &( A_3( |( B_3( x4( =( ite( &( A_4( |( B_4( x5( =( ite( &( A_5( |( B_5( x6( =( ite( &( A_6( |( B_6( x7( =( ite( &( A_7( |( B_7( x8( =( ite( &( A_8( |( B_8( x9( =( ite( &(
true
|( B_9(
15
G(
x(+(x(%(8(
x0( =( ite( &( A_0( |( B_0( x1( =( ite( &( A_1( |( B_1( x2( =( ite( &( A_2( |( B_2( x3( =( ite( &( A_3( |( B_3( x4( =( ite( &( A_4( |( B_4( x5( =( ite( &( A_5( |( B_5( x6( =( ite( &( A_6( |( B_6( x7( =( ite( &( A_7( |( B_7( x8( =( ite( &( A_8( |( B_8( x9( =( ite(
true
|( B_9(
#node)488)⇒)486) 50ms)to)solution/UNSAT)
16
High) inMluence) Low) inMluence)
17
16) 32) 64) 128) 256) 512) 1024) 2048) 4096) 8192)
Running(time( degree)of)concretization) 0) ∞) explicit) symbolic) mixed)
18
16# 32# 64# 128# 256# 512# 1024# 2048# 4096# 8192#
16# 32# 64# 128# 256# 512# 1024# 2048# 4096# 8192#
19
16# 32# 64# 128# 256# 512# 1024# 2048# 4096# 8192#
20
16# 32# 64# 128# 256# 512# 1024# 2048# 4096# 8192#
21
16# 32# 64# 128# 256# 512# 1024# 2048# 4096# 8192#
22
16# 32# 64# 128# 256# 512# 1024# 2048# 4096# 8192#
23
24
25
26
27