Matthew A. Hammer

dblp:73/10322 · also Matthew Hammer · DBLP profile ↗
← Back
13ranked-venue papers
6as first author
0since 2021 · last 2019
—ORCID · none

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

Software engineering, systems software and programming languages · 11 · 6 first-authorSecurity and privacy · 1Graphics, computer vision, multimedia, augmented reality and games · 1Human-computer interaction and ubiquitous 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
7 papers
Programming languages and type systems · 77% Program analysis · 18% Compilers and program optimization · 4%
Network and information security
2 papers
Cryptographic protocols and secure computation · 100%

Topics — the 13 heaviest of 15, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis › static analysis
incremental analysis
0.642015
Incremental computation with names · OOPSLA 2015
Adapton: composable, demand-driven incremental computation · PLDI 2014
Self-adjusting stack machines · OOPSLA 2011
Programming languages and type systems › programming paradigms
self-adjusting computation
0.432015
Incremental computation with names · OOPSLA 2015
Self-adjusting stack machines · OOPSLA 2011
CEAL: a C-based language for self-adjusting computation · PLDI 2009
Cryptographic protocols and secure computation
composable security
0.412019
ILC: a calculus for composable, computational cryptography · PLDI 2019
Cryptographic protocols and secure computation › composable security
universally composable security
0.412019
ILC: a calculus for composable, computational cryptography · PLDI 2019
Programming languages and type systems › language semantics
dynamic semantics
0.412019
Live functional programming with typed holes · Proc. ACM Program. Lang. 2019
Programming languages and type systems › type systems
gradual typing
0.412019
Live functional programming with typed holes · Proc. ACM Program. Lang. 2019
Programming languages and type systems › type checking
bidirectional type checking
0.312017
Hazelnut: a bidirectionally typed structure editor calculus · POPL 2017
Programming languages and type systems › programming environment
structure editors
0.312017
Hazelnut: a bidirectionally typed structure editor calculus · POPL 2017
Cryptographic protocols and secure computation
secure multiparty computation
0.212014
Wysteria: A Programming Language for Generic, Mixed-Mode Multiparty Computations · IEEE Symposium on Security and Privacy 2014
Programming languages and type systems › type systems › refinement types
refinement type system
0.212014
Wysteria: A Programming Language for Generic, Mixed-Mode Multiparty Computations · IEEE Symposium on Security and Privacy 2014
Compilers and program optimization › intermediate representation
intermediate language
0.112011
Self-adjusting stack machines · OOPSLA 2011
Programming languages and type systems › type systems
type soundness
0.112019
Live functional programming with typed holes · Proc. ACM Program. Lang. 2019
Automated reasoning and model checking
protocol verification
0.112019
ILC: a calculus for composable, computational cryptography · PLDI 2019

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

symbolic model · 0.8computational reduction proof · 0.8operational semantics · 0.5mechanized metatheory · 0.4agda proof assistant · 0.4type soundness proof · 0.4from-scratch consistency proof · 0.2core calculus · 0.2memoization · 0.2dependency graph · 0.2soundness proof · 0.1change propagation · 0.1
YearPublicationVenuePosition
2019 ILC: a calculus for composable, computational cryptography
abstract
The universal composability (UC) framework is the established standard for analyzing cryptographic protocols in a modular way, such that security is preserved under concurrent composition with arbitrary other protocols. However, although UC is widely used for on-paper proofs, prior attempts at systemizing it have fallen short, either by using a symbolic model (thereby ruling out computational reduction proofs), or by limiting its expressiveness.
Kevin Liao, Matthew A. Hammer, Andrew Miller 0001
PLDI2
2019 Live functional programming with typed holes
abstract
Live programming environments aim to provide programmers (and sometimes audiences) with continuous feedback about a program's dynamic behavior as it is being edited. The problem is that programming languages typically assign dynamic meaning only to programs that are complete, i.e. syntactically well-formed and free of type errors. Consequently, live feedback presented to the programmer exhibits temporal or perceptive gaps. This paper confronts this "gap problem" from type-theoretic first principles by developing a dynamic semantics for incomplete functional programs, starting from the static semantics for incomplete functional programs developed in recent work on Hazelnut. We model incomplete functional programs as expressions with holes, with empty holes standing for missing expressions or types, and non-empty holes operating as membranes around static and dynamic type inconsistencies. Rather than aborting when evaluation encounters any of these holes as in some existing systems, evaluation proceeds around holes, tracking the closure around each hole instance as it flows through the remainder of the program. Editor services can use the information in these hole closures to help the programmer develop and confirm their mental model of the behavior of the complete portions of the program as they decide how to fill the remaining holes. Hole closures also enable a fill-and-resume operation that avoids the need to restart evaluation after edits that amount to hole filling. Formally, the semantics borrows machinery from both gradual type theory (which supplies the basis for handling unfilled type holes) and contextual modal type theory (which supplies a logical basis for hole closures), combining these and developing additional machinery necessary to continue evaluation past holes while maintaining type safety. We have mechanized the metatheory of the core calculus, called Hazelnut Live, using the Agda proof assistant. We have also implemented these ideas into the Hazel programming environment. The implementation inserts holes automatically, following the Hazelnut edit action calculus, to guarantee that every editor state has some (possibly incomplete) type. Taken together with this paper's type safety property, the result is a proof-of-concept live programming environment where rich dynamic feedback is truly available without gaps, i.e. for every reachable editor state.
Cyrus Omar, Ian Voysey, Ravi Chugh, Matthew A. Hammer
Proc. ACM Program. Lang.4
2017 Languages of play: towards semantic foundations for game interfaces
abstract
Formal models of games help us account for and predict behavior, leading to more robust and innovative designs. While the games research community has proposed many formalisms for both the "game half" (game models, game description languages) and the "human half" (player modeling) of a game experience, little attention has been paid to the interface between the two, particularly where it concerns the player expressing her intent toward the game. We describe an analytical and computational toolbox based on programming language theory to examine the phenomenon sitting between control schemes and game rules, which we identify as a distinct player intent language for each game.
Chris Martens 0001, Matthew A. Hammer
FDG2
2017 Hazelnut: a bidirectionally typed structure editor calculus
abstract
Structure editors allow programmers to edit the tree structure of a program directly. This can have cognitive benefits, particularly for novice and end-user programmers. It also simplifies matters for tool designers, because they do not need to contend with malformed program text.
Cyrus Omar, Ian Voysey, Michael Hilton 0001, Jonathan Aldrich, Matthew A. Hammer
POPL5
2016 A vision for online verification-validation
abstract
Today's programmers face a false choice between creating software that is extensible and software that is correct. Specifically, dynamic languages permit software that is richly extensible (via dynamic code loading, dynamic object extension, and various forms of reflection), and today's programmers exploit this flexibility to "bring their own language features" to enrich extensible languages (e.g., by using common JavaScript libraries). Meanwhile, such library-based language extensions generally lack enforcement of their abstractions, leading to programming errors that are complex to avoid and predict.
Matthew A. Hammer, Bor-Yuh Evan Chang, David Van Horn
GPCE1
2015 Incremental computation with names
abstract
Over the past thirty years, there has been significant progress in developing general-purpose, language-based approaches to incremental computation, which aims to efficiently update the result of a computation when an input is changed. A key design challenge in such approaches is how to provide efficient incremental support for a broad range of programs. In this paper, we argue that first-class names are a critical linguistic feature for efficient incremental computation. Names identify computations to be reused across differing runs of a program, and making them first class gives programmers a high level of control over reuse. We demonstrate the benefits of names by presenting Nominal Adapton, an ML-like language for incremental computation with names. We describe how to use Nominal Adapton to efficiently incrementalize several standard programming patterns---including maps, folds, and unfolds---and show how to build efficient, incremental probabilistic trees and tries. Since Nominal Adapton's implementation is subtle, we formalize it as a core calculus and prove it is from-scratch consistent, meaning it always produces the same answer as simply re-running the computation. Finally, we demonstrate that Nominal Adapton can provide large speedups over both from-scratch computation and Adapton, a previous state-of-the-art incremental computation system.
Matthew A. Hammer, Jana Dunfield, Kyle Headley, Nicholas Labich, Jeffrey S. Foster, Michael Hicks 0001, David Van Horn
OOPSLA1
2014 Adapton: composable, demand-driven incremental computation
abstract
Many researchers have proposed programming languages that support incremental computation (IC), which allows programs to be efficiently re-executed after a small change to the input. However, existing implementations of such languages have two important drawbacks. First, recomputation is oblivious to specific demands on the program output; that is, if a program input changes, all dependencies will be recomputed, even if an observer no longer requires certain outputs. Second, programs are made incremental as a unit, with little or no support for reusing results outside of their original context, e.g., when reordered.
Matthew A. Hammer, Yit Phang Khoo, Michael Hicks 0001, Jeffrey S. Foster
PLDI1
2014 Wysteria: A Programming Language for Generic, Mixed-Mode Multiparty Computations
abstract
In a Secure Multiparty Computation (SMC), mutually distrusting parties use cryptographic techniques to cooperatively compute over their private data, in the process each party learns only explicitly revealed outputs. In this paper, we present Wysteria, a high-level programming language for writing SMCs. As with past languages, like Fairplay, Wysteria compiles secure computations to circuits that are executed by an underlying engine. Unlike past work, Wysteria provides support for mixed-mode programs, which combine local, private computations with synchronous SMCs. Wysteria complements a standard feature set with built-in support for secret shares and with wire bundles, a new abstraction that supports generic n-party computations. We have formalized Wysteria, its refinement type system, and its operational semantics. We show that Wysteria programs have an easy-to-understand single-threaded interpretation and prove that this view corresponds to the actual multi-threaded semantics. We also prove type soundness, a property we show has security ramifications, namely that information about one party's data can only be revealed to another via (agreed upon) secure computations. We have implemented Wysteria, and used it to program a variety of interesting SMC protocols from the literature, as well as several new ones. We find that Wysteria's performance is competitive with prior approaches while making programming far easier, and more trustworthy.
Aseem Rastogi, Matthew A. Hammer, Michael Hicks 0001
IEEE Symposium on Security and Privacy2
2014 Implicit self-adjusting computation for purely functional programs
abstract
Abstract Computational problems that involve dynamic data, such as physics simulations and program development environments, have been an important subject of study in programming languages. Building on this work, recent advances in self-adjusting computation have developed techniques that enable programs to respond automatically and efficiently to dynamic changes in their inputs. Self-adjusting programs have been shown to be efficient for a reasonably broad range of problems, but the approach still requires an explicit programming style, where the programmer must use specific monadic types and primitives to identify, create, and operate on data that can change over time. We describe techniques for automatically translating purely functional programs into self-adjusting programs. In this implicit approach, the programmer need only annotate the (top-level) input types of the programs to be translated. Type inference finds all other types, and a type-directed translation rewrites the source program into an explicitly self-adjusting target program. The type system is related to information-flow type systems and enjoys decidable type inference via constraint solving. We prove that the translation outputs well- typed self-adjusting programs and preserves the source program's input–output behavior, guaranteeing that translated programs respond correctly to all changes to their data. Using a cost semantics, we also prove that the translation preserves the asymptotic complexity of the source program.
Yan Chen 0001, Jana Dunfield, Matthew A. Hammer, Umut A. Acar
J. Funct. Program.3
2011 Implicit self-adjusting computation for purely functional programs
abstract
Computational problems that involve dynamic data, such as physics simulations and program development environments, have been an important subject of study in programming languages. Building on this work, recent advances in self-adjusting computation have developed techniques that enable programs to respond automatically and efficiently to dynamic changes in their inputs. Self-adjusting programs have been shown to be efficient for a reasonably broad range of problems but the approach still requires an explicit programming style, where the programmer must use specific monadic types and primitives to identify, create and operate on data that can change over time.
Yan Chen 0001, Jana Dunfield, Matthew A. Hammer, Umut A. Acar
ICFP3
2011 Self-adjusting stack machines
abstract
Self-adjusting computation offers a language-based approach to writing programs that automatically respond to dynamically changing data. Recent work made significant progress in developing sound semantics and associated implementations of self-adjusting computation for high-level, functional languages. These techniques, however, do not address issues that arise for low-level languages, i.e., stack-based imperative languages that lack strong type systems and automatic memory management. In this paper, we describe techniques for self-adjusting computation which are suitable for low-level languages. Necessarily, we take a different approach than previous work: instead of starting with a high-level language with additional primitives to support self-adjusting computation, we start with a low-level intermediate language, whose semantics is given by a stack-based abstract machine. We prove that this semantics is sound: it always updates computations in a way that is consistent with full reevaluation. We give a compiler and runtime system for the intermediate language used by our abstract machine. We present an empirical evaluation that shows that our approach is efficient in practice, and performs favorably compared to prior proposals.
Matthew A. Hammer, Georg Neis, Yan Chen 0001, Umut A. Acar
OOPSLA1
2009 CEAL: a C-based language for self-adjusting computation
abstract
Self-adjusting computation offers a language-centric approach to writing programs that can automatically respond to modifications to their data (e.g., inputs). Except for several domain-specific implementations, however, all previous implementations of self-adjusting computation assume mostly functional, higher-order languages such as Standard ML. Prior to this work, it was not known if self-adjusting computation can be made to work with low-level, imperative languages such as C without placing undue burden on the programmer.
Matthew A. Hammer, Umut A. Acar, Yan Chen 0001
PLDI1
2008 Memory management for self-adjusting computation
abstract
The cost of reclaiming space with traversal-based garbage collection is inversely proportional to the amount of free memory, i.e., O(1/(1-f)), where f is the fraction of memory that is live. Consequently, the cost of garbage collection can be very high when the size of the live data remains large relative to the available free space. Intuitively, this is because allocating a small amount of memory space will require the garbage collector to traverse a significant fraction of the memory only to discover little garbage. This is unfortunate because in some application domains the size of the memory-resident data can be generally high. This can cause high GC overheads, especially when generational assumptions do not hold. One such application domain is self-adjusting computation, where computations use memory-resident execution traces in order to respond to changes to their state (e.g., inputs) efficiently.
Matthew A. Hammer, Umut A. Acar
ISMM1