26
Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords) Sumit Gulwani [email protected] Microsoft Research, Redmond May 2012

Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

  • Upload
    kylia

  • View
    19

  • Download
    0

Embed Size (px)

DESCRIPTION

Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords). Sumit Gulwani [email protected] Microsoft Research, Redmond. May 2012. Potential Users of Synthesis Technology. Algorithm Designers. Software Developers. Most Useful Target. End-Users. - PowerPoint PPT Presentation

Citation preview

Page 1: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

Dimensions in SynthesisPart 3: Ambiguity

(Synthesis from Examples & Keywords)

Sumit [email protected]

Microsoft Research, Redmond

May 2012

Page 2: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

 

Students and Teachers

End-Users

Algorithm Designers

Software Developers

Most Transformational Target

Potential Users of Synthesis Technology

2

Most Useful Target

• 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.

Page 3: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

• 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

3

Intent Specification

Page 4: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

• 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

4

Intent Specification

ICSE 2010: Susmit Jha, Gulwani, Seshia, Tiwari.

Page 5: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

5

Synthesis from Logical Specification

Æ[ (I[p]=1 Æ (I[j]=0)) ) (J[p]=0 Æ(J[j] =

I[j])) ] p=1

b

j=p+1

b

jp

Turn off rightmost 1-bit

Functional Specification:

Tool Output:J = I & (I-1)

PLDI 2011: Gulwani, Jha, Tiwari, Venkatesan.

Page 6: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

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

6

Interactive Synthesis using Examples

Page 7: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

Turn-off rightmost contiguous string of 1’sUser: 01011 -> 01000Tool: 00000 ?User: 00000Tool: 01111 ? User: 00000Tool: 00110 ?User: 00000Tool: 01100 ?User: 00000Tool: 01010 ?User: 01000

Tool: Your program is x & (1 + ((x-1)|x))7

Interactive Synthesis using Examples

Page 8: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

• 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

Intent Specification

Page 9: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

• 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

9

Intent Specification

Page 10: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

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

10

Language for Constructing Output Strings

Page 11: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

11

Example

Switch((b1, e1), (b2, e2)), whereb1 ´ 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))

Format phone numbersInput v1 Output(425)-706-7709 425-706-7709510.220.5586 510-220-5586235 7654 425-235-7654745-8139 425-745-8139

Page 12: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

• 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!

12

Key Synthesis Idea: Divide and Conquer

Reduce the problem of synthesizing expressions into sub-problems of synthesizing sub-expressions.

Page 13: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

13

Synthesizing Guarded ExpressionGoal: 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)).

Application #1: We reduce the problem of learning guarded expression P to the problem of learning string expressions for each input-output pair.

Page 14: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

14

Example: Various choices for a String Expression

Input

OutputConstant

Constant

Constant

Page 15: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

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.

– # of substrings is just quadratic in size of output string!

– We use a DAG based data-structure, and it supports efficient intersection operation!

15

Synthesizing String Expressions

Application #2: To represent/learn all string expressions, it suffices to represent/learn all base expressions for each substring of the output.

Page 16: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

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))

16

Example: Various choices for a SubStr Expression

Page 17: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

The number of SubStr(v,p1,p2) expressions that can extract a given substring w from a given string v can be large!

– This allows for representing and computing

O(n1*n2) choices for SubStr using size/time O(n1+n2).

17

Synthesizing SubStr Expressions

Application #3: To represent/learn all SubStr expressions, we can independently represent/learn all choices for each of the two index expressions.

Page 18: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

18

Back to Synthesizing Guarded ExpressionGoal: 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))

Page 19: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

• Prefer shorter programs.– Fewer number of conditionals.– Shorter string expression, regular expressions.

• Prefer programs with less number of constants.

19

Ranking Strategy

Page 20: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

• 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

20

Intent Specification

VLDB 2012/CAV 2012: Rishabh Singh, Gulwani

Page 21: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

• 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

21

Intent Specification

PLDI 2011: Bill Harris, Gulwani

Page 22: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

• 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

22

Intent Specification

CHI 2012: Salman Cheema, Gulwani, LaViola

Page 23: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

23

Architecture

Sketch Recognition Engine [HCI]

Model Synthesis/Beautification Engine [Theorem Proving]

Pattern Synthesis Engine [Program Synthesis]

(Partial) Sketch/Ink Strokes

Circle/Line Objects

Constraints between Objects

(Partial) Drawing

Suggestions for Drawing Completion

Constraint Inference Engine [Machine Learning]

Page 24: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

• 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

24

Intent Specification

Joint work with: Vu Le, Zhendong Su (UC-Davis)

Page 25: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

 

Students and Teachers

End-Users

Algorithm Designers

Software Developers

Most Transformational Target

Potential Users of Synthesis Technology

25

Most Useful Target

• 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.

Page 26: Dimensions in Synthesis Part 3: Ambiguity (Synthesis from Examples & Keywords)

• Concept Language– Programs

• Straight-line programs– Automata– Queries– Sequences

• User Intent– Logic, Natural Language– Examples, Demonstrations/Traces

• Search Technique– SAT/SMT solvers (Formal Methods)– A*-style goal-directed search (AI)– Version space algebras (Machine Learning)

26

Dimensions in Synthesis

PPDP 2010: “Dimensions in Program Synthesis”, Gulwani.

(Application)

(Ambiguity)

(Algorithm)