Skip to main content

Showing 1–23 of 23 results for author: Polikarpova, N

Searching in archive cs. Search in all archives.
.
  1. arXiv:2405.21047  [pdf, other

    cs.AI cs.CL cs.LG

    Grammar-Aligned Decoding

    Authors: Kanghee Park, Jiayu Wang, Taylor Berg-Kirkpatrick, Nadia Polikarpova, Loris D'Antoni

    Abstract: Large Language Models (LLMs) struggle with reliably generating highly structured outputs, such as program code, mathematical formulas, or well-formed markup. Constrained decoding approaches mitigate this problem by greedily restricting what tokens an LLM can output at each step to guarantee that the output matches a given constraint. Specifically, in grammar-constrained decoding (GCD), the LLM's o… ▽ More

    Submitted 31 May, 2024; originally announced May 2024.

  2. arXiv:2405.16792  [pdf, other

    cs.LO cs.AI

    Laurel: Generating Dafny Assertions Using Large Language Models

    Authors: Eric Mugnier, Emmanuel Anaya Gonzalez, Ranjit Jhala, Nadia Polikarpova, Yuanyuan Zhou

    Abstract: Dafny is a popular verification language, which automates proofs by outsourcing them to an SMT solver. This automation is not perfect, however, and the solver often requires guidance in the form of helper assertions creating a burden for the proof engineer. In this paper, we propose Laurel, a tool that uses large language models (LLMs) to automatically generate helper assertions for Dafny programs… ▽ More

    Submitted 26 May, 2024; originally announced May 2024.

    Comments: 10 pages, under review

  3. arXiv:2405.15880  [pdf, other

    cs.PL cs.AI

    HYSYNTH: Context-Free LLM Approximation for Guiding Program Synthesis

    Authors: Shraddha Barke, Emmanuel Anaya Gonzalez, Saketh Ram Kasibatla, Taylor Berg-Kirkpatrick, Nadia Polikarpova

    Abstract: Many structured prediction and reasoning tasks can be framed as program synthesis problems, where the goal is to generate a program in a domain-specific language (DSL) that transforms input data into the desired output. Unfortunately, purely neural approaches, such as large language models (LLMs), often fail to produce fully correct programs in unfamiliar DSLs, while purely symbolic methods based… ▽ More

    Submitted 24 May, 2024; originally announced May 2024.

  4. arXiv:2402.11734  [pdf, other

    cs.PL cs.AI cs.SE

    Solving Data-centric Tasks using Large Language Models

    Authors: Shraddha Barke, Christian Poelitz, Carina Suzana Negreanu, Benjamin Zorn, José Cambronero, Andrew D. Gordon, Vu Le, Elnaz Nouri, Nadia Polikarpova, Advait Sarkar, Brian Slininger, Neil Toronto, Jack Williams

    Abstract: Large language models (LLMs) are rapidly replacing help forums like StackOverflow, and are especially helpful for non-professional programmers and end users. These users are often interested in data-centric tasks, such as spreadsheet manipulation and data wrangling, which are hard to solve if the intent is only communicated using a natural-language description, without including the data. But how… ▽ More

    Submitted 24 March, 2024; v1 submitted 18 February, 2024; originally announced February 2024.

    Comments: Paper accepted to NAACL 2024 (Findings)

  5. Validating AI-Generated Code with Live Programming

    Authors: Kasra Ferdowsi, Ruanqianqian Huang, Michael B. James, Nadia Polikarpova, Sorin Lerner

    Abstract: AI-powered programming assistants are increasingly gaining popularity, with GitHub Copilot alone used by over a million developers worldwide. These tools are far from perfect, however, producing code suggestions that may be incorrect in subtle ways. As a result, developers face a new challenge: validating AI's suggestions. This paper explores whether Live Programming (LP), a continuous display of… ▽ More

    Submitted 23 February, 2024; v1 submitted 15 June, 2023; originally announced June 2023.

    Comments: 8 pages, 4 figures

  6. babble: Learning Better Abstractions with E-Graphs and Anti-Unification

    Authors: David Cao, Rose Kunkel, Chandrakana Nandi, Max Willsey, Zachary Tatlock, Nadia Polikarpova

    Abstract: Library learning compresses a given corpus of programs by extracting common structure from the corpus into reusable library functions. Prior work on library learning suffers from two limitations that prevent it from scaling to larger, more complex inputs. First, it explores too many candidate library functions that are not useful for compression. Second, it is not robust to syntactic variation in… ▽ More

    Submitted 8 December, 2022; originally announced December 2022.

    Comments: POPL 2023

  7. arXiv:2206.15000  [pdf, other

    cs.HC cs.PL

    Grounded Copilot: How Programmers Interact with Code-Generating Models

    Authors: Shraddha Barke, Michael B. James, Nadia Polikarpova

    Abstract: Powered by recent advances in code-generating models, AI assistants like Github Copilot promise to change the face of programming forever. But what is this new face of programming? We present the first grounded theory analysis of how programmers interact with Copilot, based on observing 20 participants--with a range of prior experience using the assistant--as they solve diverse programming tasks a… ▽ More

    Submitted 31 October, 2022; v1 submitted 29 June, 2022; originally announced June 2022.

  8. arXiv:2206.07828  [pdf, other

    cs.PL

    Searching Entangled Program Spaces

    Authors: James Koppel, Zheng Guo, Edsko de Vries, Armando Solar-Lezama, Nadia Polikarpova

    Abstract: Many problem domains, including program synthesis and rewrite-based optimization, require searching astronomically large spaces of programs. Existing approaches often rely on building specialized data structures -- version-space algebras, finite tree automata, or e-graphs -- to compactly represent these programs. To find a compact representation, existing data structures exploit independence of su… ▽ More

    Submitted 15 June, 2022; originally announced June 2022.

  9. Type-Directed Program Synthesis for RESTful APIs

    Authors: Zheng Guo, David Cao, Davin Tjong, Jean Yang, Cole Schlesinger, Nadia Polikarpova

    Abstract: With the rise of software-as-a-service and microservice architectures, RESTful APIs are now ubiquitous in mobile and web applications. A service can have tens or hundreds of API methods, making it a challenge for programmers to find the right combination of methods to solve their task. We present APIphany, a component-based synthesizer for programs that compose calls to RESTful APIs. The main in… ▽ More

    Submitted 5 April, 2022; v1 submitted 30 March, 2022; originally announced March 2022.

  10. Just-in-Time Learning for Bottom-Up Enumerative Synthesis

    Authors: Shraddha Barke, Hila Peleg, Nadia Polikarpova

    Abstract: A key challenge in program synthesis is the astronomical size of the search space the synthesizer has to explore. In response to this challenge, recent work proposed to guide synthesis using learned probabilistic models. Obtaining such a model, however, might be infeasible for a problem domain where no high-quality training data is available. In this work we introduce an alternative approach to gu… ▽ More

    Submitted 16 October, 2020; originally announced October 2020.

    Comments: Accepted at OOPSLA 2020

  11. arXiv:2006.16233  [pdf, ps, other

    cs.PL

    Liquid Resource Types

    Authors: Tristan Knoth, Di Wang, Adam Reynolds, Jan Hoffmann, Nadia Polikarpova

    Abstract: This article presents liquid resource types, a technique for automatically verifying the resource consumption of functional programs. Existing resource analysis techniques trade automation for flexibility -- automated techniques are restricted to relatively constrained families of resource bounds, while more expressive proof techniques admitting value-dependent bounds rely on handwritten proofs. L… ▽ More

    Submitted 1 July, 2020; v1 submitted 29 June, 2020; originally announced June 2020.

  12. arXiv:2001.10723  [pdf, other

    cs.PL cs.LO

    Concise Read-Only Specifications for Better Synthesis of Programs with Pointers -- Extended Version

    Authors: Andreea Costea, Amy Zhu, Nadia Polikarpova, Ilya Sergey

    Abstract: In program synthesis there is a well-known trade-off between concise and strong specifications: if a specification is too verbose, it might be harder to write than the program; if it is too weak, the synthesised program might not match the user's intent. In this work we explore the use of annotations for restricting memory access permissions in program synthesis, and show that they can make specif… ▽ More

    Submitted 29 January, 2020; originally announced January 2020.

  13. Program Synthesis by Type-Guided Abstraction Refinement

    Authors: Zheng Guo, Michael James, David Justo, Jiaxiao Zhou, Ziteng Wang, Ranjit Jhala, Nadia Polikarpova

    Abstract: We consider the problem of type-directed component based synthesis where, given a set of (typed) components and a query type, the goal is to synthesize a term that inhabits the query. Classical approaches based on proof search in intuitionistic logics do not scale up to the standard libraries of modern languages, which span hundreds or thousands of components. Recent graph reachability based metho… ▽ More

    Submitted 11 November, 2019; originally announced November 2019.

  14. arXiv:1904.13049  [pdf, other

    cs.PL

    Targeted Synthesis for Programming with Data Invariants

    Authors: John Sarracino, Shraddha Barke, Hila Peleg, Sorin Lerner, Nadia Polikarpova

    Abstract: Programmers frequently maintain implicit data invariants, which are relations between different data structures in a program. Traditionally, such invariants are manually enforced and checked by programmers. This ad-hoc practice is difficult because the programmer must manually account for all the locations and configurations that break an invariant. Moreover, implicit invariants are brittle under… ▽ More

    Submitted 25 October, 2019; v1 submitted 30 April, 2019; originally announced April 2019.

  15. arXiv:1904.07415  [pdf, other

    cs.PL cs.LO

    Resource-Guided Program Synthesis

    Authors: Tristan Knoth, Di Wang, Nadia Polikarpova, Jan Hoffmann

    Abstract: This article presents resource-guided synthesis, a technique for synthesizing recursive programs that satisfy both a functional specification and a symbolic resource bound. The technique is type-directed and rests upon a novel type system that combines polymorphic refinement types with potential annotations of automatic amortized resource analysis. The type system enables efficient constraint-base… ▽ More

    Submitted 17 April, 2019; v1 submitted 15 April, 2019; originally announced April 2019.

  16. Structuring the Synthesis of Heap-Manipulating Programs - Extended Version

    Authors: Nadia Polikarpova, Ilya Sergey

    Abstract: This paper describes a deductive approach to synthesizing imperative programs with pointers from declarative specifications expressed in Separation Logic. Our synthesis algorithm takes as input a pair of assertions---a pre- and a postcondition---which describe two states of the symbolic heap, and derives a program that transforms one state into the other, guided by the shape of the heap. The progr… ▽ More

    Submitted 8 November, 2018; v1 submitted 18 July, 2018; originally announced July 2018.

    Journal ref: Proc. ACM Program. Lang. 3, POPL, Article 72 (January 2019)

  17. arXiv:1607.03445  [pdf, other

    cs.PL

    Liquid Information Flow Control

    Authors: Nadia Polikarpova, Deian Stefan, Jean Yang, Shachar Itzhaky, Travis Hance, Armando Solar-Lezama

    Abstract: We present Lifty, a domain-specific language for data-centric applications that manipulate sensitive data. A Lifty programmer annotates the sources of sensitive data with declarative security policies, and the language statically and automatically verifies that the application handles the data according to the policies. Moreover, if verification fails, Lifty suggests a provably correct repair, the… ▽ More

    Submitted 30 June, 2020; v1 submitted 12 July, 2016; originally announced July 2016.

  18. arXiv:1510.08419  [pdf, other

    cs.PL

    Program Synthesis from Polymorphic Refinement Types

    Authors: Nadia Polikarpova, Ivan Kuraj, Armando Solar-Lezama

    Abstract: We present a method for synthesizing recursive functions that provably satisfy a given specification in the form of a polymorphic refinement type. We observe that such specifications are particularly suitable for program synthesis for two reasons. First, they offer a unique combination of expressive power and decidability, which enables automatic verification---and hence synthesis---of nontrivial… ▽ More

    Submitted 21 April, 2016; v1 submitted 28 October, 2015; originally announced October 2015.

    ACM Class: F.3.1; I.2.2

  19. arXiv:1507.05527  [pdf, other

    cs.PL

    Synthesis of Recursive ADT Transformations from Reusable Templates

    Authors: Jeevana Priya Inala, Nadia Polikarpova, Xiaokang Qiu, Benjamin S. Lerner, Armando Solar-Lezama

    Abstract: Recent work has proposed a promising approach to improving scalability of program synthesis by allowing the user to supply a syntactic template that constrains the space of potential programs. Unfortunately, creating templates often requires nontrivial effort from the user, which impedes the usability of the synthesizer. We present a solution to this problem in the context of recursive transformat… ▽ More

    Submitted 16 April, 2017; v1 submitted 20 July, 2015; originally announced July 2015.

  20. AutoProof: Auto-active Functional Verification of Object-oriented Programs

    Authors: Julian Tschannen, Carlo A. Furia, Martin Nordio, Nadia Polikarpova

    Abstract: Auto-active verifiers provide a level of automation intermediate between fully automatic and interactive: users supply code with annotations as input while benefiting from a high level of automation in the back-end. This paper presents AutoProof, a state-of-the-art auto-active verifier for object-oriented sequential programs with complex functional specifications. AutoProof fully supports advanced… ▽ More

    Submitted 15 January, 2015; v1 submitted 13 January, 2015; originally announced January 2015.

    Journal ref: Proceedings of the 21st International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS). Lecture Notes in Computer Science, 9035:566--580, Springer, April 2015

  21. Flexible Invariants Through Semantic Collaboration

    Authors: Nadia Polikarpova, Julian Tschannen, Carlo A. Furia, Bertrand Meyer

    Abstract: Modular reasoning about class invariants is challenging in the presence of dependencies among collaborating objects that need to maintain global consistency. This paper presents semantic collaboration: a novel methodology to specify and reason about class invariants of sequential object-oriented programs, which models dependencies between collaborating objects by semantic means. Combined with a si… ▽ More

    Submitted 25 February, 2014; v1 submitted 25 November, 2013; originally announced November 2013.

    Comments: 22 pages

    Journal ref: Proceedings of the 19th International Symposium on Formal Methods (FM). Lecture Notes in Computer Science, 8442:514--530, Springer, May 2014

  22. arXiv:1208.3337  [pdf, other

    cs.SE

    What Good Are Strong Specifications?

    Authors: Nadia Polikarpova, Carlo A. Furia, Yu Pei, Yi Wei, Bertrand Meyer

    Abstract: Experience with lightweight formal methods suggests that programmers are willing to write specification if it brings tangible benefits to their usual development activities. This paper considers stronger specifications and studies whether they can be deployed as an incremental practice that brings additional benefits without being unacceptably expensive. We introduce a methodology that extends Des… ▽ More

    Submitted 22 February, 2013; v1 submitted 16 August, 2012; originally announced August 2012.

    Comments: This is the extended version of the camera-ready published as ICSE 2013

    Journal ref: Proceedings of the 35th International Conference on Software Engineering (ICSE). Pgg. 257--266, ACM, May 2013

  23. Specifying Reusable Components

    Authors: Nadia Polikarpova, Carlo A. Furia, Bertrand Meyer

    Abstract: Reusable software components need expressive specifications. This paper outlines a rigorous foundation to model-based contracts, a method to equip classes with strong contracts that support accurate design, implementation, and formal verification of reusable components. Model-based contracts conservatively extend the classic Design by Contract with a notion of model, which underpins the precise de… ▽ More

    Submitted 30 March, 2010; originally announced March 2010.

    Journal ref: Proceedings of the 3rd International Conference on Verified Software: Theories, Tools, and Experiments (VSTTE'10). Lecture Notes in Computer Science, 6217:127--141, Springer-Verlag, August 2010