Pranav Garg 0001

dblp:57/9299-1 · DBLP profile ↗
← Back
19ranked-venue papers
8as first author
3since 2021 · last 2025
0000-0002-0575-6320ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 16 · 7 first-author · 2 since 2021Theory of computation · 4 · 3 first-authorArtificial intelligence and machine learning · 2 · 1 since 2021Systems, architecture and hardware · 1
YearPublicationVenuePosition
2025 Approximately Aligned Decoding
abstract
It is common to reject undesired outputs of Large Language Models (LLMs); however, current methods to do so require an excessive amount of computation to re-sample after a rejection, or distort the distribution of outputs by constraining the output to highly improbable tokens. We present a method, Approximately Aligned Decoding (AprAD), to balance the distortion of the output distribution with computational efficiency, inspired by algorithms from the speculative decoding literature. AprAD allows for the generation of long sequences of text with difficult-to-satisfy constraints, while amplifying low probability outputs much less compared to existing methods. We show through a series of experiments that the task-specific performance of AprAD is comparable to methods that do not distort the output distribution, while being much more computationally efficient.
Daniel Melcer, Sujan K. Gonugondla, Pramuditha Perera, Haifeng Qian, Wen-Hao Chiang, Nihal Jain, Pranav Garg 0001, Xiaofei Ma 0001, Anoop Deoras
NeurIPS8
2025 UTFix: Change Aware Unit Test Repairing using LLM
abstract
Software updates, including bug repair and feature additions, are frequent in modern applications but they often leave test suites outdated, resulting in undetected bugs and increased chances of system failures. A recent study by Meta revealed that 14%-22% of software failures stem from outdated tests that fail to reflect changes in the codebase. This highlights the need to keep tests in sync with code changes to ensure software reliability. In this paper, we present UTFix , a novel approach for repairing unit tests when their corresponding focal methods undergo changes. UTFix addresses two critical issues: assertion failure and reduced code coverage caused by changes in the focal method. Our approach leverages language models to repair unit tests by providing contextual information such as static code slices, dynamic code slices, and failure messages. We evaluate UTFix on our generated synthetic benchmark (Syn-Bench), and real-world benchmark. In our experiment, UTFix successfully repaired 89.2% of assertion failures and achieved 100% code coverage for 96 tests out of 369 unit tests. On the real-world benchmarks, UTFix repaired 60% of assertion failures while achieving 100% code coverage for 19 out of 30 unit tests. To the best of our knowledge, this is the first comprehensive study focused on unit test in evolving Python projects. Our contributions include the development of UTFix , the creation of Syn-Bench and real-world benchmarks, and the demonstration of the effectiveness of LLM-based methods in addressing unit test failures due to software evolution.
Shanto Rahman, Sachit Kuhar, Berk Çirisci, Pranav Garg 0001, Shiqi Wang 0002, Xiaofei Ma 0001, Anoop Deoras, Baishakhi Ray
Proc. ACM Program. Lang.4
2022 Synthesizing code quality rules from examples
abstract
Static Analysis tools have rules for several code quality issues and these rules are created by experts manually. In this paper, we address the problem of automatic synthesis of code quality rules from examples. We formulate the rule synthesis problem as synthesizing first order logic formulas over graph representations of code. We present a new synthesis algorithm RhoSynth that is based on Integer Linear Programming-based graph alignment for identifying code elements of interest to the rule. We bootstrap RhoSynth by leveraging code changes made by developers as the source of positive and negative examples. We also address rule refinement in which the rules are incrementally improved with additional user-provided examples. We validate RhoSynth by synthesizing more than 30 Java code quality rules. These rules have been deployed as part of Amazon CodeGuru Reviewer and their precision exceeds 75% based on developer feedback collected during live code-reviews within Amazon. Through comparisons with recent baselines, we show that current state-of-the-art program synthesis approaches are unable to synthesize most of these rules.
Pranav Garg 0001, Srinivasan H. Sengamedu
Proc. ACM Program. Lang.1
2020 A Learning-Based Approach to Synthesizing Invariants for Incomplete Verification Engines
abstract
Abstract We propose a framework for synthesizing inductive invariants for incomplete verification engines, which soundly reduce logical problems in undecidable theories to decidable theories. Our framework is based on the counterexample guided inductive synthesis principle and allows verification engines to communicate non-provability information to guide invariant synthesis. We show precisely how the verification engine can compute such non-provability information and how to build effective learning algorithms when invariants are expressed as Boolean combinations of a fixed set of predicates. Moreover, we evaluate our framework in two verification settings, one in which verification engines need to handle quantified formulas and one in which verification engines have to reason about heap properties expressed in an expressive but undecidable separation logic. Our experiments show that our invariant synthesis framework based on non-provability information can both effectively synthesize inductive invariants and adequately strengthen contracts across a large suite of programs. This work is an extended version of a conference paper titled “Invariant Synthesis for Incomplete Verification Engines”.
Daniel Neider, P. Madhusudan, Shambwaditya Saha, Pranav Garg 0001, Daejun Park 0001
J. Autom. Reason.4
2019 Sorcar: Property-Driven Algorithms for Learning Conjunctive Invariants
Daniel Neider, Shambwaditya Saha, Pranav Garg 0001, P. Madhusudan
SAS3
2018 Invariant Synthesis for Incomplete Verification Engines
Daniel Neider, Pranav Garg 0001, P. Madhusudan, Shambwaditya Saha, Daejun Park 0001
TACAS (1)2
2018 Horn-ICE learning for synthesizing invariants and contracts
abstract
We design learning algorithms for synthesizing invariants using Horn implication counterexamples (Horn-ICE), extending the ICE-learning model. In particular, we describe a decision-tree learning algorithm that learns from nonlinear Horn-ICE samples, works in polynomial time, and uses statistical heuristics to learn small trees that satisfy the samples. Since most verification proofs can be modeled using nonlinear Horn clauses, Horn-ICE learning is a more robust technique to learn inductive annotations that prove programs correct. Our experiments show that an implementation of our algorithm is able to learn adequate inductive invariants and contracts efficiently for a variety of sequential and concurrent programs.
P. Ezudheen, Daniel Neider, Deepak D'Souza, Pranav Garg 0001, P. Madhusudan
Proc. ACM Program. Lang.4
2017 Efficient Incrementalized Runtime Checking of Linear Measures on Lists
abstract
We present mechanisms to specify and efficiently check, at runtime, assertions that express structural properties and aggregate measures of dynamically manipulated linkedlist data structures. Checking assertions involving the structure, disjointness, and aggregation measures on lists and list segments typically requires linear or quadratic time in the size of the heap. Our main contribution is an incrementalization instrumentation that tracks properties of data structures dynamically as the program executes and leads to orders of magnitude speedup in assertion checking in many scenarios. Our incrementalization incurs a constant overhead on updates to list structures but enables checking assertions in constant time, independent of the size of the heap. We define a general class of functions on lists, called linear measures, which are amenable to our incrementalization technique. We demonstrate the effectiveness of our technique by showing orders of magnitude speedup in two scenarios: one scenario stemming from assertions at the level of APIs of list-manipulating libraries and the other scenario stemming from providing dynamic detection of security attacks caused by malicious rootkits.
Alex Gyori, Pranav Garg 0001, Edgar Pek, P. Madhusudan
ICST2
2016 Learning invariants using decision trees and implication counterexamples
abstract
Inductive invariants can be robustly synthesized using a learning model where the teacher is a program verifier who instructs the learner through concrete program configurations, classified as positive, negative, and implications. We propose the first learning algorithms in this model with implication counter-examples that are based on machine learning techniques. In particular, we extend classical decision-tree learning algorithms in machine learning to handle implication samples, building new scalable ways to construct small decision trees using statistical measures. We also develop a decision-tree learning algorithm in this model that is guaranteed to converge to the right concept (invariant) if one exists. We implement the learners and an appropriate teacher, and show that the resulting invariant synthesis is efficient and convergent for a large suite of programs.
Pranav Garg 0001, Daniel Neider, P. Madhusudan, Dan Roth 0001
POPL1
2015 Alchemist: Learning Guarded Affine Functions
Shambwaditya Saha, Pranav Garg 0001, P. Madhusudan
CAV (1)2
2015 Quantified data automata for linear data structures: a register automaton model with applications to learning invariants of programs manipulating arrays and lists
Pranav Garg 0001, Christof Löding, P. Madhusudan, Daniel Neider
Formal Methods Syst. Des.1
2014 ICE: A Robust Framework for Learning Invariants
Pranav Garg 0001, Christof Löding, P. Madhusudan, Daniel Neider
CAV1
2014 Natural proofs for asynchronous programs using almost-synchronous reductions
abstract
We consider the problem of provably verifying that an asynchronous message-passing system satisfies its local assertions. We present a novel reduction scheme for asynchronous event-driven programs that finds almost-synchronous invariants - invariants consisting of global states where message buffers are close to empty. The reduction finds almost-synchronous invariants and simultaneously argues that they cover all local states. We show that asynchronous programs often have almost-synchronous invariants and that we can exploit this to build natural proofs that they are correct. We implement our reduction strategy, which is sound and complete, and show that it is more effective in proving programs correct as well as more efficient in finding bugs in several programs, compared to current search strategies which almost always diverge. The high point of our experiments is that our technique can prove the Windows Phone USB Driver written in P [9]correct for the responsiveness property, which was hitherto not provable using state-of-the-art model-checkers.
Ankush Desai, Pranav Garg 0001, P. Madhusudan
OOPSLA2
2013 Learning Universally Quantified Invariants of Linear Data Structures
Pranav Garg 0001, Christof Löding, P. Madhusudan, Daniel Neider
CAV1
2013 Feedback-directed unit test generation for C/C++ using concolic execution
abstract
In industry, software testing and coverage-based metrics are the predominant techniques to check correctness of software. This paper addresses automatic unit test generation for programs written in C/C++. The main idea is to improve the coverage obtained by feedback-directed random test generation methods, by utilizing concolic execution on the generated test drivers. Furthermore, for programs with numeric computations, we employ non-linear solvers in a lazy manner to generate new test inputs. These techniques significantly improve the coverage provided by a feedback-directed random unit testing framework, while retaining the benefits of full automation. We have implemented these techniques in a prototype platform, and describe promising experimental results on a number of C/C++ open source benchmarks.
Pranav Garg 0001, Franjo Ivancic, Gogul Balakrishnan, Naoto Maeda, Aarti Gupta
ICSE1
2013 Natural proofs for structure, data, and separation
abstract
We propose natural proofs for reasoning with programs that manipulate data-structures against specifications that describe the structure of the heap, the data stored within it, and separation and framing of sub-structures. Natural proofs are a subclass of proofs that are amenable to completely automated reasoning, that provide sound but incomplete procedures, and that capture common reasoning tactics in program verification. We develop a dialect of separation logic over heaps, called Dryad, with recursive definitions that avoids explicit quantification. We develop ways to reason with heaplets using classical logic over the theory of sets, and develop natural proofs for reasoning using proof tactics involving disciplined unfoldings and formula abstractions. Natural proofs are encoded into decidable theories of first-order logic so as to be discharged using SMT solvers.
Xiaokang Qiu, Pranav Garg 0001, Andrei Stefanescu, P. Madhusudan
PLDI2
2013 Quantified Data Automata on Skinny Trees: An Abstract Domain for Lists
Pranav Garg 0001, P. Madhusudan, Gennaro Parlato
SAS1
2011 Rebound: scalable checkpointing for coherent shared memory
abstract
As we move to large manycores, the hardware-based global check-pointing schemes that have been proposed for small shared-memory machines do not scale. Scalability barriers include global operations, work lost to global rollback, and inefficiencies in imbalanced or I/O-intensive loads. Scalable checkpointing requires tracking inter-thread dependences and building the checkpoint and rollback operations around dynamic groups of communicating processors.
Rishi Agarwal, Pranav Garg 0001, Josep Torrellas
ISCA2
2011 Compositionality Entails Sequentializability
Pranav Garg 0001, P. Madhusudan
TACAS1