Demo Data from EDBT 2026 / reviewers in the wild / expert
Matthew Might
dblp:57/2128 · also Matt Might
· DBLP profile ↗
42ranked-venue papers
12as first author
0since 2021 · last 2020
0000-0002-8430-5316ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 38 · 11 first-authorApplied, interdisciplinary, general and emerging computing · 2Artificial intelligence and machine learning · 1Theory of computation · 1 · 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
11 papers |
Program analysis · 68% Programming languages and type systems · 19% Program synthesis and code generation · 9% | |
| Theoretical computer science
3 papers |
Automata and formal languages · 77% Logic in computer science · 19% Computational complexity · 4% | |
| Interdisciplinary, comprehensive, and emerging computing
1 paper |
Bioinformatics and computational biology · 100% |
Topics — the 27 heaviest of 30, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program analysis
control flow analysis |
1.0 | 6 | 2017 | A posteriori environment analysis with Pushdown Delta CFA · POPL 2017 Pushdown control-flow analysis for free · POPL 2016 EigenCFA: accelerating flow analysis with GPUs · POPL 2011 |
Program analysis › static analysis
abstract interpretation |
0.5 | 3 | 2015 | Galois transformers and modular abstract interpreters: reusable metatheory for program analysis · OOPSLA 2015 Monadic abstract interpreters · PLDI 2013 Logic-flow analysis of higher-order programs · POPL 2007 |
Program analysis
static analysis |
0.4 | 2 | 2015 | Galois transformers and modular abstract interpreters: reusable metatheory for program analysis · OOPSLA 2015 Monadic abstract interpreters · PLDI 2013 |
Bioinformatics and computational biology
gene expression analysis |
0.3 | 1 | 2018 | anexVis: visual analytics framework for analysis of RNA expression · Bioinform. 2018 |
Program synthesis and code generation
programming by example |
0.3 | 1 | 2018 | Neural Guided Constraint Logic Programming for Program Synthesis · NeurIPS 2018 |
Logic in computer science › logic programming
constraint logic programming |
0.3 | 1 | 2018 | Neural Guided Constraint Logic Programming for Program Synthesis · NeurIPS 2018 |
Automata and formal languages › parsing
ambiguity resolution |
0.3 | 1 | 2017 | Restricting grammars with tree automata · Proc. ACM Program. Lang. 2017 |
Automata and formal languages › formal grammars
context-free grammar |
0.3 | 1 | 2017 | Restricting grammars with tree automata · Proc. ACM Program. Lang. 2017 |
Automata and formal languages
tree automata |
0.3 | 1 | 2017 | Restricting grammars with tree automata · Proc. ACM Program. Lang. 2017 |
Automata and formal languages › parsing
context-free grammar parsing |
0.2 | 1 | 2016 | On the complexity and performance of parsing with derivatives · PLDI 2016 |
Automata and formal languages › parsing › context-free grammar parsing
parsing with derivatives |
0.2 | 1 | 2016 | On the complexity and performance of parsing with derivatives · PLDI 2016 |
Program analysis › control flow analysis
k-CFA |
0.2 | 2 | 2010 | Resolving and exploiting the k-CFA paradox: illuminating functional vs. object-oriented program analysis · PLDI 2010 Environment analysis via Delta CFA · POPL 2006 |
Programming languages and type systems › computational effects
monads |
0.2 | 1 | 2013 | Monadic abstract interpreters · PLDI 2013 |
Program analysis › flow analysis
higher-order flow analysis |
0.1 | 1 | 2011 | EigenCFA: accelerating flow analysis with GPUs · POPL 2011 |
Programming languages and type systems
type inference |
0.1 | 1 | 2011 | Flow-sensitive type recovery in linear-log time · OOPSLA 2011 |
Programming languages and type systems › program manipulation
continuation-passing style |
0.1 | 3 | 2016 | Pushdown control-flow analysis for free · POPL 2016 Environment analysis via Delta CFA · POPL 2006 Continuations and transducer composition · PLDI 2006 |
Program analysis › static analysis › interprocedural analysis
context-sensitive analysis |
0.1 | 1 | 2010 | Resolving and exploiting the k-CFA paradox: illuminating functional vs. object-oriented program analysis · PLDI 2010 |
Program analysis › static analysis
pointer analysis |
0.1 | 1 | 2010 | Resolving and exploiting the k-CFA paradox: illuminating functional vs. object-oriented program analysis · PLDI 2010 |
Programming languages and type systems
higher-order languages |
0.1 | 1 | 2016 | Pushdown control-flow analysis for free · POPL 2016 |
Computational complexity › language complexity
parsing complexity |
0.1 | 1 | 2016 | On the complexity and performance of parsing with derivatives · PLDI 2016 |
Compilers and program optimization › compiler optimization › redundancy elimination
array bounds check elimination |
0.1 | 1 | 2007 | Logic-flow analysis of higher-order programs · POPL 2007 |
Programming languages and type systems › computational effects
monad transformers |
0.1 | 1 | 2015 | Galois transformers and modular abstract interpreters: reusable metatheory for program analysis · OOPSLA 2015 |
Program analysis › static analysis › pointer analysis
context-sensitive pointer analysis |
0.0 | 1 | 2013 | Monadic abstract interpreters · PLDI 2013 |
Runtime systems and virtual machines › dynamic compilation
just-in-time compilation |
0.0 | 1 | 2011 | Flow-sensitive type recovery in linear-log time · OOPSLA 2011 |
GPUs and heterogeneous computing
GPU computing |
0.0 | 1 | 2011 | EigenCFA: accelerating flow analysis with GPUs · POPL 2011 |
Program verification
theorem proving |
0.0 | 1 | 2007 | Logic-flow analysis of higher-order programs · POPL 2007 |
Programming languages and type systems › control operators
continuations |
0.0 | 1 | 2006 | Continuations and transducer composition · PLDI 2006 |
Methods — techniques the papers use, named apart from their topics
recurrent neural network · 0.7graph neural network · 0.7abstract interpretation · 0.5visualization techniques · 0.3visual analytics · 0.3tree automata intersection · 0.3state-dependent allocation · 0.2performance evaluation · 0.2complexity analysis · 0.2PDCFA · 0.2CFA2 · 0.2AAC · 0.2monad transformers · 0.2galois connection · 0.2monadic semantics · 0.2GPU acceleration · 0.10CFA · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2020 | Cardioinformatics: the nexus of bioinformatics and precision cardiologyabstractCardiovascular disease (CVD) is the leading cause of death worldwide, causing over 17 million deaths per year, which outpaces global cancer mortality rates. Despite these sobering statistics, most bioinformatics and computational biology research and funding to date has been concentrated predominantly on cancer research, with a relatively modest footprint in CVD. In this paper, we review the existing literary landscape and critically assess the unmet need to further develop an emerging field at the multidisciplinary interface of bioinformatics and precision cardiovascular medicine, which we refer to as 'cardioinformatics'. Bohdan B. Khomtchouk, Diem-Trang T. Tran, Kasra A. Vand, Matthew Might, Or Gozani, Themistocles L. Assimes |
Briefings Bioinform. | 4 |
| 2019 | Demand Control-Flow Analysis
Kimball Germane, Jay McCarthy, Michael D. Adams 0001, Matthew Might |
VMCAI | 4 |
| 2019 | Relatively Complete Pushdown Analysis of Escape Continuations
Kimball Germane, Matthew Might |
VMCAI | 2 |
| 2018 | Neural Guided Constraint Logic Programming for Program SynthesisabstractSynthesizing programs using example input/outputs is a classic problem in artificial intelligence. We present a method for solving Programming By Example (PBE) problems by using a neural model to guide the search of a constraint logic programming system called miniKanren. Crucially, the neural model uses miniKanren's internal representation as input; miniKanren represents a PBE problem as recursive constraints imposed by the provided examples. We explore Recurrent Neural Network and Graph Neural Network models. We contribute a modified miniKanren, drivable by an external agent, available at https://github.com/xuexue/neuralkanren. We show that our neural-guided approach using constraints can synthesize programs faster in many cases, and importantly, can generalize to larger problems. Lisa Zhang 0003, Gregory Rosenblatt, Ethan Fetaya, Renjie Liao 0001, William E. Byrd, Matthew Might, Raquel Urtasun, Richard S. Zemel |
NeurIPS | 6 |
| 2018 | anexVis: visual analytics framework for analysis of RNA expressionabstractSummary: Although RNA expression data are accumulating at a remarkable speed, gaining insights from them still requires laborious analyses, which hinder many biological and biomedical researchers. This report introduces a visual analytics framework that applies several well-known visualization techniques to leverage understanding of an RNA expression dataset. Our analyses on glycosaminoglycan-related genes have demonstrated the broad application of this tool, anexVis (analysis of RNA expression), to advance the understanding of tissue-specific glycosaminoglycan regulation and functions, and potentially other biological pathways. Availability and implementation: The application is accessible at https://anexvis.chpc.utah.edu/, source codes deposited on GitHub. Supplementary information: Supplementary data are available at Bioinformatics online. Diem-Trang T. Tran, Tian Zhang 0005, Ryan Stutsman, Matthew Might, Umesh R. Desai, Balagurunathan Kuberan |
Bioinform. | 4 |
| 2018 | Abstract allocation as a unified approach to polyvariance in control-flow analysesabstractAbstract In higher order settings, control-flow analysis aims to model the propagation of both data and control by finitely approximating program behaviors across all possible executions. The polyvariance of an analysis describes the number of distinct abstract representations, or variants, for each syntactic entity (e.g., functions, variables, or intermediate expressions). Monovariance, one of the most basic forms of polyvariance, maintains only a single abstract representation for each variable or expression. Other polyvariant strategies allow a greater number of distinct abstractions and increase analysis complexity with the aim of increasing analysis precision. For example, k -call sensitivity distinguishes flows by the most recent k call sites, k -object sensitivity by a history of allocation points, and argument sensitivity by a tuple of dynamic argument types. From this perspective, even a concrete operational semantics may be thought of as an unboundedly polyvariant analysis. In this paper, we develop a unified methodology that fully captures this design space. It is easily tunable and guarantees soundness regardless of how tuned. We accomplish this by extending the method of abstracting abstract machines, a systematic approach to abstract interpretation of operational abstract-machine semantics. Our approach permits arbitrary instrumentation of the underlying analysis and arbitrary tuning of an abstract-allocation function. We show that the design space of abstract allocators both unifies and generalizes existing notions of polyvariance. Simple changes to the behavior of this function recapitulate classic styles of analysis and yield novel combinations and variants. Thomas Gilray, Michael D. Adams 0001, Matthew Might |
J. Funct. Program. | 3 |
| 2017 | A posteriori environment analysis with Pushdown Delta CFAabstractFlow-driven higher-order inlining is blocked by free variables, yet current theories of environment analysis cannot reliably cope with multiply-bound variables. One of these, ΔCFA, is a promising theory based on stack change but is undermined by its finite-state model of the stack. We present Pushdown ΔCFA which takes a ΔCFA-approach to pushdown models of control flow and can cope with multiply-bound variables, even in the face of recursion. Kimball Germane, Matthew Might |
POPL | 2 |
| 2017 | Nebo: An efficient, parallel, and portable domain-specific language for numerically solving partial differential equations
Christopher Earl, Matthew Might, Abhishek Bagusetty, James C. Sutherland |
J. Syst. Softw. | 2 |
| 2017 | Restricting grammars with tree automataabstractPrecedence and associativity declarations in systems like yacc resolve ambiguities in context-free grammars (CFGs) by specifying restrictions on allowed parses. However, they are special purpose and do not handle the grammatical restrictions that language designers need in order to resolve ambiguities like dangling else, the interactions between binary operators and functional if expressions in ML, and the interactions between object allocation and function calls in JavaScript. Often, language designers resort to restructuring their grammars in order to encode these restrictions, but this obfuscates the designer's intent and can make grammars more difficult to read, write, and maintain. In this paper, we show how tree automata can modularly and concisely encode such restrictions. We do this by reinterpreting CFGs as tree automata and then intersecting them with tree automata encoding the desired restrictions. The results are then reinterpreted back into CFGs that encode the specified restrictions. This process can be used as a preprocessing step before other CFG manipulations and is well behaved. It performs well in practice and never introduces ambiguities or LR( k ) conflicts. Michael D. Adams 0001, Matthew Might |
Proc. ACM Program. Lang. | 2 |
| 2017 | A unified approach to solving seven programming problems (functional pearl)abstractWe present seven programming challenges in Racket, and an elegant, unified approach to solving them using constraint logic programming in miniKanren. William E. Byrd, A. Ballantyne, Gregory Rosenblatt, Matthew Might |
Proc. ACM Program. Lang. | 4 |
| 2016 | A small embedding of logic programming with a simple complete searchabstractWe present a straightforward, call-by-value embedding of a small logic programming language with a simple complete search. We construct the entire language in 54 lines of Racket---half of which implement unification. We then layer over it, in 43 lines, a reconstruction of an existing logic programming language, miniKanren, and attest to our implementation's pedagogical value. Evidence suggests our combination of expressiveness, concision, and elegance is compelling: since microKanren's release, it has spawned over 50 embeddings in over two dozen host languages, including Go, Haskell, Prolog and Smalltalk. Jason Hemann, Daniel P. Friedman, William E. Byrd, Matthew Might |
DLS | 4 |
| 2016 | Allocation characterizes polyvariance: a unified methodology for polyvariant control-flow analysisabstractThe polyvariance of a static analysis is the degree to which it structurally differentiates approximations of program values. Polyvariant techniques come in a number of different flavors that represent alternative heuristics for managing the trade-off an analysis strikes between precision and complexity. For example, call sensitivity supposes that values will tend to correlate with recent call sites, object sensitivity supposes that values will correlate with the allocation points of related objects, the Cartesian product algorithm supposes correlations between the values of arguments to the same function, and so forth. Thomas Gilray, Michael D. Adams 0001, Matthew Might |
ICFP | 3 |
| 2016 | On the complexity and performance of parsing with derivativesabstractCurrent algorithms for context-free parsing inflict a trade-off between ease of understanding, ease of implementation, theoretical complexity, and practical performance. No algorithm achieves all of these properties simultaneously. Might et al. introduced parsing with derivatives, which handles arbitrary context-free grammars while being both easy to understand and simple to implement. Despite much initial enthusiasm and a multitude of independent implementations, its worst-case complexity has never been proven to be better than exponential. In fact, high-level arguments claiming it is fundamentally exponential have been advanced and even accepted as part of the folklore. Performance ended up being sluggish in practice, and this sluggishness was taken as informal evidence of exponentiality. In this paper, we reexamine the performance of parsing with derivatives. We have discovered that it is not exponential but, in fact, cubic. Moreover, simple (though perhaps not obvious) modifications to the implementation by Might et al. lead to an implementation that is not only easy to understand but also highly performant in practice. Michael D. Adams 0001, Celeste Hollenbeck, Matthew Might |
PLDI | 3 |
| 2016 | Pushdown control-flow analysis for freeabstractTraditional control-flow analysis (CFA) for higher-order languages introduces spurious connections between callers and callees, and different invocations of a function may pollute each other's return flows. Recently, three distinct approaches have been published that provide perfect call-stack precision in a computable manner: CFA2, PDCFA, and AAC. Unfortunately, implementing CFA2 and PDCFA requires significant engineering effort. Furthermore, all three are computationally expensive. For a monovariant analysis, CFA2 is in O(2^n), PDCFA is in O(n^6), and AAC is in O(n^8). In this paper, we describe a new technique that builds on these but is both straightforward to implement and computationally inexpensive. The crucial insight is an unusual state-dependent allocation strategy for the addresses of continuations. Our technique imposes only a constant-factor overhead on the underlying analysis and costs only O(n^3) in the monovariant case. We present the intuitions behind this development, benchmarks demonstrating its efficacy, and a proof of the precision of this analysis. Thomas Gilray, Steven Lyde, Michael D. Adams 0001, Matthew Might, David Van Horn |
POPL | 4 |
| 2015 | Control-flow analysis of dynamic languages via pointer analysisabstractWe demonstrate how to map a control-flow analysis for a higher-order language (dynamic languages are typically higher-order) into a pointer analysis for a first-order language, such as C. This allows us to use existing pointer analysis tools to perform a control-flow analysis, exploiting their technical advancements and the engineering effort that went into developing them. We compare the results of two recent parallel pointer analysis tools with a parallel control-flow analysis tool. While it has been known that a control-flow analysis of higher-order languages and a pointer analysis of first-order languages are very similar, we demonstrate that these two analyses are actually more similar than previously thought. We present the first mapping between a high-order control-flow analysis and a pointer analysis. Steven Lyde, William E. Byrd, Matthew Might |
DLS | 3 |
| 2015 | Galois transformers and modular abstract interpreters: reusable metatheory for program analysisabstractThe design and implementation of static analyzers has become increasingly systematic. Yet for a given language or analysis feature, it often requires tedious and error prone work to implement an analyzer and prove it sound. In short, static analysis features and their proofs of soundness do not compose well, causing a dearth of reuse in both implementation and metatheory. We solve the problem of systematically constructing static analyzers by introducing Galois transformers: monad transformers that transport Galois connection properties. In concert with a monadic interpreter, we define a library of monad transformers that implement building blocks for classic analysis parameters like context, path, and heap (in)sensitivity. Moreover, these can be composed together independent of the language being analyzed. Significantly, a Galois transformer can be proved sound once and for all, making it a reusable analysis component. As new analysis features and abstractions are developed and mixed in, soundness proofs need not be reconstructed, as the composition of a monad transformer stack is sound by virtue of its constituents. Galois transformers provide a viable foundation for reusable and composable metatheory for program analysis. Finally, these Galois transformers shift the level of abstraction in analysis design and implementation to a level where non-specialists have the ability to synthesize sound analyzers over a number of parameters. David Darais, Matthew Might, David Van Horn |
OOPSLA | 2 |
| 2015 | Static Analysis of Non-interference in Expressive Low-Level Languages
Peter Aldous, Matthew Might |
SAS | 2 |
| 2014 | Fast Flow Analysis with Godel HashesabstractFlow analysis, such as control-flow, data-flow, and exception-flow analysis, usually depends on relational operations on flow sets. Unfortunately, set related operations, such as inclusion and equality, are usually very expensive. They can easily take more than 97% of the total analyzing time, even in a very simple analysis. We attack this performance bottleneck by proposing Godel hashes to enable fast and precise flow analysis. Godel hashes is an ultra compact, partial-order-preserving, fast and perfect hashing mechanism, inspired by the proofs of Godel's incompleteness theorems. Compared with array, tree, traditional hash, and bit vector-backed set implementations, we find Godel hashes to be tens or even hundreds of times faster for performance in the critical operations of inclusion and equality. We apply Godel hashes in real-world analysis for object-oriented programs. The instrumented analysis is tens of times faster than the one with original data structures on DaCapo benchmarks. Shuying Liang, Weibin Sun, Matthew Might |
SCAM | 3 |
| 2014 | Pruning, Pushdown Exception-Flow AnalysisabstractStatically reasoning in the presence of exceptions and about the effects of exceptions is challenging: exception-flows are mutually determined by traditional control-flow and points-to analyses. We tackle the challenge of analyzing exception-flows from two angles. First, from the angle of pruning control-flows (both normal and exceptional), we derive a pushdown framework for an object-oriented language with full-featured exceptions. Unlike traditional analyses, it allows precise matching of throwers to catchers. Second, from the angle of pruning points-to information, we generalize abstract garbage collection to object-oriented programs and enhance it with liveness analysis. We then seamlessly weave the techniques into enhanced reach ability computation, yielding highly precise exception-flow analysis, without becoming intractable, even for large applications. We evaluate our pruned, pushdown exception-flow analysis, comparing it with an established analysis on large scale standard Java benchmarks. The results show that our analysis significantly improves analysis precision over traditional analysis within a reasonable analysis time. Shuying Liang, Weibin Sun, Matthew Might, Andrew W. Keep, David Van Horn |
SCAM | 3 |
| 2014 | Deletion: The curse of the red-black treeabstractAbstract Okasaki introduced the canonical formulation of functional red-black trees when he gave a concise, elegant method of persistent element insertion. Persistent element deletion, on the other hand, has not enjoyed the same treatment. For this reason, many functional implementations simply omit persistent deletion. Those that include deletion typically take one of two approaches. The more-common approach is a superficial translation of the standard imperative algorithm. The resulting algorithm has functional airs but remains clumsy and verbose, characteristic of its imperative heritage. (Indeed, even the term insertion is a holdover from imperative origins, but is now established in functional contexts. Accordingly, we use the term deletion which has the same connotation.) The less-common approach leverages the features of advanced type systems, which obscures the essence of the algorithm. Nevertheless, foreign-language implementors reference such implementations and, apparently unable to tease apart the algorithm and its type specification, transliterate the entirety unnecessarily. Our goal is to provide for persistent deletion what Okasaki did for insertion: a succinct, comprehensible method that will liberate implementors. We conceptually simplify deletion by temporarily introducing a “double-black” color into Okasaki's tree type. This third color, with its natural interpretation, significantly simplifies the preservation of invariants during deletion. Kimball Germane, Matthew Might |
J. Funct. Program. | 2 |
| 2014 | Pushdown flow analysis with abstract garbage collectionabstractAbstract In the static analysis of functional programs, pushdown flow analysis and abstract garbage collection push the boundaries of what we can learn about programs statically. This work illuminates and poses solutions to theoretical and practical challenges that stand in the way of combining the power of these techniques. Pushdown flow analysis grants unbounded yet computable polyvariance to the analysis of return-flow in higher-order programs. Abstract garbage collection grants unbounded polyvariance to abstract addresses which become unreachable between invocations of the abstract contexts in which they were created. Pushdown analysis solves the problem of precisely analyzing recursion in higher-order languages; abstract garbage collection is essential in solving the “stickiness” problem. Alone, our benchmarks demonstrate that each method can reduce analysis times and boost precision by orders of magnitude. We combine these methods. The challenge in marrying these techniques is not subtle: computing the reachable control states of a pushdown system relies on limiting access during transition to the top of the stack; abstract garbage collection, on the other hand, needs full access to the entire stack to compute a root set, just as concrete collection does. Conditional pushdown systems were developed for just such a conundrum, but existing methods are ill-suited for the dynamic nature of garbage collection. We show fully precise and approximate solutions to the feasible paths problem for pushdown garbage-collecting control-flow analysis. Experiments reveal synergistic interplay between garbage collection and pushdown techniques, and the fusion demonstrates “better-than-both-worlds” precision. Dionna Amalie Glaze, Ilya Sergey, Christopher Earl, Matthew Might, David Van Horn |
J. Funct. Program. | 4 |
| 2013 | Optimizing abstract abstract machinesabstractThe technique of abstracting abstract machines (AAM) provides a systematic approach for deriving computable approximations of evaluators that are easily proved sound. This article contributes a complementary step-by-step process for subsequently going from a naive analyzer derived under the AAM approach, to an efficient and correct implementation. The end result of the process is a two to three order-of-magnitude improvement over the systematically derived analyzer, making it competitive with hand-optimized implementations that compute fundamentally less precise results. Dionna Amalie Glaze, Nicholas Labich, Matthew Might, David Van Horn |
ICFP | 3 |
| 2013 | Monadic abstract interpretersabstractRecent developments in the systematic construction of abstract interpreters hinted at the possibility of a broad unification of concepts in static analysis. We deliver that unification by showing context-sensitivity, polyvariance, flow-sensitivity, reachability-pruning, heap-cloning and cardinality-bounding to be independent of any particular semantics. Monads become the unifying agent between these concepts and between semantics. For instance, by plugging the same "context-insensitivity monad" into a monadically-parameterized semantics for Java or for the lambda calculus, it yields the expected context-insensitive analysis. Ilya Sergey, Dominique Devriese, Matthew Might, Jan Midtgaard, David Darais, Dave Clarke 0001, Frank Piessens |
PLDI | 3 |
| 2012 | Introspective pushdown analysis of higher-order programsabstractIn the static analysis of functional programs, pushdown flow analysis and abstract garbage collection skirt just inside the boundaries of soundness and decidability. Alone, each method reduces analysis times and boosts precision by orders of magnitude. This work illuminates and conquers the theoretical challenges that stand in the way of combining the power of these techniques. The challenge in marrying these techniques is not subtle: computing the reachable control states of a pushdown system relies on limiting access during transition to the top of the stack; abstract garbage collection, on the other hand, needs full access to the entire stack to compute a root set, just as concrete collection does. Introspective pushdown systems resolve this conflict. Introspective pushdown systems provide enough access to the stack to allow abstract garbage collection, but they remain restricted enough to compute control-state reachability, thereby enabling the sound and precise product of pushdown analysis and abstract garbage collection. Experiments reveal synergistic interplay between the techniques, and the fusion demonstrates "better-than-both-worlds" precision. Christopher Earl, Ilya Sergey, Matthew Might, David Van Horn |
ICFP | 3 |
| 2012 | A Structural Soundness Proof for Shivers's Escape Technique - A Case for Galois Connections
Jan Midtgaard, Michael D. Adams 0001, Matthew Might |
SAS | 3 |
| 2012 | Systematic abstraction of abstract machinesabstractAbstract We describe a derivational approach to abstract interpretation that yields novel and transparently sound static analyses when applied to well-established abstract machines for higher-order and imperative programming languages. To demonstrate the technique and support our claim, we transform the CEK machine of Felleisen and Friedman ( Proc. of the 14th ACM SIGACT-SIGPLAN Symp. Prin. Program. Langs , 1987, pp. 314–325), a lazy variant of Krivine's machine ( Higher-Order Symb. Comput. Vol 20, 2007, pp. 199–207), and the stack-inspecting CM machine of Clements and Felleisen ( ACM Trans. Program. Lang. Syst. Vol 26, 2004, pp. 1029–1052) into abstract interpretations of themselves. The resulting analyses bound temporal ordering of program events; predict return-flow and stack-inspection behavior; and approximate the flow and evaluation of by-need parameters. For all of these machines, we find that a series of well-known concrete machine refactorings, plus a technique of store-allocated continuations, leads to machines that abstract into static analyses simply by bounding their stores. These machines are parameterized by allocation functions that tune performance and precision and substantially expand the space of analyses that this framework can represent. We demonstrate that the technique scales up uniformly to allow static analysis of realistic language features, including tail calls, conditionals, mutation, exceptions, first-class continuations, and even garbage collection. In order to close the gap between formalism and implementation, we provide translations of the mathematics as running Haskell code for the initial development of our method. David Van Horn, Matthew Might |
J. Funct. Program. | 2 |
| 2011 | Parsing with derivatives: a functional pearlabstractWe present a functional approach to parsing unrestricted context-free grammars based on Brzozowski's derivative of regular expressions. If we consider context-free grammars as recursive regular expressions, Brzozowski's equational theory extends without modification to context-free grammars (and it generalizes to parser combinators). The supporting actors in this story are three concepts familiar to functional programmers - laziness, memoization and fixed points; these allow Brzozowski's original equations to be transliterated into purely functional code in about 30 lines spread over three functions. Matthew Might, David Darais, Daniel Spiewak |
ICFP | 1 |
| 2011 | Flow-sensitive type recovery in linear-log timeabstractThe flexibility of dynamically typed languages such as JavaScript, Python, Ruby, and Scheme comes at the cost of run-time type checks. Some of these checks can be eliminated via control-flow analysis. However, traditional control-flow analysis (CFA) is not ideal for this task as it ignores flow-sensitive information that can be gained from dynamic type predicates, such as JavaScript's 'instanceof' and Scheme's 'pair?', and from type-restricted operators, such as Scheme's 'car'. Yet, adding flow-sensitivity to a traditional CFA worsens the already significant compile-time cost of traditional CFA. This makes it unsuitable for use in just-in-time compilers. In response, we have developed a fast, flow-sensitive type-recovery algorithm based on the linear-time, flow-insensitive sub-0CFA. The algorithm has been implemented as an experimental optimization for the commercial Chez Scheme compiler, where it has proven to be effective, justifying the elimination of about 60% of run-time type checks in a large set of benchmarks. The algorithm processes on average over 100,000 lines of code per second and scales well asymptotically, running in only O(n log n) time. We achieve this compile-time performance and scalability through a novel combination of data structures and algorithms. Michael D. Adams 0001, Andrew W. Keep, Jan Midtgaard, Matthew Might, Arun Chauhan 0001, R. Kent Dybvig |
OOPSLA | 4 |
| 2011 | EigenCFA: accelerating flow analysis with GPUsabstractWe describe, implement and benchmark EigenCFA, an algorithm for accelerating higher-order control-flow analysis (specifically, 0CFA) with a GPU. Ultimately, our program transformations, reductions and optimizations achieve a factor of 72 speedup over an optimized CPU implementation. Tarun Prabhu, Shreyas Ramalingam, Matthew Might, Mary W. Hall |
POPL | 3 |
| 2011 | A Family of Abstract Interpretations for Static Analysis of Concurrent Higher-Order Programs
Matthew Might, David Van Horn |
SAS | 1 |
| 2010 | Abstracting abstract machinesabstractWe describe a derivational approach to abstract interpretation that yields novel and transparently sound static analyses when applied to well-established abstract machines. To demonstrate the technique and support our claim, we transform the CEK machine of Felleisen and Friedman, a lazy variant of Krivine's machine, and the stack-inspecting CM machine of Clements and Felleisen into abstract interpretations of themselves. The resulting analyses bound temporal ordering of program events; predict return-flow and stack-inspection behavior; and approximate the flow and evaluation of by-need parameters. For all of these machines, we find that a series of well-known concrete machine refactorings, plus a technique we call store-allocated continuations, leads to machines that abstract into static analyses simply by bounding their stores. We demonstrate that the technique scales up uniformly to allow static analysis of realistic language features, including tail calls, conditionals, side effects, exceptions, first-class continuations, and even garbage collection. David Van Horn, Matthew Might |
ICFP | 2 |
| 2010 | Resolving and exploiting the k-CFA paradox: illuminating functional vs. object-oriented program analysisabstractLow-level program analysis is a fundamental problem, taking the shape of "flow analysis" in functional languages and "points-to" analysis in imperative and object-oriented languages. Despite the similarities, the vocabulary and results in the two communities remain largely distinct, with limited cross-understanding. One of the few links is Shivers's k-CFA work, which has advanced the concept of "context-sensitive analysis" and is widely known in both communities. Matthew Might, Yannis Smaragdakis, David Van Horn |
PLDI | 1 |
| 2010 | Abstract Interpreters for Free
Matthew Might |
SAS | 1 |
| 2010 | Shape Analysis in the Absence of Pointers and Structure
Matthew Might |
VMCAI | 1 |
| 2009 | A PosterioriSoundness for Non-deterministic Abstract Interpretations
Matthew Might, Panagiotis Manolios |
VMCAI | 1 |
| 2008 | Exploiting reachability and cardinality in higher-order flow analysisabstractAbstract We present two complementary improvements for abstract-interpretation-based flow analysis of higher-order languages: (1) abstract garbage collection and (2) abstract counting . Abstract garbage collection is an analog to its concrete counterpart: the analysis determines when an abstract resource has become unreachable, and then, re-allocates it as fresh. This prevents flow sets from joining during abstract interpretation, which has two immediate effects: (1) the precision of the interpretation increases and (2) its running time often falls. In abstract counting, the analysis tracks how many times an abstract resource has been allocated. A count of one implies that the abstract resource momentarily represents only one concrete resource. This knowledge, in turn, drives environment analysis, expanding the kind (rather than just the degree) of optimization available to the compiler. Matthew Might, Olin Shivers |
J. Funct. Program. | 1 |
| 2007 | Logic-flow analysis of higher-order programsabstractThis work presents a framework for fusing flow analysis and theorem proving called logic-flow analysis (LFA). The framework itself is the reduced product of two abstract interpretations: (1) an abstract state machine and (2) a set of propositions in a restricted first-order logic. The motivating application for LFA is the safe removal of implicit array-bounds checks without type information, user interaction or program annotation. LFA achieves this by delegating a given task to either the prover or the flow analysis depending on which is best suited to discharge it. Described within are a concrete semantics for continuation-passing style; a restricted, first-order logic; a woven product of two abstract interpretations; proofs of correctness; and a worked example. Matthew Might |
POPL | 1 |
| 2007 | Model Checking Via GammaCFA
Matthew Might, Benjamin Chambers, Olin Shivers |
VMCAI | 1 |
| 2007 | Analyzing the environment structure of higher-order languages using frame strings
Matthew Might, Olin Shivers |
Theor. Comput. Sci. | 1 |
| 2006 | Improving flow analyses via GammaCFA: abstract garbage collection and countingabstractWe present two independent and complementary improvements for flow-based analysis of higher-order languages: (1) abstract garbage collection and (2) abstract counting, collectively titled ΓCFA.Abstract garbage collection is an analog to its concrete counterpart: we determine when an abstract resource has become unreachable, and then reallocate it as fresh. This prevents flow sets from merging in the abstract, which has two immediate effects: (1) the precision of the analysis is increased, and (2) the running time of the analysis is frequently reduced. In some nontrivial cases, we achieve an order of magnitude improvement in precision and time simultaneously.In abstract counting, we track how many times an abstract resource has been allocated. A count of one implies that the abstract resource momentarily represents only one concrete resource. This, in turn, allows us to perform environment analysis and to expand the kinds (rather than just the degree) of optimizations available to the compiler. Matthew Might, Olin Shivers |
ICFP | 1 |
| 2006 | Continuations and transducer compositionabstractOn-line transducers are an important class of computational agent; we construct and compose together many software systems using them, such as stream processors, layered network protocols, DSP networks and graphics pipelines. We show an interesting use of continuations, that, when taken in a CPS setting, exposes the control flow of these systems. This enables a CPS-based compiler to optimise systems composed of these transducers, using only standard, known analyses and optimisations. Critically, the analysis permits optimisation across the composition of these transducers, allowing efficient construction of systems in a hierarchical way. Olin Shivers, Matthew Might |
PLDI | 2 |
| 2006 | Environment analysis via Delta CFAabstractWe describe a new program-analysis framework, based on CPS and procedure-string abstractions, that can handle critical analyses which the k-CFA framework cannot. We present the main theorems concerning correctness, show an application analysis, and describe a running implementation. Matthew Might, Olin Shivers |
POPL | 1 |