Jason Breck

dblp:148/1307 · DBLP profile ↗
← Back
8ranked-venue papers
1as first author
0since 2021 · last 2020
—ORCID · none

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

Software engineering, systems software and programming languages · 8 · 1 first-authorTheory of computation · 1

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
6 papers
Program verification · 44% Program analysis · 43% Program synthesis and code generation · 13%
Theoretical computer science
1 paper
Computational complexity · 100%

Topics — the 17 heaviest of 18, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program verification › invariant generation
loop invariant generation
0.722019
Closed forms for numerical loops · Proc. ACM Program. Lang. 2019
Non-linear reasoning for invariant synthesis · Proc. ACM Program. Lang. 2018
Program analysis
static analysis
0.722019
Refinement of path expressions for static analysis · Proc. ACM Program. Lang. 2019
Compositional recurrence analysis revisited · PLDI 2017
Program verification
invariant generation
0.412020
Templates and recurrences: better together · PLDI 2020
Program verification › invariant generation
template-based invariant generation
0.412020
Templates and recurrences: better together · PLDI 2020
Program analysis › static analysis › semantics-based program analysis
algebraic program analysis
0.412019
Refinement of path expressions for static analysis · Proc. ACM Program. Lang. 2019
Program analysis
loop analysis
0.412019
Refinement of path expressions for static analysis · Proc. ACM Program. Lang. 2019
Program verification › model checking › state space exploration
reachability analysis
0.412019
Proving Unrealizability for Syntax-Guided Synthesis · CAV (1) 2019
Program synthesis and code generation
syntax-guided synthesis
0.412019
Proving Unrealizability for Syntax-Guided Synthesis · CAV (1) 2019
Program verification
termination analysis
0.412019
Closed forms for numerical loops · Proc. ACM Program. Lang. 2019
Program synthesis and code generation › controller synthesis › reactive synthesis
unrealizability
0.412019
Proving Unrealizability for Syntax-Guided Synthesis · CAV (1) 2019
Computational complexity
decidability
0.412019
Closed forms for numerical loops · Proc. ACM Program. Lang. 2019
Program analysis › static analysis
abstract interpretation
0.312018
Non-linear reasoning for invariant synthesis · Proc. ACM Program. Lang. 2018
Program analysis › static analysis › interprocedural analysis
context-sensitive analysis
0.312017
Compositional recurrence analysis revisited · PLDI 2017
Program analysis › static analysis
interprocedural analysis
0.312017
Compositional recurrence analysis revisited · PLDI 2017
Program verification › invariant generation
inductive assertions
0.112019
Refinement of path expressions for static analysis · Proc. ACM Program. Lang. 2019
Program verification › dynamic verification › runtime verification
assertion checking
0.112018
Non-linear reasoning for invariant synthesis · Proc. ACM Program. Lang. 2018
Program analysis › resource analysis
resource bound analysis
0.112018
Non-linear reasoning for invariant synthesis · Proc. ACM Program. Lang. 2018

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

recurrence solving · 1.1polynomial and exponential closed forms · 0.8algebraic numbers · 0.8abstract interpretation · 0.6template-based method · 0.4recurrence-based methods · 0.4program analysis · 0.4grammar encoding · 0.4compositional recurrence analysis · 0.4path-expression method · 0.3
YearPublicationVenuePosition
2020 Templates and recurrences: better together
abstract
This paper is the confluence of two streams of ideas in the literature on generating numerical invariants, namely: (1) template-based methods, and (2) recurrence-based methods.
Jason Breck, John Cyphert, Zachary Kincaid, Thomas W. Reps
PLDI1
2019 Proving Unrealizability for Syntax-Guided Synthesis
abstract
We consider the problem of automatically establishing that a given syntax-guided-synthesis (SyGuS) problem is unrealizable (i.e., has no solution). Existing techniques have quite limited ability to establish unrealizability for general SyGuS instances in which the grammar describing the search space contains infinitely many programs. By encoding the synthesis problem’s grammar G as a nondeterministic program $$P_G$$ , we reduce the unrealizability problem to a reachability problem such that, if a standard program-analysis tool can establish that a certain assertion in $$P_G$$ always holds, then the synthesis problem is unrealizable. Our method can be used to augment existing SyGuS tools so that they can establish that a successfully synthesized program q is optimal with respect to some syntactic cost—e.g., q has the fewest possible if-then-else operators. Using known techniques, grammar G can be transformed to generate the set of all programs with lower costs than q—e.g., fewer conditional expressions. Our algorithm can then be applied to show that the resulting synthesis problem is unrealizable. We implemented the proposed technique in a tool called nope. nope can prove unrealizability for 59/132 variants of existing linear-integer-arithmetic SyGuS benchmarks, whereas all existing SyGuS solvers lack the ability to prove that these benchmarks are unrealizable, and time out on them.
Qinheping Hu, Jason Breck, John Cyphert, Loris D'Antoni, Thomas W. Reps
CAV (1)2
2019 Refinement of path expressions for static analysis
abstract
Algebraic program analyses compute information about a program’s behavior by first (a) computing a valid path expression —i.e., a regular expression that recognizes all feasible execution paths (and usually more)—and then (b) interpreting the path expression in a semantic algebra that defines the analysis. There are an infinite number of different regular expressions that qualify as valid path expressions, which raises the question “ Which one should we choose? ” While any choice yields a sound result, for many analyses the choice can have a drastic effect on the precision of the results obtained. This paper investigates the following two questions: (1) What does it mean for one valid path expression to be “better” than another ? (2) Can we compute a valid path expression that is “better,” and if so, how ? We show that it is not satisfactory to compare two path expressions E 1 and E 2 solely by means of the languages that they generate . Counter to one’s intuition, it is possible for L ( E 2 ) ⊊ L ( E 1 ), yet for E 2 to produce a less-precise analysis result than E 1 —and thus we would not want to perform the transformation E 1 → E 2 . However, the exclusion of paths so as to analyze a smaller language of paths is exactly the refinement criterion used by some prior methods. In this paper, we develop an algorithm that takes as input a valid path expression E , and returns a valid path expression E ′ that is guaranteed to yield analysis results that are at least as good as those obtained using E . While the algorithm sometimes returns E itself, it typically does not: (i) we prove a no-degradation result for the algorithm’s base case—for transforming a leaf loop (i.e., a most-deeply-nested loop); (ii) at a non-leaf loop L , the algorithm treats each loop L ′ in the body of L as an indivisible atom, and applies the leaf-loop algorithm to L ; the no-degradation result carries over to (ii), as well. Our experiments show that the technique has a substantial impact: the loop-refinement algorithm allows the implementation of Compositional Recurrence Analysis to prove over 25% more assertions for a collection of challenging loop micro-benchmarks.
John Cyphert, Jason Breck, Zachary Kincaid, Thomas W. Reps
Proc. ACM Program. Lang.2
2019 Closed forms for numerical loops
abstract
This paper investigates the problem of reasoning about non-linear behavior of simple numerical loops. Our approach builds on classical techniques for analyzing the behavior of linear dynamical systems. It is well-known that a closed-form representation of the behavior of a linear dynamical system can always be expressed using algebraic numbers, but this approach can create formulas that present an obstacle for automated-reasoning tools. This paper characterizes when linear loops have closed forms in simpler theories that are more amenable to automated reasoning. The algorithms for computing closed forms described in the paper avoid the use of algebraic numbers, and produce closed forms expressed using polynomials and exponentials over rational numbers. We show that the logic for expressing closed forms is decidable, yielding decision procedures for verifying safety and termination of a class of numerical loops over rational numbers. We also show that the procedure for computing closed forms for this class of numerical loops can be used to over-approximate the behavior of arbitrary numerical programs (with unrestricted control flow, non-deterministic assignments, and recursive procedures).
Zachary Kincaid, Jason Breck, John Cyphert, Thomas W. Reps
Proc. ACM Program. Lang.2
2018 Non-linear reasoning for invariant synthesis
abstract
Automatic generation of non-linear loop invariants is a long-standing challenge in program analysis, with many applications. For instance, reasoning about exponentials provides a way to find invariants of digital-filter programs, and reasoning about polynomials and/or logarithms is needed for establishing invariants that describe the time or memory usage of many well-known algorithms. An appealing approach to this challenge is to exploit the powerful recurrence-solving techniques that have been developed in the field of computer algebra, which can compute exact characterizations of non-linear repetitive behavior. However, there is a gap between the capabilities of recurrence solvers and the needs of program analysis: (1) loop bodies are not merely systems of recurrence relations---they may contain conditional branches, nested loops, non-deterministic assignments, etc., and (2) a client program analyzer must be able to reason about the closed-form solutions produced by a recurrence solver (e.g., to prove assertions). This paper presents a method for generating non-linear invariants of general loops based on analyzing recurrence relations. The key components are an abstract domain for reasoning about non-linear arithmetic, a semantics-based method for extracting recurrence relations from loop bodies, and a recurrence solver that avoids closed forms that involve complex or irrational numbers. Our technique has been implemented in a program analyzer that can analyze general loops and mutually recursive procedures. Our experiments show that our technique shows promise for non-linear assertion-checking and resource-bound generation.
Zachary Kincaid, John Cyphert, Jason Breck, Thomas W. Reps
Proc. ACM Program. Lang.3
2017 Compositional recurrence analysis revisited
abstract
Compositional recurrence analysis (CRA) is a static-analysis method based on a combination of symbolic analysis and abstract interpretation. This paper addresses the problem of creating a context-sensitive interprocedural version of CRA that handles recursive procedures. The problem is non-trivial because there is an "impedance mismatch" between CRA, which relies on analysis techniques based on regular languages (i.e., Tarjan's path-expression method), and the context-free-language underpinnings of context-sensitive analysis.
Zachary Kincaid, Jason Breck, Ashkan Forouhi Boroujeni, Thomas W. Reps
PLDI2
2016 An Algorithm Inspired by Constraint Solvers to Infer Inductive Invariants in Numeric Programs
Antoine Miné, Jason Breck, Thomas W. Reps
ESOP2
2014 Satisfiability modulo abstraction for separation logic with linked lists
abstract
Separation logic is an expressive logic for reasoning about heap structures in programs. This paper presents a semi-decision procedure for checking unsatisfiability of formulas in a fragment of separation logic that includes points-to assertions (x |-> y), acyclic-list-segment assertions (ls(x,y)), logical-and, logical-or, separating conjunction, and septraction (the DeMorgan-dual of separating implication). The fragment that we consider allows negation at leaves, and includes formulas that lie outside other separation-logic fragments considered in the literature.
Aditya V. Thakur, Jason Breck, Thomas W. Reps
SPIN2