-
Notifications
You must be signed in to change notification settings - Fork 39
Reading List
Note: the list of required papers beyond next week is subject to change!
Rajeev Alur, Arjun Radhakrishna, Abhishek Udupa: Scaling Enumerative Program Synthesis via Divide and Conquer. TACAS'17
Questions:
- What does EUSolver use as behavioral constraints? Structural constraint? Search strategy?
- What are the main two pruning/decomposition techniques EUSolver uses to speed up the search? What enables these techniques?
- What would a naive alternative to decision tree learning be for synthesizing branch conditions? What are the disadvantages of this alternative?
Woosuk Lee, Kihong Heo, Rajeev Alur, Mayur Naik: Accelerating Search-Based Program Synthesis usingLearned Probabilistic Models. PLDI'18
Questions:
-
What does Euphony use as behavioral constraints? Structural constraint? Search strategy? How are they different from EUSolver?
-
Consider Fig 2b, where the synthesizer is unrolling the sentential form
Rep(x,"-",S)
. When the search is guided by a PHOG, it considers the weighted productions shown in Fig 2a (top). What would these productions look like if we replaced the PHOG with a PCFG? With 3-grams? Do you think these other probabilistic models would work as well as a PHOG? -
Consider Example 3.2. Explain in English the intuitive meaning of
h(S) = 0.1
and why it is the case. -
Consider Theorem 3.7. Give an example of sentential forms
n_i
,n_j
and set of pointspts
such thatn_i
andn_j
are equivalent onpts
but not weakly equivalent.
Rishabh Singh: BlinkFill: Semisupervised Programming By Example for Syntactic String Transformations. VLDB'16
Questions:
- What does BlinkFill use as behavioral constraints? Structural constraints? Search strategy?
- What is the main technical insight of BlinkFill wrt FlashFill?
- Write a program in the BlinkFill DSL (
L_s
) that extracts conference acronyms and years; the program should satisfy the following examples:- "Programming Language Design and Implementation (PLDI), 2019, Phoenix AZ" -> "PLDI 2019"
- "Principles of Programming Languages (POPL), 2020, New Orleans LA" -> "POPL 2020",
- As described in the paper, the position expressions of the BlinkFill DSL only support matching a single token from Table 1, e.g.
C
. Could we extend the algorithm to support sequences of tokens, e.g.C ws $
to match caps followed by whitespace follows by end of string? How would this change the construction and intersection of input data graphs (use Fig 6 as an example).
Sumit Gulwani, Susmit Jha, Ashish Tiwari, Ramarathnam Venkatesan: Synthesis of loop-free programs. PLDI'11
Questions:
- What does Brahma use as behavioral constraints? Structural constraints? Search strategy?
- Is it possible to specify Brahma's structural constraints in the SyGuS format (as a grammar)? Is yes, show a small example. If no, explain why.
- Consider the following modification of Brahma's synthesis problem: you are given
N
components, but your program is only allowed to use anyK
of them (for a fixedK <= N
). How would you modify the SMT encoding in section 5 to enforce this restriction?
Armando Solar-Lezama: Program sketching. STTT’13
Questions:
- What does Sketch use as behavioral constraints? Structural constraints? Search strategy?
- Compare structural constraints of Sketch with those in SyGuS (i.e. RTGs) and in Brahma; which of those are more expressive?
- Consider extending the Sketch language with a new command,
abort
, that makes the program fail unconditionally. What should the denotational semantics of this command be, i.e. - Give an example of a satisfiable synthesis constraint that violates the Bounded Observation Hypothesis, and hence cannot be efficiently solved by CEGIS. More precisely, give an example of a formula Q(c, x), where c, x are bit-vectors of size n, such that solving the constraint in the worst case would require CEGIS iterations.
Nadia Polikarpova, Ivan Kuraj, Armando Solar-Lezama: Program synthesis from Polymorphic Refinement Types. PLDI’16
Questions:
- What does Synquid use as behavioral constraints? Structural constraint? Search strategy?
- Find a typo in the Example is Section 3.2
- Can Synquid's Round-Trip Type Checking discard the following incomplete terms? Explain how or why not.
-
inc ?? :: {Int | ν = 5}
, whereinc :: x:Int -> {Int | ν = x + 1}
-
duplicate ?? :: {List Int | len ν = 5}
, whereduplicate :: xs:List a -> {List a | len ν = 2*(len xs)}
-
nats ?? :: List Pos
, wherenats :: n:Nat -> {List Nat| len ν = n}
,Nat = {Int | ν >= 0}
,Pos = {Int | ν > 0}
-
- Compare Synquid's condition abduction mechanism to the one from EUSolver.
Nadia Polikarpova, Ilya Sergey: Structuring the Synthesis of Heap-Manipulating Programs. POPL’19
Questions:
- What does SuSLik use as behavioral constraints? Structural constraint? Search strategy?
- Consider Frame rules in Fig. 1. This rule in general would not be sound if our programming language had mutable variables and assignment statements (such as
x := 1
). Why not? Give an example of a specification where it would be incorrect to apply the Frame rule in such an extended language. - Sec 5.1 introduces the invertible rule optimization. Why is the Frame rule not invertible?
Tianyi Zhang, London Lowmanstone, Xinyu Wang, Elena L. Glassman: Interactive Program Synthesis by Augmented Examples. UIST'20
Questions:
- What does Regae use as behavioral constraints? Structural constraint? Search strategy?
- Does the semantic augmentation technique help enhance behavioral or structural constraints (or something else)? What about data augmentation?
- Line 10 in Algorithm 1 prunes a partial regex when it is infeasible, but the paper does not focus on how infeasibility is determined. Can you come up with a condition when a partial regex can be soundly rejected? Use the regex
concat(<num>,e2)
as an example. - In the user study, they randomize the order in which the two tool variants are presented to a participant (i.e. control then treatment or treatment then control). Why is this important?
Xinyun Chen, Chang Liu, Dawn Song: Execution-Guided Neural Program Synthesis. ICLR'19
Questions:
- What does this paper use as behavioral constraints? Structural constraint? Search strategy?
- What is the key difference between their search/decoding technique and the "DP-Beam" constraints optimization in RobustFill?
- Can you think of optimizations that can be applied to the search decoding in this paper's setting?
- How would the execution-guidance work in case of a tree-based search decoding?
- The paper deals with loop generation by unrolling them and then applies the same reasoning as for conditionals. Does this guarantee that the technique can generate arbitrarily nested loops/if statements? Illustrate your reasoning on the following example:
while frontIsClear():
move()
if rightIsClear():
turnRight()
move()
putMarker()
turnLeft()
Gulwani: Dimensions in Program Synthesis. PPDP'10
Alur, Bodík, Juniwal, Martin, Raghothaman, Seshia, Singh, Solar-Lezama, Torlak, Udupa: Syntax-guided synthesis. FMCAD'13
Udupa, Raghavan, Deshmukh, Mador-Haim, Martin, Alur: TRANSIT: specifying protocols with concolic snippets. PLDI'13
Albarghouthi, Gulwani, Kincaid: Recursive Program Synthesis. CAV'13
Barke, Peleg, Polikarpova. Just-in-Time Learning for Bottom-Up Enumerative Synthesis. OOPSLA'20.
Phothilimthana, Thakur, Bodik, Dhurjati: Scaling Up Superoptimization. ASPLOS’16
Lee: Combining the top-down propagation and bottom-up enumeration for inductive program synthesis POPL'21
Smith, Albarghouthi Program Synthesis with Equivalence Reduction. VMCAI'19
Feser, Chaudhuri, Dillig: Synthesizing Data Structure Transformations from Input-Output Examples. PLDI 2015
Balog, Gaunt, Brockschmidt, Nowozin, Tarlow: DeepCoder: Learning to Write Programs. ICLR'17
Bielik, Raychev, Vechev. PHOG: Probabilistic Model for Code. ICML’16
Barke, Peleg, Polikarpova. Just-in-Time Learning for Bottom-Up Enumerative Synthesis . OOPSLA'20.
Shi, Bieber, Singh TF-Coder: Program Synthesis for Tensor Manipulations . TOPLAS'22
Gulwani: Automating string processing in spreadsheets using input-output examples. POPL'11
Le, Gulwani: FlashExtract: a framework for data extraction by examples. PLDI'14
Polozov, Gulwani: FlashMeta: a framework for inductive program synthesis. OOPSLA’15
Wang, Dillig, Singh: Program synthesis using abstraction refinement. POPL'18
Koppel, Guo, de Vries, Solar-Lezama, Polikarpova: Searching Entangled Program Spaces. ICFP'22
Willsey, Nandi, Wang, Flatt, Tatlock, Panchekha: egg: Fast and Extensible Equality Saturation. POPL’21
Schkufza, Sharma, Aiken: Stochastic program optimization. CACM’16
Shi, Steinhardt, Liang: FrAngel: Component-Based Synthesis with Control Structures. POPL'19
Nieuwenhuis, Oliveras, Tinelli: Solving SAT and SAT Modulo Theories: From an abstract Davis--Putnam--Logemann--Loveland procedure to DPLL(T). JACM'06
Jha, Gulwani, Seshia, Tiwari: Oracle-guided component-based program synthesis. ICSE’10
Feng, Martins, Bastani, Dillig: Program synthesis using conflict-driven learning. PLDI'18
Torlak, Bodik: A Lightweight Symbolic Virtual Machinefor Solver-Aided Host Languages. PLDI'14
Osera, Zdancewic: Type-and-example-directed program synthesis. PLDI'15
Frankle, Osera, Walker, Zdancewic: Example-directed synthesis: a type-theoretic interpretation. POPL'16
Düdder, Martens, Rehof: Staged Composition Synthesis. ESOP'14
Scherer, Rémy: Which simple types have a unique inhabitant?. ICFP'15
Knoth, Wang, Polikarpova, Hoffman: Resource-Guided Program Synthesis. PLDI'19
Srivastava, Gulwani, Foster: From program verification to program synthesis. POPL'10
Qiu, Solar-Lezama: Natural Synthesis of Provably-Correct Data-Structure Manipulations. OOPSLA'17
Kneuss, Kuraj, Kuncak, Suter: Synthesis modulo recursive functions. OOPSLA’13
Manna, Waldinger: Synthesis: Dreams → Programs. TSE'79
Manna, Waldinger: A Deductive Approach to Program Synthesis. TOPLAS'80
Reynolds, Deters, Kuncak, Tinelli, Barrett: Counterexample-Guided Quantifier Instantiation for Synthesis in SMT. CAV'15
Sarah E. Chasins, Maria Mueller, Rastislav Bodík: Rousillon: Scraping Distributed Hierarchical Web Data UIST'18
Ian Drosos, Titus Barik, Philip J. Guo, Robert DeLine, Sumit Gulwani: Wrex: A Unified Programming-by-Example Interaction for Synthesizing Readable Code for Data Scientists. CHI'20
Kasra Ferdowsifard, Allen Ordookhanians, Hila Peleg, Sorin Lerner, Nadia Polikarpova: Small-Step Live Programming by Example. UIST'20
Michael B. James, Zheng Guo, Ziteng Wang, Shivani Doshi, Hila Peleg, Ranjit Jhala, Nadia Polikarpova: Digging for Fold: Synthesis-Aided API Discovery for Haskell. OOPSLA'20.
Hila Peleg, Roi Gabay, Shachar Itzhaky, Eran Yahav: Programming with a Read-Eval-Synth Loop. OOPSLA 2020
Jacob Devlin, Jonathan Uesato, Surya Bhupatiraju, Rishabh Singh, Abdel-rahman Mohamed, Pushmeet Kohli. RobustFill: Neural Program Learning under Noisy I/O
Ashwin K. Vijayakumar, Dhruv Batra, Abhishek Mohta, Prateek Jain, Oleksandr Polozov, Sumit Gulwani. Neural-Guided Deductive Search for Real-Time Program Synthesis from Examples
Mark Chen et al. Evaluating Large Language Models Trained on Code
Jacob Austin, Augustus Odena, Maxwell Nye, Maarten Bosma, Henryk Michalewski, David Dohan, Ellen Jiang, Carrie Cai, Michael Terry, Quoc Le, Charles Sutton. Program Synthesis with Large Language Models
- Roopsha Samanta's course at Purdue on program verification and synthesis
- Isil Dillig's course at the University of Texas at Austin on decision procedures and program verification
- Armando Solar-Lezamma's course at MIT on program synthesis
- Emina Torlak's course at University of Washington on program verification and synthesis
- Rajeev Alur's course at University of Pennsylvania on program verification, analysis and synthesis
- Aarti Gupta's course at Princeton University on program verification and synthesis