ppt - Microsoft Research

advertisement
Dimensions in Synthesis
Part 3: Ambiguity
(Synthesis from Examples & Keywords)
Sumit Gulwani
sumitg@microsoft.com
Microsoft Research, Redmond
May 2012
Potential Users of Synthesis Technology
Algorithm
Designers
Software Developers
Most Useful
Target
Most
Transformational
Target
End-Users
Students and Teachers
• Vision for End-users: Enable people to have (automated)
personal assistants.
• Vision for Education: Enable every student to have
access to free & high-quality education.
1
Intent Specification
• Examples
– Bitvector Algorithms (ICSE ‘10)
– Spreadsheet Macros (CACM ‘12)
•
•
•
•
Syntactic String Transformations (POPL ‘11)
Semantic String Transformations (VLDB ‘12)
Number Transformations (CAV ‘12)
Table Transformations (PLDI ‘11)
• Sketch
– Drawings (CHI 2012)
• Keywords
– SmartPhone Apps
2
Intent Specification
• Examples
 Bitvector Algorithms (ICSE ‘10)
– Spreadsheet Macros (CACM ‘12)
•
•
•
•
Syntactic String Transformations (POPL ‘11)
Semantic String Transformations (VLDB ‘12)
Number Transformations (CAV ‘12)
Table Transformations (PLDI ‘11)
• Sketch
– Drawings (CHI 2012)
• Keywords
– SmartPhone Apps
ICSE 2010: Susmit Jha, Gulwani, Seshia, Tiwari.
3
Synthesis from Logical Specification
Turn off rightmost 1-bit
Functional Specification:
b
Æ[ (
p=1
I[p]=1
b
Æ
(I[j]=0)) ) (J[p]=0 Æ(J[j] = I[j])) ]
j=p+1
jp
Tool Output:
J = I & (I-1)
PLDI 2011: Gulwani, Jha, Tiwari, Venkatesan.
4
Interactive Synthesis using Examples
Turn-off rightmost contiguous string of 1’s
User: I want a program that maps 01011 -> 01000
Tool: There exist at least two programs that match the spec
Program 1: (x+1) & (x-1)
Program 2: (x+1) & x
But they differ on 00000 (Distinguishing Input)
What should 00000 be mapped to?
User: 00000 -> 00000


5
Interactive Synthesis using Examples
Turn-off rightmost contiguous string of 1’s
User: 01011 -> 01000
Tool: 00000 ?
User: 00000
Tool: 01111 ?
User: 00000
Tool: 00110 ?
User: 00000
Tool: 01100 ?
User: 00000
Tool: 01010 ?
User: 01000
Tool: Your program is x & (1 + ((x-1)|x))
6
Intent Specification
• Examples
– Bitvector Algorithms (ICSE ‘10)
 Spreadsheet Macros (CACM ‘12)
•
•
•
•
Syntactic String Transformations (POPL ‘11)
Semantic String Transformations (VLDB ‘12)
Number Transformations (CAV ‘12)
Table Transformations (PLDI ‘11)
• Sketch
– Drawings (CHI 2012)
• Keywords
– SmartPhone Apps
7
Intent Specification
• Examples
– Bitvector Algorithms (ICSE ‘10)
– Spreadsheet Macros (CACM ‘12)
 Syntactic String Transformations (POPL ‘11)
• Semantic String Transformations (VLDB ‘12)
• Number Transformations (CAV ‘12)
• Table Transformations (PLDI ‘11)
• Sketch
– Drawings (CHI 2012)
• Keywords
– SmartPhone Apps
8
Language for Constructing Output Strings
Guarded Expression G := Switch((b1,e1), …, (bn,en))
String Expression e := Concatenate(f1, …, fn)
Base Expression f := s // Constant String
| SubStr(vi, p1, p2)
Index Expression p := k // Constant Integer
| Pos(r1, r2, k) // kth position in string
whose left/right side
matches with r1/r2
Notation: SubStr2(vi,r,k) ´ SubsStr(vi,Pos(²,r,k),Pos(r,²,k))
– Denotes kth occurrence of regular expression r in vi
9
Example
Format phone numbers
Input v1
Output
(425)-706-7709
425-706-7709
510.220.5586
510-220-5586
235 7654
425-235-7654
745-8139
425-745-8139
Switch((b1, e1), (b2, e2)), where
b1 ´ Match(v1,NumTok,3),
b2 ´ :Match(v1,NumTok,3),
e1 ´ Concatenate(SubStr2(v1,NumTok,1), ConstStr(“-”),
SubStr2(v1,NumTok,2), ConstStr(“-”),
SubStr2(v1,NumTok,3))
e2 ´ Concatenate(ConstStr(“425-”),SubStr2(v1,NumTok,1),
ConstStr(“-”),SubStr2(v1,NumTok,2)) 10
Key Synthesis Idea: Divide and Conquer
Reduce the problem of synthesizing expressions into
sub-problems of synthesizing sub-expressions.
• Reduction requires computing all solutions for each of the
sub-problems:
– This also allows to rank various solutions and select the
highest ranked solution at the top-level.
– A challenge here is to efficiently represent, compute, and
manipulate huge number of such solutions.
• I will show three applications of this idea in the talk.
– Read the paper for more tricks!
11
Synthesizing Guarded Expression
Goal: Given input-output pairs: (i1,o1), (i2,o2), (i3,o3), (i4,o4), find
P such that P(i1)=o1, P(i2)=o2, P(i3)=o3, P(i4)=o4.
Application #1: We reduce the problem of learning
guarded expression P to the problem of learning string
expressions for each input-output pair.
Algorithm:
1. Learn set S1 of string expressions s.t. 8e in S1, [[e]] i1 = o1.
Similarly compute S2, S3, S4. Let S = S1 ÅS2 ÅS3 ÅS4.
2(a) If S ≠ ; then result is Switch((true,S)).
12
Example: Various choices for a String Expression
Input
Output
Constant Constant
Constant
13
Synthesizing String Expressions
Number of all possible string expressions (that can
construct a given output string o1 from a given input
string i1) is exponential in size of output string.
Application #2: To represent/learn all string
expressions, it suffices to represent/learn all base
expressions for each substring of the output.
– # of substrings is just quadratic in size of output string!
– We use a DAG based data-structure, and it supports
efficient intersection operation!
14
Example: Various choices for a SubStr Expression
Various ways to extract “706” from “425-706-7709”:
• Chars after 1st hyphen and before 2nd hyphen.
Substr(v1, Pos(HyphenTok,²,1), Pos(²,HyphenTok,2))
• Chars from 2nd number and up to 2nd number.
Substr(v1, Pos(²,NumTok,2), Pos(NumTok,²,2))
• Chars from 2nd number and before 2nd hyphen.
Substr(v1, Pos(²,NumTok,2), Pos(²,HyphenTok,2))
• Chars from 1st hyphen and up to 2nd number.
Substr(v1, Pos(HyphenTok,²,1), Pos(²,HyphenTok,2))

15
Synthesizing SubStr Expressions
The number of SubStr(v,p1,p2) expressions that can
extract a given substring w from a given string v can
be large!
Application #3: To represent/learn all SubStr
expressions, we can independently represent/learn
all choices for each of the two index expressions.
– This allows for representing and computing O(n1*n2)
choices for SubStr using size/time O(n1+n2).
16
Back to Synthesizing Guarded Expression
Goal: Given input-output pairs: (i1,o1), (i2,o2), (i3,o3), (i4,o4), find
P such that P(i1)=o1, P(i2)=o2, P(i3)=o3, P(i4)=o4.
Algorithm:
1. Learn set S1 of string expressions s.t. 8e in S1, [[e]] i1 = o1.
Similarly compute S2, S3, S4. Let S = S1 ÅS2 ÅS3 ÅS4.
2(a). If S ≠ ; then result is Switch((true,S)).
2(b). Else find a smallest partition, say {S1,S2}, {S3,S4}, s.t.
S1 ÅS2 ≠ ; and S3 ÅS4 ≠ ;.
3. Learn boolean formulas b1, b2 s.t.
b1 maps i1, i2 to true and i3, i4 to false.
b2 maps i3, i4 to true and i1, i2 to false.
4. Result is: Switch((b1,S1 ÅS2), (b2,S3 ÅS4))
17
Ranking Strategy
• Prefer shorter programs.
– Fewer number of conditionals.
– Shorter string expression, regular expressions.
• Prefer programs with less number of constants.
18
Intent Specification
• Examples
– Bitvector Algorithms (ICSE ‘10)
– Spreadsheet Macros (CACM ‘12)
• Syntactic String Transformations (POPL ‘11)
 Semantic String Transformations (VLDB ‘12)
 Number Transformations (CAV ‘12)
• Table Transformations (PLDI ‘11)
• Sketch
– Drawings (CHI 2012)
• Keywords
– SmartPhone Apps
VLDB 2012/CAV 2012: Rishabh Singh, Gulwani
19
Intent Specification
• Examples
– Bitvector Algorithms (ICSE ‘10)
– Spreadsheet Macros (CACM ‘12)
• Syntactic String Transformations (POPL ‘11)
• Semantic String Transformations (VLDB ‘12)
• Number Transformations (CAV ‘12)
 Table Transformations (PLDI ‘11)
• Sketch
– Drawings (CHI 2012)
• Keywords
– SmartPhone Apps
PLDI 2011: Bill Harris, Gulwani
20
Intent Specification
• Examples
– Bitvector Algorithms (ICSE ‘10)
– Spreadsheet Macros (CACM ‘12)
•
•
•
•
Syntactic String Transformations (POPL ‘11)
Semantic String Transformations (VLDB ‘12)
Number Transformations (CAV ‘12)
Table Transformations (PLDI ‘11)
• Sketch
 Drawings (CHI 2012)
• Keywords
– SmartPhone Apps
CHI 2012: Salman Cheema, Gulwani, LaViola
21
Architecture
(Partial) Sketch/Ink Strokes
Sketch Recognition Engine [HCI]
Circle/Line Objects
Constraint Inference Engine [Machine Learning]
Constraints between Objects
Model Synthesis/Beautification Engine [Theorem Proving]
(Partial) Drawing
Pattern Synthesis Engine [Program Synthesis]
Suggestions for Drawing
Completion
22
Intent Specification
• Examples
– Bitvector Algorithms (ICSE ‘10)
– Spreadsheet Macros (CACM ‘12)
•
•
•
•
Syntactic String Transformations (POPL ‘11)
Semantic String Transformations (VLDB ‘12)
Number Transformations (CAV ‘12)
Table Transformations (PLDI ‘11)
• Sketch
– Drawings (CHI 2012)
• Keywords
 SmartPhone Apps
Joint work with: Vu Le, Zhendong Su (UC-Davis)
23
Potential Users of Synthesis Technology
Algorithm
Designers
Software Developers
Most Useful
Target
Most
Transformational
Target
End-Users
Students and Teachers
• Vision for End-users: Enable people to have (automated)
personal assistants.
• Vision for Education: Enable every student to have
access to free & high-quality education.
24
Dimensions in Synthesis
• Concept Language (Application)
– Programs
• Straight-line programs
– Automata
– Queries
– Sequences
• User Intent (Ambiguity)
– Logic, Natural Language
– Examples, Demonstrations/Traces
• Search Technique (Algorithm)
– SAT/SMT solvers (Formal Methods)
– A*-style goal-directed search (AI)
– Version space algebras (Machine Learning)
PPDP 2010: “Dimensions in Program Synthesis”, Gulwani.
25
Download