-
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. CFGs) 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?
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
TBD
- 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