Guarantees in Program Synthesis
Qin inhepin ing Hu , Jason Breck , John Cyphert , Loris D'Antoni , Thomas Reps
1
Guarantees in Program Synthesis Qin inhepin ing Hu , Jason Breck , - - PowerPoint PPT Presentation
Guarantees in Program Synthesis Qin inhepin ing Hu , Jason Breck , John Cyphert , Loris D'Antoni , Thomas Reps 1 (What you want your program to do) Program Specification Synthesizer ( satisfies the specification Search space
1
3
return x+1; if (x=0) return 1; if (x=1) return 2; if (x=2) return 3; β¦ if (x=99) return 100; return β1;
[PLDI17]
4
[CAV18]
QSyGuS Weighted grammar π
8
QSyGuS SyGuS Grammar π»
ignore weight
Weighted grammar π
9
QSyGuS SyGuS
Solutionβs weight π
Grammar π» Weighted grammar π
10
QSyGuS SyGuS
Solutionβs weight π
Grammar π» Weighted grammar π CFG π»<2
11
QSyGuS SyGuS
Solutionβs weight π
Grammar π» Weighted grammar π CFG π»<2
Solutionβs weight π
12
QSyGuS SyGuS
Solutionβs weight π
Grammar π» Weighted grammar π CFG π»<2
Solutionβs weight π
CFG π»<1
13
14
[CAV19]
int[4] Start(x_0,y_0,x_1,y_1,x_2,y_2,x_3,y_3){ if(??){return (0,0,0,0);} // Start -> 0 if(??){return (1,1,1,1);} // Start -> 1 if(??){return (x_0,x_1,x_2,x_3);} // Start -> x if(??){return (y_0,y_1,y_2,y_3);} // Start -> y else{ // Start -> Start+Start int[4] L = Start(x_0,y_0,x_1,y_1); int[4] R = Start(x_0,y_0,x_1,y_1); return (L[0]+R[0],L[1]+R[1],L[2]+R[2],L[3]+R[3]);} } int[4] P = Start(0,0,0,1,1,0,2,0); assert (P[0]!=0 || P[1]!=1 || P[2]!=1 || P[3]!=2);
int[4] Start(x_0,y_0,x_1,y_1,x_2,y_2,x_3,y_3){ if(??){return (0,0,0,0);} // Start -> 0 if(??){return (1,1,1,1);} // Start -> 1 if(??){return (x_0,x_1,x_2,x_3);} // Start -> x if(??){return (y_0,y_1,y_2,y_3);} // Start -> y else{ // Start -> Start+Start int[4] L = Start(x_0,y_0,x_1,y_1); int[4] R = Start(x_0,y_0,x_1,y_1); return (L[0]+R[0],L[1]+R[1],L[2]+R[2],L[3]+R[3]);} } int[4] P = Start(0,0,0,1,1,0,2,0); assert (P[0]!=0 || P[1]!=1 || P[2]!=1 || P[3]!=2);