Demo Data from EDBT 2026 / reviewers in the wild / expert
Matthias Blume
dblp:b/MatthiasBlume
· DBLP profile ↗
20ranked-venue papers
9as first author
0since 2021 · last 2013
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 17 · 7 first-authorArtificial intelligence and machine learning · 3 · 1 first-authorTheory of computation · 1 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 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 |
Programming languages and type systems · 45% Software maintenance and evolution · 26% Program analysis · 17% | |
| Theoretical computer science
1 paper |
Algorithms and data structures · 100% |
Topics — the 13 heaviest of 14, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Programming languages and type systems › programming paradigms
self-adjusting computation |
0.2 | 3 | 2009 | An experimental analysis of self-adjusting computation · ACM Trans. Program. Lang. Syst. 2009 Imperative self-adjusting computation · POPL 2008 An experimental analysis of self-adjusting computation · PLDI 2006 |
Software maintenance and evolution › change impact analysis
change propagation |
0.2 | 2 | 2009 | An experimental analysis of self-adjusting computation · ACM Trans. Program. Lang. Syst. 2009 Imperative self-adjusting computation · POPL 2008 |
Programming languages and type systems
language semantics |
0.1 | 1 | 2009 | An experimental analysis of self-adjusting computation · ACM Trans. Program. Lang. Syst. 2009 |
Program analysis › program representation
dependence graphs |
0.1 | 1 | 2006 | An experimental analysis of self-adjusting computation · PLDI 2006 |
Program analysis › static analysis
incremental analysis |
0.1 | 1 | 2006 | An experimental analysis of self-adjusting computation · PLDI 2006 |
Programming languages and type systems › program manipulation
continuation-passing style |
0.0 | 1 | 2003 | Taming the IXP network processor · PLDI 2003 |
Compilers and program optimization
intermediate representation |
0.0 | 1 | 2003 | Taming the IXP network processor · PLDI 2003 |
Compilers and program optimization
register allocation |
0.0 | 1 | 2003 | Taming the IXP network processor · PLDI 2003 |
Algorithms and data structures › dynamic algorithms
incremental algorithms |
0.0 | 1 | 2009 | An experimental analysis of self-adjusting computation · ACM Trans. Program. Lang. Syst. 2009 |
Program analysis › static analysis
dependency analysis |
0.0 | 1 | 1999 | Dependency analysis for Standard ML · ACM Trans. Program. Lang. Syst. 1999 |
Programming languages and type systems
module systems |
0.0 | 1 | 1999 | Hierarchical modularity · ACM Trans. Program. Lang. Syst. 1999 |
Operating systems › resource management › storage management › file systems
name space management |
0.0 | 1 | 1999 | Hierarchical modularity · ACM Trans. Program. Lang. Syst. 1999 |
Software maintenance and evolution
software modularity |
0.0 | 1 | 1999 | Hierarchical modularity · ACM Trans. Program. Lang. Syst. 1999 |
Methods — techniques the papers use, named apart from their topics
memoization · 0.3dynamic dependence graphs · 0.2trace-based computation · 0.1change propagation · 0.1integer linear programming · 0.0NP-completeness proof · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2013 | A consistent semantics of self-adjusting computationabstractAbstract This paper presents a semantics of self-adjusting computation and proves that the semantics is correct and consistent. The semantics introduces memoizing change propagation, which enhances change propagation with the classic idea of memoization to enable reuse of computations even when memory is mutated via side effects. During evaluation, computation reuse via memoization triggers a change-propagation algorithm that adapts the reused computation to the memory mutations (side effects) that took place since the creation of the computation. Since the semantics includes both memoization and change propagation, it involves both non-determinism (due to memoization) and mutation (due to change propagation). Our consistency theorem states that the non-determinism is not harmful: any two evaluations of the same program starting at the same state yield the same result. Our correctness theorem states that mutation is not harmful: Self-adjusting programs are compatible with purely functional programming. We formalize the semantics and its meta-theory in the LF logical framework and machine check our proofs using Twelf. Umut A. Acar, Matthias Blume, Jacob Donham |
J. Funct. Program. | 2 |
| 2012 | Preface
Matthias Blume, Germán Vidal |
Theor. Comput. Sci. | 1 |
| 2011 | An equivalence-preserving CPS translation via multi-language semanticsabstractLanguage-based security relies on the assumption that all potential attacks follow the rules of the language in question. When programs are compiled into a different language, this is true only if the translation process preserves observational equivalence. Amal Ahmed 0001, Matthias Blume |
ICFP | 2 |
| 2009 | An experimental analysis of self-adjusting computationabstractRecent work on adaptive functional programming (AFP) developed techniques for writing programs that can respond to modifications to their data by performing change propagation . To achieve this, executions of programs are represented with dynamic dependence graphs (DDGs) that record data dependences and control dependences in a way that a change-propagation algorithm can update the computation as if the program were from scratch, by re-executing only the parts of the computation affected by the changes. Since change-propagation only re-executes parts of the computation, it can respond to certain incremental modifications asymptotically faster than recomputing from scratch, potentially offering significant speedups. Such asymptotic speedups, however, are rare: for many computations and modifications, change propagation is no faster than recomputing from scratch. In this article, we realize a duality between dynamic dependence graphs and memoization, and combine them to give a change-propagation algorithm that can dramatically increase computation reuse. The key idea is to use DDGs to identify and re-execute the parts of the computation that are affected by modifications, while using memoization to identify the parts of the computation that remain unaffected by the changes. We refer to this approach as self-adjusting computation. Since DDGs are imperative, but (traditional) memoization requires purely functional computation, reusing computation correctly via memoization becomes a challenge. We overcome this challenge with a technique for remembering and reusing not just the results of function calls (as in conventional memoization), but their executions represented with DDGs. We show that the proposed approach is realistic by describing a library for self-adjusting computation, presenting efficient algorithms for realizing the library, and describing and evaluating an implementation. Our experimental evaluation with a variety of applications, ranging from simple list primitives to more sophisticated computational geometry algorithms, shows that the approach is effective in practice: compared to recomputing from-scratch; self-adjusting programs respond to small modifications to their data orders of magnitude faster. Umut A. Acar, Guy E. Blelloch, Matthias Blume, Robert Harper 0001, Kanat Tangwongsan |
ACM Trans. Program. Lang. Syst. | 3 |
| 2008 | Exception Handlers as Extensible Cases
Matthias Blume, Umut A. Acar, Wonseok Chae |
APLAS | 1 |
| 2008 | Typed closure conversion preserves observational equivalenceabstractLanguage-based security relies on the assumption that all potential attacks are bound by the rules of the language in question. When programs are compiled into a different language, this is true only if the translation process preserves observational equivalence. Amal Ahmed 0001, Matthias Blume |
ICFP | 2 |
| 2008 | Imperative self-adjusting computationabstractSelf-adjusting computation enables writing programs that can automatically and efficiently respond to changes to their data (e.g., inputs). The idea behind the approach is to store all data that can change over time in modifiable references and to let computations construct traces that can drive change propagation. After changes have occurred, change propagation updates the result of the computation by re-evaluating only those expressions that depend on the changed data. Previous approaches to self-adjusting computation require that modifiable references be written at most once during execution---this makes the model applicable only in a purely functional setting. Umut A. Acar, Amal Ahmed 0001, Matthias Blume |
POPL | 3 |
| 2008 | Building a Family of CompilersabstractWe have developed and maintained a set of closely related compilers. Although much of their code is duplicated and shared, they have been maintained separately because they are treated as different compilers. Even if they were merged together, the combined code would become too complicated to serve as the base for another extension. We describe our experience to address this problem by adopting the product line engineering paradigm to build a family of compilers. This paradigm encourages developers to focus on developing a set of compilers rather than on developing one particular compiler. We show engineering activities for a family of compilers from product line analysis through product line architecture design to product line component design. Then, we present how to build particular compilers from core assets resulting from the previous activities and how to take advantage of modern programming language technology to organize this task. Our experience demonstrates that the product line engineering as a developing paradigm can ease the construction of a family of compilers. Wonseok Chae, Matthias Blume |
SPLC | 2 |
| 2007 | A Consistent Semantics of Self-adjusting Computation
Umut A. Acar, Matthias Blume, Jacob Donham |
ESOP | 2 |
| 2007 | Principal Type Schemes for Modular Programs
Derek Dreyer, Matthias Blume |
ESOP | 2 |
| 2006 | Extensible programming with first-class casesabstractWe present language mechanisms for polymorphic, extensible records and their exact dual, polymorphic sums with extensible first-class cases. These features make it possible to easily extend existing code with new cases. In fact, such extensions do not require any changes to code that adheres to a particular programming style. Using that style, individual extensions can be written independently and later be composed to form larger components. These language mechanisms provide a solution to the expression problem.We study the proposed mechanisms in the context of an implicitly typed, purely functional language PolyR. We give a type system for the language and provide rules for a 2-phase transformation: first into an explicitly typed λ-calculus with record polymorphism, and finally to efficient index-passing code. The first phase eliminates sums and cases by taking advantage of the duality with records.We implement a version of PolyR extended with imperative features and pattern matching - we call this language MLPolyR. Programs in MLPolyR require no type annotations - the implementation employs a reconstruction algorithm to infer all types. The compiler generates machine code (currently for PowerPC) and optimizes the representation of sums by eliminating closures generated by the dual construction. Matthias Blume, Umut A. Acar, Wonseok Chae |
ICFP | 1 |
| 2006 | An experimental analysis of self-adjusting computationabstractDependence graphs and memoization can be used to efficiently update the output of a program as the input changes dynamically. Recent work has studied techniques for combining these approaches to effectively dynamize a wide range of applications. Toward this end various theoretical results were given. In this paper we describe the implementation of a library based on these ideas, and present experimental results on the efficiency of this library on a variety of applications. The results of the experiments indicate that the approach is effective in practice, often requiring orders of magnitude less time than recomputing the output from scratch. We believe this is the first experimental evidence that incremental computation of any type is effective in practice for a reasonably broad set of applications. Umut A. Acar, Guy E. Blelloch, Matthias Blume, Kanat Tangwongsan |
PLDI | 3 |
| 2006 | Sound and complete models of contractsabstractEven in statically typed languages it is useful to have certain invariants checked dynamically. Findler and Felleisen gave an algorithm for dynamically checking expressive higher-order types called contracts. They did not, however, give a semantics of contracts. The lack of a semantics makes it impossible to define and prove soundness and completeness of the checking algorithm. (Given a semantics, a sound checker never reports violations that do not exist under that semantics; a complete checker is – in principle – able to find violations when violations exist.) Ideally, a semantics should capture what programmers intuitively feel is the meaning of a contract or otherwise clearly point out where intuition does not match reality. In this paper we give an interpretation of contracts for which we prove the Findler-Felleisen algorithm sound and (under reasonable assumptions) complete. While our semantics mostly matches intuition, it also exposes a problem with predicate contracts where an arguably more intuitive interpretation than ours would render the checking algorithm unsound. In our semantics we have to make use of a notion of safety (which we define in the paper) to avoid unsoundness. We are able to eliminate the “leakage” of safety into the semantics by changing the language, replacing the original version of unrestricted predicate contracts with a restricted form. The corresponding loss in expressive power can be recovered by making safety explicit as a contract. This can be done either in ad-hoc fashion or by including general recursive contracts . The addition of recursive contracts has far-reaching implications, deeply affecting the formulation of our model and requiring different techniques for proving soundness. Matthias Blume, David A. McAllester |
J. Funct. Program. | 1 |
| 2005 | New Experiments in Distributional Representations of Synonymy
Dayne Freitag, Matthias Blume, John Byrnes, Edmond Chow, Sadik Kapadia, Richard Rohwer |
CoNLL | 2 |
| 2004 | A sound (and complete) model of contractsabstractEven in statically typed languages it is useful to have certain invariants checked dynamically. Findler and Felleisen gave an algorithm for dynamically checking expressive higher-order types called contracts. If we postulate soundness (in the sense that whenever a term is accused of violating its contract it really does fail to satisfy it), then their algorithm implies a semantics for contracts. Unfortunately, the implicit nature of the resulting model makes it rather unwieldy.In this paper we demonstrate that a direct approach yields essentially the same semantics without having to refer to contract-checking in its definition. The so-defined model largely coincides with intuition, but it does expose some peculiarities in its interpretation of predicate contracts where a notion of safety (which we define in the paper) "leaks" into the semantics of Findler and Felleisen's original unrestricted predicate contracts.This counter-intuitive aspect of the semantics can be avoided by changing the language, replacing unrestricted predicate contracts with a restricted version. The corresponding loss in expressive power can be recovered by also providing a way of explicitly expressing safety as a contract-either in ad-hoc fashion or, e.g., by including general recursive contracts. Matthias Blume, David A. McAllester |
ICFP | 1 |
| 2003 | Taming the IXP network processorabstractWe compile Nova, a new language designed for writing network processing applications, using a back end based on integer-linear programming (ILP) for register allocation, optimal bank assignment, and spills. The compiler's optimizer employs CPS as its intermediate representation; some of the invariants that this IR guarantees are essential for the formulation of a practical ILP model.Appel and George used a similar ILP-based technique for the IA32 to decide which variables reside in registers but deferred the actual assignment of colors to a later phase. We demonstrate how to carry over their idea to an architecture with many more banks, register aggregates, variables with multiple simultaneous register assignments, and, very importantly, one where bank- and register-assignment cannot be done in isolation from each other. Our approach performs well in practise---without causing an explosion in size or solve time of the generated integer linear programs. Lal George, Matthias Blume |
PLDI | 2 |
| 1999 | Dependency analysis for Standard MLabstractAutomatic dependency analysis is a useful addition to a system like CM, our compilation manager for Standard ML of New Jersey. It relieves the programmer from the tedious and error-prone task of having to specify compilation dependencies by hand and thereby makes its usage more user friendly. But dependency analysis is not easy, as the general problem for Standard ML is NP-complete. Therefore, CM has to impose certain restrictions on the programming language to recover tractability. We prove the NP-completeness result, discuss the restrictions on ML that are used by CM, and provide the resulting analysis algorithms. Matthias Blume |
ACM Trans. Program. Lang. Syst. | 1 |
| 1999 | Hierarchical modularityabstractTo cope with the complexity of very large systems, it is not sufficient to divide them into simple pieces because the pieces themselves will either be too numerous or too large. A hierarchical modular structure is the natural solution. In this article we explain how that approach can be applied to software. Our compilation manager provides a language for specifying where individual modules fit into a hierarchy and how they are related semantically. We pay particular attention to the structure of the global name space of program identifiers that are used for module linkage because any potential for name clashes between otherwise unrelated parts of a program can negatively affect modularity. We discuss the theoretical issues in building software hierarchically, and we describe our implementation of CM, the compilation manager for Standard ML of New Jersey. Matthias Blume, Andrew W. Appel |
ACM Trans. Program. Lang. Syst. | 1 |
| 1997 | Lambda-Splitting: A Higher-Order Approach to Cross-Module OptimizationsabstractWe describe an algorithm for automatic inline expansion across module boundaries that works in the presence of higher-order functions and free variables; it rearranges bindings and scopes as necessary to move nonexpansive code from one module to another. We describe---and implement---the algorithm as transformations on λ-calculus. Our inliner interacts well with separate compilation and is efficient, robust, and practical enough for everyday use in the SML/NJ compiler. Inlining improves performance by 4--8% on existing code, and makes it possible to use much more data abstraction by consistently eliminating penalties for modularity. Matthias Blume, Andrew W. Appel |
ICFP | 1 |
| 1997 | An Efficient Mapping of Fuzzy ART onto a Neural Architecture
Matthias Blume, Sadik C. Esener |
Neural Networks | 1 |