Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Thomas Dillig

dblp:26/6661 · DBLP profile ↗
← Back
23ranked-venue papers
1as first author
0since 2021 · last 2017
—ORCID · none

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

Software engineering, systems software and programming languages · 22 · 1 first-authorTheory of computation · 6 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
10 papers
Program verification · 38% Program analysis · 28% Program synthesis and code generation · 17%
Databases, data mining, and information retrieval
2 papers
Query processing and optimization · 89% Data stream processing · 11%
Theoretical computer science
3 papers
Automated reasoning and model checking · 48% Logic in computer science · 33% Mathematical optimization · 19%

Topics — the 21 heaviest of 27, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program verification › invariant generation
loop invariant generation
0.322013
Inductive invariant generation via abductive inference · OOPSLA 2013
Simplifying Loop Invariant Generation Using Splitter Predicates · CAV 2011
Program synthesis and code generation › DSL-based synthesis
query synthesis
0.312017
SQLizer: query synthesis from natural language · Proc. ACM Program. Lang. 2017
Program analysis
static analysis
0.332011
Precise reasoning for programs using containers · POPL 2011
Symbolic heap abstraction with demand-driven axiomatization of memory invariants · OOPSLA 2010
Simplifying Loop Invariant Generation Using Splitter Predicates · CAV 2011
Automated reasoning and model checking
satisfiability modulo theories
0.222012
Minimum Satisfying Assignments for SMT · CAV 2012
Cuts from Proofs: A Complete and Practical Technique for Solving Linear Inequalities over Integers · CAV 2009
Query processing and optimization › query optimization
user-defined function optimization
0.212014
Consolidation of queries with user-defined functions · PLDI 2014
Program verification › program logic
hoare logic
0.212013
Inductive invariant generation via abductive inference · OOPSLA 2013
Program verification › deductive verification
verification condition generation
0.212013
Inductive invariant generation via abductive inference · OOPSLA 2013
Program verification
abductive inference
0.112012
Automated error diagnosis using abductive inference · PLDI 2012
Debugging and program repair
error diagnosis
0.112012
Automated error diagnosis using abductive inference · PLDI 2012
Debugging and program repair
fault localization
0.112012
Automated error diagnosis using abductive inference · PLDI 2012
Program analysis
heap analysis
0.112011
Precise and compact modular procedure summaries for heap manipulating programs · PLDI 2011
Programming languages and type systems
heap-manipulating programs
0.112011
Precise and compact modular procedure summaries for heap manipulating programs · PLDI 2011
Program analysis › static analysis › vulnerability detection
buffer overflow detection
0.112010
Symbolic heap abstraction with demand-driven axiomatization of memory invariants · OOPSLA 2010
Program analysis › heap analysis
heap abstraction
0.112010
Symbolic heap abstraction with demand-driven axiomatization of memory invariants · OOPSLA 2010
Program verification › security property verification
memory safety verification
0.112010
Symbolic heap abstraction with demand-driven axiomatization of memory invariants · OOPSLA 2010
Mathematical optimization
integer programming
0.112009
Cuts from Proofs: A Complete and Practical Technique for Solving Linear Inequalities over Integers · CAV 2009
Natural language and speech › Information extraction and text analysis
semantic parsing
0.112017
SQLizer: query synthesis from natural language · Proc. ACM Program. Lang. 2017
Program analysis › data flow analysis
path-sensitive analysis
0.112008
Sound, complete and scalable path-sensitive analysis · PLDI 2008
Data stream processing
streaming analytics
0.112014
Consolidation of queries with user-defined functions · PLDI 2014
Programming languages and type systems › language-based security
memory safety
0.112014
Optimal Guard Synthesis for Memory Safety · CAV 2014
Program analysis › static analysis › abstract interpretation
relational analysis
0.012010
Symbolic heap abstraction with demand-driven axiomatization of memory invariants · OOPSLA 2010

Methods — techniques the papers use, named apart from their topics

type-directed program synthesis · 0.9probabilistic type inhabitation · 0.9automated program repair · 0.9abductive inference · 0.3quantifier elimination · 0.3SMT-based symbolic analysis · 0.2backtracking search · 0.2user study · 0.1strong updates · 0.1bottom-up summary-based analysis · 0.1abstract interpretation · 0.1proof-based cut generation · 0.1
YearPublicationVenuePosition
2017 SQLizer: query synthesis from natural language
abstract
This paper presents a new technique for automatically synthesizing SQL queries from natural language (NL). At the core of our technique is a new NL-based program synthesis methodology that combines semantic parsing techniques from the NLP community with type-directed program synthesis and automated program repair. Starting with a program sketch obtained using standard parsing techniques, our approach involves an iterative refinement loop that alternates between probabilistic type inhabitation and automated sketch repair. We use the proposed idea to build an end-to-end system called SQLIZER that can synthesize SQL queries from natural language. Our method is fully automated, works for any database without requiring additional customization, and does not require users to know the underlying database schema. We evaluate our approach on over 450 natural language queries concerning three different databases, namely MAS, IMDB, and YELP. Our experiments show that the desired query is ranked within the top 5 candidates in close to 90% of the cases and that SQLIZER outperforms NALIR, a state-of-the-art tool that won a best paper award at VLDB'14.
Navid Yaghmazadeh, Yuepeng Wang 0001, Isil Dillig, Thomas Dillig
Proc. ACM Program. Lang.4
2017 Synthesis of circular compositional program proofs via abduction
Isil Dillig, Thomas Dillig, Boyang Li 0002, Kenneth L. McMillan, Shmuel Sagiv
Int. J. Softw. Tools Technol. Transf.2
2015 Bottom-Up Context-Sensitive Pointer Analysis for Java
Yu Feng 0001, Xinyu Wang 0006, Isil Dillig, Thomas Dillig
APLAS4
2014 Optimal Guard Synthesis for Memory Safety
Thomas Dillig, Isil Dillig, Swarat Chaudhuri
CAV1
2014 Consolidation of queries with user-defined functions
abstract
Motivated by streaming and data analytics scenarios where many queries operate on the same data and perform similar computations, we propose program consolidation for merging multiple user-defined functions (UDFs) that operate on the same input. Program consolidation exploits common computations between UDFs to generate an equivalent optimized function whose execution cost is often much smaller (and never greater) than the sum of the costs of executing each function individually. We present a sound consolidation calculus and an effective algorithm for consolidating multiple UDFs. Our approach is purely static and uses symbolic SMT-based techniques to identify shared or redundant computations. We have implemented the proposed technique on top of the Naiad data processing system. Our experiments show that our algorithm dramatically improves overall job completion time when executing user-defined filters that operate on the same data and perform similar computations.
Marcelo Sousa, Isil Dillig, Dimitrios Vytiniotis, Thomas Dillig, Christos Gkantsidis
PLDI4
2013 Automated Inference of Library Specifications for Source-Sink Property Verification
Haiyan Zhu, Thomas Dillig, Isil Dillig
APLAS2
2013 Explain: A Tool for Performing Abductive Inference
Isil Dillig, Thomas Dillig
CAV2
2013 Inductive invariant generation via abductive inference
abstract
This paper presents a new method for generating inductive loop invariants that are expressible as boolean combinations of linear integer constraints. The key idea underlying our technique is to perform a backtracking search that combines Hoare-style verification condition generation with a logical abduction procedure based on quantifier elimination to speculate candidate invariants. Starting with true, our method iteratively strengthens loop invariants until they are inductive and strong enough to verify the program. A key feature of our technique is that it is lazy: It only infers those invariants that are necessary for verifying program correctness. Furthermore, our technique can infer arbitrary boolean combinations (including disjunctions) of linear invariants. We have implemented the proposed approach in a tool called HOLA. Our experiments demonstrate that HOLA can infer interesting invariants that are beyond the reach of existing state-of-the-art invariant generation tools.
Isil Dillig, Thomas Dillig, Boyang Li 0002, Kenneth L. McMillan
OOPSLA2
2013 Synthesis of Circular Compositional Program Proofs via Abduction
Boyang Li 0002, Isil Dillig, Thomas Dillig, Kenneth L. McMillan, Shmuel Sagiv
TACAS3
2012 Minimum Satisfying Assignments for SMT
Isil Dillig, Thomas Dillig, Kenneth L. McMillan, Alex Aiken
CAV2
2012 Automated error diagnosis using abductive inference
abstract
When program verification tools fail to verify a program, either the program is buggy or the report is a false alarm. In this situation, the burden is on the user to manually classify the report, but this task is time-consuming, error-prone, and does not utilize facts already proven by the analysis. We present a new technique for assisting users in classifying error reports. Our technique computes small, relevant queries presented to a user that capture exactly the information the analysis is missing to either discharge or validate the error. Our insight is that identifying these missing facts is an instance of the abductive inference problem in logic, and we present a new algorithm for computing the smallest and most general abductions in this setting. We perform the first user study to rigorously evaluate the accuracy and effort involved in manual classification of error reports. Our study demonstrates that our new technique is very useful for improving both the speed and accuracy of error report classification. Specifically, our approach improves classification accuracy from 33% to 90% and reduces the time programmers take to classify error reports from approximately 5 minutes to under 1 minute.
Isil Dillig, Thomas Dillig, Alex Aiken
PLDI2
2011 Simplifying Loop Invariant Generation Using Splitter Predicates
Rahul Sharma 0001, Isil Dillig, Thomas Dillig, Alex Aiken
CAV3
2011 Precise and compact modular procedure summaries for heap manipulating programs
abstract
We present a strictly bottom-up, summary-based, and precise heap analysis targeted for program verification that performs strong updates to heap locations at call sites. We first present a theory of heap decompositions that forms the basis of our approach; we then describe a full analysis algorithm that is fully symbolic and efficient. We demonstrate the precision and scalability of our approach for verification of real C and C++ programs.
Isil Dillig, Thomas Dillig, Alex Aiken, Shmuel Sagiv
PLDI2
2011 Precise reasoning for programs using containers
abstract
Containers are general-purpose data structures that provide functionality for inserting, reading, removing, and iterating over elements. Since many applications written in modern programming languages, such as C++ and Java, use containers as standard building blocks, precise analysis of many programs requires a fairly sophisticated understanding of container contents. In this paper, we present a sound, precise, and fully automatic technique for static reasoning about contents of containers. We show that the proposed technique adds useful precision for verifying real C++ applications and that it scales to applications with over 100,000 lines of code.
Isil Dillig, Thomas Dillig, Alex Aiken
POPL2
2011 Cuts from proofs: a complete and practical technique for solving linear inequalities over integers
Isil Dillig, Thomas Dillig, Alex Aiken
Formal Methods Syst. Des.2
2010 Fluid Updates: Beyond Strong vs. Weak Updates
Isil Dillig, Thomas Dillig, Alex Aiken
ESOP2
2010 Symbolic heap abstraction with demand-driven axiomatization of memory invariants
abstract
Many relational static analysis techniques for precise reasoning about heap contents perform an explicit case analysis of all possible heaps that can arise. We argue that such precise relational reasoning can be obtained in a more scalable and economical way by enforcing the memory invariant that every concrete memory location stores one unique value directly on the heap abstraction. Our technique combines the strengths of analyses for precise reasoning about heap contents with approaches that prioritize axiomatization of memory invariants, such as the theory of arrays. Furthermore, by avoiding an explicit case analysis, our technique is scalable and powerful enough to analyze real-world programs with intricate use of arrays and pointers; in particular, we verify the absence of buffer overruns, incorrect casts, and null pointer dereferences in OpenSSH (over 26,000 lines of code) after fixing 4 previously undiscovered bugs found by our system. Our experiments also show that the combination of reasoning about heap contents and enforcing existence and uniqueness invariants is crucial for this level of precision. Copyright © 2010 ACM.
Isil Dillig, Thomas Dillig, Alex Aiken
OOPSLA2
2010 Small Formulas for Large Programs: On-Line Constraint Simplification in Scalable Static Analysis
Isil Dillig, Thomas Dillig, Alex Aiken
SAS2
2009 Cuts from Proofs: A Complete and Practical Technique for Solving Linear Inequalities over Integers
Isil Dillig, Thomas Dillig, Alex Aiken
CAV2
2008 The CLOSER: automating resource management in java
abstract
While automatic garbage collection has relieved programmers from manual memory management in Java-like languages, managing resources remains a considerable burden and a source of performance problems. In this paper, we present a novel technique for automatic resource management based on static approximation of resource lifetimes. Our source-to-source transformation tool, CLOSER, automatically transforms program code to guarantee that resources are properly disposed and handles arbitrary resource usage patterns. CLOSER generates code for directly disposing any resource whose lifetime can be statically determined; when this is not possible, CLOSER inserts conditional disposal code based on interest-reference counts that identify when the resource can be safely disposed. The programmer is only required to identify which types should be treated as resources, and what method to invoke to dispose each such resource. We successfully applied CLOSER on a moderate-sized graphics application that requires complex reasoning for resource management.
Isil Dillig, Thomas Dillig, Eran Yahav, Satish Chandra 0001
ISMM2
2008 Sound, complete and scalable path-sensitive analysis
abstract
We present a new, precise technique for fully path- and context-sensitive program analysis. Our technique exploits two observations: First, using quantified, recursive formulas, path- and context-sensitive conditions for many program properties can be expressed exactly. To compute a closed form solution to such recursive constraints, we differentiate between observable and unobservable variables, the latter of which are existentially quantified in our approach. Using the insight that unobservable variables can be eliminated outside a certain scope, our technique computes satisfiability- and validity-preserving closed-form solutions to the original recursive constraints. We prove the solution is as precise as the original system for answering may and must queries as well as being small in practice, allowing our technique to scale to the entire Linux kernel, a program with over 6 million lines of code.
Isil Dillig, Thomas Dillig, Alex Aiken
PLDI2
2007 An overview of the saturn project
abstract
We present an overview of the Saturn program analysis system, including a rationale for three major design decisions: the use of function-at-a-time, or summary-based, analysis, the use of constraints, and the use of a logic programming language to express program analysis algorithms. We argue that the combination of summaries and constraints allows Saturn to achieve both great scalability and great precision, while the use of a logic programming language with constraints allows for succinct, high-level expression of program analyses.
Alex Aiken, Suhabe Bugrara, Isil Dillig, Thomas Dillig, Brian Hackett, Peter Hawkins
PASTE4
2007 Static error detection using semantic inconsistency inference
abstract
Inconsistency checking is a method for detecting software errors that relies only on examining multiple uses of a value. We propose that inconsistency inference is best understood as a variant of the older and better understood problem of type inference. Using this insight, we describe a precise and formal framework for discovering inconsistency errors. Unlike previous approaches to the problem, our technique for finding inconsistency errors is purely semantic and can deal with complex aliasing and path-sensitive conditions. We have built a nullde reference analysis of C programs based on semantic inconsistency inference and have used it to find hundreds of previously unknown null dereference errors in widely used C programs.
Isil Dillig, Thomas Dillig, Alex Aiken
PLDI2