SEMFIX: PROGRAM REPAIR VIA SEMANTIC ANALYSIS
H.D.T. Nguyen, Dawei Qi, Abhik Roychoudhury National University of Singapore, & Satish Chandra Samsung
CREST Workshop, Jan 2014
1
S EM F IX : P ROGRAM R EPAIR VIA S EMANTIC A NALYSIS CREST Workshop, - - PowerPoint PPT Presentation
S EM F IX : P ROGRAM R EPAIR VIA S EMANTIC A NALYSIS CREST Workshop, Jan 2014 H.D.T. Nguyen, Dawei Qi, Abhik Roychoudhury National University of Singapore , & Satish Chandra Samsung 1 Talk given at 30 th CREST Workshop, London, Jan 2014. W
CREST Workshop, Jan 2014
1
CREST Workshop, Jan 2014
2
CREST Workshop, Jan 2014
3
1 int is_upward( int inhibit, int up_sep, int down_sep){ 2 int bias; 3 if (inhibit) 4 bias = down_sep; // bias= up_sep + 100 5 else bias = up_sep ; 6 if (bias > down_sep) 7 return 1; 8 else return 0; 9 }
CREST Workshop, Jan 2014
4
1 int is_upward( int inhibit, int up_sep, int down_sep){ 2 int bias; 3 if (inhibit) 4 bias = down_sep; // bias= up_sep + 100 5 else bias = up_sep ; 6 if (bias > down_sep) 7 return 1; 8 else return 0; 9 }
CREST Workshop, Jan 2014
5
1 int is_upward( int inhibit, int up_sep, int down_sep){ 2 int bias; 3 if (inhibit) 4 bias = down_sep; // bias= up_sep + 100 5 else bias = up_sep ; 6 if (bias > down_sep) 7 return 1; 8 else return 0; 9 }
inhibit = 1, up_sep = 11, down_sep = 110 bias = X, path condition = true inhibit = 1, up_sep = 11, down_sep = 110 bias = X, path condition = X> 110 inhibit = 1, up_sep = 11, down_sep = 110 bias = X, path condition = X ≤ 110
CREST Workshop, Jan 2014
6
CREST Workshop, Jan 2014
7
Search over the space of expressions Program synthesis with fixed set of operators More efficient!!
CREST Workshop, Jan 2014
8
CREST Workshop, Jan 2014
9
allfail + allpass = |T|
fail(s) allfail fail(s) allfail pass(s) allpass
CREST Workshop, Jan 2014
10
CREST Workshop, Jan 2014
11
Repair constraint
CREST Workshop, Jan 2014
12
CREST Workshop, Jan 2014
13
14 1 int is_upward( int inhibit, int up_sep, int down_sep){ 2 int bias; 3 if (inhibit) 4 bias = f(inhibit, up_sep, down_sep) // X 5 else bias = up_sep ; 6 if (bias > down_sep) 7 return 1; 8 else return 0; 9 } Inhibit == 1 up_sep == 11 down_sep == 110
j ∈ Paths
CREST Workshop, Jan 2014
14
TS
CREST Workshop, Jan 2014
15
CREST Workshop, Jan 2014
16
Select primitive components to be used by the synthesized
Look for a program that uses only these primitive components
CREST Workshop, Jan 2014
17
CREST Workshop, Jan 2014
18
CREST Workshop, Jan 2014
19
20
CREST Workshop, Jan 2014
CREST Workshop, Jan 2014
21
CREST Workshop, Jan 2014
22
CREST Workshop, Jan 2014
23
CREST Workshop, Jan 2014
24
if (c ){ … } … if (c) { … }
x = e1; … ; y = e2; …
Can be overcome, limitation of KLEE/solvers
CREST Workshop, Jan 2014
25
enabled = High_Confidence &&
tmp = Up_Separation;
tmp = ((OtherCapability < Alt_Layer_Value)? Two_of_Three_Reports_Valid: Cur_Vertical_Sep );
CREST Workshop, Jan 2014
26
CREST Workshop, Jan 2014
27
28
CREST Workshop, Jan 2014
29
CREST Workshop, Jan 2014
Evolve