VLDB 2026 Research / reviewers in the wild / expert
Mitchell Wand
dblp:w/MitchellWand
· DBLP profile ↗
65ranked-venue papers
38as 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 · 40 · 18 first-authorTheory of computation · 21 · 18 first-authorApplied, interdisciplinary, general and emerging computing · 2 · 2 first-authorDatabases, data management, data science and information retrieval · 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
28 papers |
Programming languages and type systems · 37% Compilers and program optimization · 23% Program verification · 22% | |
| Theoretical computer science
4 papers |
Logic in computer science · 64% Computational complexity · 18% Automated reasoning and model checking · 17% |
Topics — the 30 heaviest of 56, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Compilers and program optimization › parallel program optimization › synchronization optimization
atomicity refinement |
0.1 | 1 | 2011 | A separation logic for refining concurrent objects · POPL 2011 |
Concurrent programming › concurrent data structures
concurrent objects |
0.1 | 1 | 2011 | A separation logic for refining concurrent objects · POPL 2011 |
Program verification › modular reasoning
rely-guarantee reasoning |
0.1 | 1 | 2011 | A separation logic for refining concurrent objects · POPL 2011 |
Program verification › program logic
separation logic |
0.1 | 1 | 2011 | A separation logic for refining concurrent objects · POPL 2011 |
Programming languages and type systems › language semantics › formal semantics
denotational semantics |
0.1 | 3 | 2004 | A semantics for advice and dynamic join points in aspect-oriented programming · ACM Trans. Program. Lang. Syst. 2004 Denotational Semantics Using an Operationally-Based Term Model · POPL 1997 Deriving Target Code as a Representation of Continuation Semantics · ACM Trans. Program. Lang. Syst. 1982 |
Programming languages and type systems › program equivalence
bisimulation |
0.1 | 1 | 2006 | Small bisimulations for reasoning about higher-order imperative programs · POPL 2006 |
Programming languages and type systems › program equivalence
contextual equivalence |
0.1 | 1 | 2006 | Small bisimulations for reasoning about higher-order imperative programs · POPL 2006 |
Programming languages and type systems
language semantics |
0.0 | 2 | 2004 | A semantics for advice and dynamic join points in aspect-oriented programming · ACM Trans. Program. Lang. Syst. 2004 A Concrete Approach to Abstract Recursion Definitions · ICALP 1972 |
Programming languages and type systems
aspect-oriented programming |
0.0 | 1 | 2004 | A semantics for advice and dynamic join points in aspect-oriented programming · ACM Trans. Program. Lang. Syst. 2004 |
Program analysis
flow analysis |
0.0 | 3 | 1997 | Lightweight Closure Conversion · ACM Trans. Program. Lang. Syst. 1997 Selective and Lightweight Closure Conversion · POPL 1994 Correct Flow Analysis in Continuation Semantics · POPL 1988 |
Compilers and program optimization › program transformation
closure conversion |
0.0 | 2 | 1997 | Lightweight Closure Conversion · ACM Trans. Program. Lang. Syst. 1997 Selective and Lightweight Closure Conversion · POPL 1994 |
Program analysis
static analysis |
0.0 | 2 | 1997 | Lightweight Closure Conversion · ACM Trans. Program. Lang. Syst. 1997 Incorporating Static Analysis in a Combinator-Based Compiler · Inf. Comput. 1989 |
Compilers and program optimization
dead code elimination |
0.0 | 1 | 1999 | Constraint Systems for Useless Variable Elimination · POPL 1999 |
Programming languages and type systems
domain-specific languages |
0.0 | 1 | 1999 | A Language for Specifying Recursive Traversals of Object Structures · OOPSLA 1999 |
Compilers and program optimization › program transformation
semantics-preserving transformation |
0.0 | 2 | 1997 | Denotational Semantics Using an Operationally-Based Term Model · POPL 1997 Correct Flow Analysis in Continuation Semantics · POPL 1988 |
Programming languages and type systems
type inference |
0.0 | 3 | 1991 | Type Inference for Record Concatenation and Multiple Inheritance · Inf. Comput. 1991 Type Inference for Record Concatenation and Multiple Inheritance · LICS 1989 Complete Type Inference for Simple Objects · LICS 1987 |
Compilers and program optimization
verified compilation |
0.0 | 2 | 1993 | Specifying the Correctness of Binding-Time Analysis · POPL 1993 Conditional Lambda-Theories and the Verification of Static Properties of Programs · LICS 1990 |
Programming languages and type systems
lambda calculus |
0.0 | 3 | 1990 | Conditional Lambda-Theories and the Verification of Static Properties of Programs · LICS 1990 Type Inference for Record Concatenation and Multiple Inheritance · LICS 1989 Loops in Combinator-Based Compilers · POPL 1983 |
Programming languages and type systems
language design |
0.0 | 1 | 2004 | A semantics for advice and dynamic join points in aspect-oriented programming · ACM Trans. Program. Lang. Syst. 2004 |
Compilers and program optimization
compiler correctness |
0.0 | 2 | 1990 | Conditional Lambda-Theories and the Verification of Static Properties of Programs · LICS 1990 Correct Flow Analysis in Continuation Semantics · POPL 1988 |
Compilers and program optimization
partial evaluation |
0.0 | 1 | 1993 | Specifying the Correctness of Binding-Time Analysis · POPL 1993 |
Programming languages and type systems › language semantics › formal semantics › denotational semantics
continuation semantics |
0.0 | 2 | 1988 | Correct Flow Analysis in Continuation Semantics · POPL 1988 Deriving Target Code as a Representation of Continuation Semantics · ACM Trans. Program. Lang. Syst. 1982 |
Requirements engineering and software design › design patterns
visitor pattern |
0.0 | 1 | 1999 | A Language for Specifying Recursive Traversals of Object Structures · OOPSLA 1999 |
Programming languages and type systems › type systems
polymorphism |
0.0 | 2 | 1986 | Finding the Source of Type Errors · POPL 1986 A Types-as-Sets Semantics for Milner-Style Polymorphism · POPL 1984 |
Compilers and program optimization › compiler construction
symbol table |
0.0 | 1 | 1990 | Conditional Lambda-Theories and the Verification of Static Properties of Programs · LICS 1990 |
Compilers and program optimization › compiler construction
compiler generation |
0.0 | 2 | 1987 | Macro-by-Example: Deriving Syntactic Transformations from their Specifications · POPL 1987 Semantics-Directed Machine Architecture · POPL 1982 |
Programming languages and type systems › object-oriented programming
multiple inheritance |
0.0 | 1 | 1989 | Type Inference for Record Concatenation and Multiple Inheritance · LICS 1989 |
Programming languages and type systems › type inference
principal types |
0.0 | 1 | 1989 | Type Inference for Record Concatenation and Multiple Inheritance · LICS 1989 |
Programming languages and type systems › type systems
records |
0.0 | 1 | 1989 | Type Inference for Record Concatenation and Multiple Inheritance · LICS 1989 |
Programming languages and type systems › type inference
record concatenation |
0.0 | 1 | 1989 | Type Inference for Record Concatenation and Multiple Inheritance · LICS 1989 |
Methods — techniques the papers use, named apart from their topics
separation logic · 0.1rely-guarantee reasoning · 0.1lambda calculus with store · 0.1bisimulation · 0.1denotational semantics · 0.0abstract interpretation · 0.0labeled transition systems · 0.0deductive system · 0.0type inference · 0.0inference rules · 0.0pattern matching · 0.0loop invariant · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2020 | Hygienic macro technologyabstractThe fully parenthesized Cambridge Polish syntax of Lisp, originally regarded as a temporary expedient to be replaced by more conventional syntax, possesses a peculiar virtue: A read procedure can parse it without knowing the syntax of any expressions, statements, definitions, or declarations it may represent. The result of that parsing is a list structure that establishes a standard representation for uninterpreted abstract syntax trees. This representation provides a convenient basis for macro processing, which allows the programmer to specify that some simple piece of abstract syntax should be replaced by some other, more complex piece of abstract syntax. As is well-known, this yields an abstraction mechanism that does things that procedural abstraction cannot, such as introducing new binding structures. The existence of that standard representation for uninterpreted abstract syntax trees soon led Lisp to a greater reliance upon macros than was common in other high-level languages. The importance of those features is suggested by the ten pages devoted to macros in an earlier ACM HOPL paper, “The Evolution of Lisp.” However, na'ive macro expansion was a leaky abstraction, because the movement of a piece of syntax from one place to another might lead to the accidental rebinding of a program’s identifiers. Although this problem was recognized in the 1960s, it was 20 years before a reliable solution was discovered, and another 10 before a solution was discovered that was reliable, flexible, and efficient. In this paper, we summarize that early history with greater focus on hygienic macros, and continue the story by describing the further development, adoption, and influence of hygienic and partially hygienic macro technology in Scheme. The interplay between the desire for standardization and the development of new algorithms is a major theme of that story. We then survey the ways in which hygienic macro technology has been adapted into recent non-parenthetical languages. Finally, we provide a short history of attempts to provide a formal account of macro processing. William D. Clinger, Mitchell Wand |
Proc. ACM Program. Lang. | 2 |
| 2018 | Contextual equivalence for a probabilistic language with continuous random variables and recursionabstractWe present a complete reasoning principle for contextual equivalence in an untyped probabilistic language. The language includes continuous (real-valued) random variables, conditionals, and scoring. It also includes recursion, since the standard call-by-value fixpoint combinator is expressible. We demonstrate the usability of our characterization by proving several equivalence schemas, including familiar facts from lambda calculus as well as results specific to probabilistic programming. In particular, we use it to prove that reordering the random draws in a probabilistic program preserves contextual equivalence. This allows us to show, for example, that (let x = e 1 in let y = e 2 in e 0 ) = ctx (let y = e 2 in let x = e 1 in e 0 ) (provided x does not occur free in e 2 and y does not occur free in e 1 ) despite the fact that e 1 and e 2 may have sampling and scoring effects. Mitchell Wand, Ryan Culpepper, Theophilos Giannakopoulos, Andrew Cobb |
Proc. ACM Program. Lang. | 1 |
| 2017 | Inferring scope through syntactic sugarabstractMany languages use syntactic sugar to define parts of their surface language in terms of a smaller core. Thus some properties of the surface language, like its scoping rules , are not immediately evident. Nevertheless, IDEs, refactorers, and other tools that traffic in source code depend on these rules to present information to users and to soundly perform their operations. In this paper, we show how to lift scoping rules defined on a core language to rules on the surface, a process of scope inference . In the process we introduce a new representation of binding structure---scope as a preorder---and present a theoretical advance: proving that a desugaring system preserves α-equivalence even though scoping rules have been provided only for the core language. We have also implemented the system presented in this paper. Justin Pombrio, Shriram Krishnamurthi, Mitchell Wand |
Proc. ACM Program. Lang. | 3 |
| 2016 | Romeo: A system for more flexible binding-safe programmingabstractAbstract Current systems for safely manipulating values containing names only support simple binding structures for those names. As a result, few tools exist to safely manipulate code in those languages for which name problems are the most challenging. We address this problem with Romeo, a language that respects α-equivalence on its values, and which has access to a rich specification language for binding, inspired by attribute grammars. Our work has the complex-binding support of David Herman's λ m , but is a full-fledged binding-safe language like Pure FreshML. Paul Stansifer, Mitchell Wand |
J. Funct. Program. | 2 |
| 2014 | Romeo: a system for more flexible binding-safe programmingabstractCurrent languages for safely manipulating values with names only support term languages with simple binding syntax. As a result, no tools exist to safely manipulate code written in those languages for which name problems are the most challenging. We address this problem with Romeo, a language that respects α-equivalence on its values, and which has access to a rich specification language for binding, inspired by attribute grammars. Our work has the complex-binding support of David Herman's λm, but is a full-fledged binding-safe language like Pure FreshML. Paul Stansifer, Mitchell Wand |
ICFP | 2 |
| 2011 | A separation logic for refining concurrent objectsabstractFine-grained concurrent data structures are crucial for gaining performance from multiprocessing, but their design is a subtle art. Recent literature has made large strides in verifying these data structures, using either atomicity refinement or separation logic with rely-guarantee reasoning. In this paper we show how the ownership discipline of separation logic can be used to enable atomicity refinement, and we develop a new rely-guarantee method that is localized to the definition of a data structure. We present the first semantics of separation logic that is sensitive to atomicity, and show how to control this sensitivity through ownership. The result is a logic that enables compositional reasoning about atomicity and interference, even for programs that use fine-grained synchronization and dynamic memory allocation. Aaron Turon, Mitchell Wand |
POPL | 2 |
| 2010 | Bottom-up beta-reduction: Uplinks and lambda-DAGsabstractIf we represent a λ-calculus term as a DAG rather than a tree, we can efficiently represent the sharing that arises from β-reduction, thus avoiding combinatorial explosion in space. By adding uplinks from a child to its parents, we can efficiently im Olin Shivers, Mitchell Wand |
Fundam. Informaticae | 2 |
| 2009 | The Higher-Order Aggregate Update Problem
Christos Dimoulas, Mitchell Wand |
VMCAI | 2 |
| 2008 | A Compositional Trace Semantics for Orc
Dimitrios Vardoulakis, Mitchell Wand |
COORDINATION | 2 |
| 2008 | A Theory of Hygienic Macros
David Herman, Mitchell Wand |
ESOP | 2 |
| 2006 | Bisimulations for Untyped Imperative Objects
Vasileios Koutavas, Mitchell Wand |
ESOP | 2 |
| 2006 | Small bisimulations for reasoning about higher-order imperative programsabstractWe introduce a new notion of bisimulation for showing contextual equivalence of expressions in an untyped lambda-calculus with an explicit store, and in which all expressed values, including higher-order values, are storable. Our notion of bisimulation leads to smaller and more tractable relations than does the method of Sumii and Pierce [31]. In particular, our method allows one to write down a bisimulation relation directly in cases where [31] requires an inductive specification, and where the principle of local invariants [22] is inapplicable. Our method can also express examples with higher-order functions, in contrast with the most widely known previous methods [4, 22, 32] which are limited in their ability to deal with such examples. The bisimulation conditions are derived by manually extracting proof obligations from a hypothetical direct proof of contextual equivalence. Vasileios Koutavas, Mitchell Wand |
POPL | 2 |
| 2005 | Bottom-Up beta-Reduction: Uplinks and lambda-DAGs
Olin Shivers, Mitchell Wand |
ESOP | 2 |
| 2004 | Relating models of backtrackingabstractPast attempts to relate two well-known models of backtracking computation have met with only limited success. We relate these two models using logical relations. We accommodate higher-order values and infinite computations. We also provide an operational semantics, and we prove it adequate for both models. Mitchell Wand, Dale Vaillancourt |
ICFP | 1 |
| 2004 | A semantics for advice and dynamic join points in aspect-oriented programmingabstractA characteristic of aspect-oriented programming, as embodied in Aspect J, is the use of advice and point cuts to define behavior that crosscuts the structure of the rest of the code. The events during execution at which advice may execute are called join points . A pointcut is a set of join points. An advice is an action to be taken at the join points in a particular pointcut. In this model of aspect-oriented programming, join points are dynamic in that they refer to events during the flow of execution of the program.We give a denotational semantics for a minilanguage that embodies the key features of dynamic join points, pointcuts, and advice. This is the first semantics for aspect-oriented programming that handles dynamic join points and recursive procedures. It is intended as a baseline semantics against which future correctness results may be measured. Mitchell Wand, Gregor Kiczales, Christopher Dutchyn |
ACM Trans. Program. Lang. Syst. | 1 |
| 2003 | Understanding aspects: extended abstractabstractNo abstract available. Mitchell Wand |
ICFP | 1 |
| 2003 | CPS transformation of flow informationabstractWe consider the question of how a Continuation-Passing-Style (CPS) transformation changes the flow analysis of a program. We present an algorithm that takes the least solution to the flow constraints of a program and constructs in linear time the least solution to the flow constraints for the CPS-transformed program. Previous studies of this question used CPS transformations that had the effect of duplicating code, or of introducing flow sensitivity into the analysis. Our algorithm has the property that for a program point in the original program and the corresponding program point in the CPS-transformed program, the flow information is the same. By carefully avoiding both duplicated code and flow-sensitive analysis, we find that the most accurate analysis of the CPS-transformed program is neither better nor worse than the most accurate analysis of the original. Thus a compiler that needed flow information after CPS transformation could use the flow information from the original program to annotate some program points, and it could use our algorithm to find the rest of the flow information quickly, rather than having to analyze the CPS-transformed program. Jens Palsberg, Mitchell Wand |
J. Funct. Program. | 2 |
| 2002 | A Modular, Extensible Proof Method for Small-Step Flow Analyses
Mitchell Wand, Galen B. Williamson |
ESOP | 1 |
| 2001 | Set constraints for destructive array update optimizationabstractDestructive array update optimization is critical for writing scientific codes in functional languages. We present set constraints for an interprocedural update optimization that runs in polynomial time. This is a multi-pass optimization, involving interprocedural flow analyses for aliasing and liveness. We characterize and prove the soundness of these analyses using small-step operational semantics. We also prove that any sound liveness analysis induces a correct program transformation. Mitchell Wand, William D. Clinger |
J. Funct. Program. | 1 |
| 1999 | Trampolined StyleabstractA trampolined program is organized as a single loop in which computations are scheduled and their execution allowed to proceed in discrete steps. Writing programs in trampolined style supports primitives for multithreading without language support for continuations. Various forms of trampolining allow for different degrees of interaction between threads. We present two architectures based on an only mildly intrusive trampolined style. Concurrency can be supported at multiple levels of granularity by performing the trampolining transformation multiple times. Steven E. Ganz, Daniel P. Friedman, Mitchell Wand |
ICFP | 3 |
| 1999 | A Language for Specifying Recursive Traversals of Object StructuresabstractWe present a domain-specific language for specifying recursive traversals of object structures, for use with the visitor pattern. Traversals are traditionally specified as iterations, forcing the programmer to adopt an imperative style, or are hard-coded into the program or visitor. Our proposal allows a number of problems best approached by recursive means to be tackled with the visitor pattern, while retaining the benefits of a separate traversal specification. Johan Ovlinger, Mitchell Wand |
OOPSLA | 2 |
| 1999 | Constraint Systems for Useless Variable EliminationabstractA useless variable is one whose value contributes nothing to the final outcome of a computation. Such variables are unlikely to occur in human-produced code, but may be introduced by various program transformations. We would like to eliminate useless parameters from procedures and eliminate the corresponding actual parameters from their call sites. This transformation is the extension to higher-order programming of a variety of dead-code elimination optimizations that are important in compilers for first-order imperative languages. Mitchell Wand, Igor Siveroni |
POPL | 1 |
| 1997 | Denotational Semantics Using an Operationally-Based Term ModelabstractWe introduce a method for proving the correctness of transformations of programs in languages like Scheme and ML. The method consists of giving the programs a denotational semantics in an operationally-based term model in which interaction is the basic observable, and showing that the transformation is meaning-preserving. This allows us to consider correctness for programs that interact with their environment without terminating, and also for transformations that change the internal store behavior of the program. We illustrate the technique on one of the Meyer-Sieber examples, and we use it to prove the correctness of assignment elimination for Scheme. The latter is an important but subtle step for Scheme compilers; we believe ours is the first proof of its correctness. Mitchell Wand, Gregory T. Sullivan |
POPL | 1 |
| 1997 | Type Inference with Non-Structural SubtypingabstractAbstract We present an O(n 3 ) time type inference algorithm for a type system with a largest type Τ , a smallest type ⊥, and the usual ordering between function types. The algorithm infers type annotations of least shape, and it works equally well for recursive types. For the problem of typability, our algorithm is simpler than the one of Kozen, Palsberg, and Schwartzbach for type inference without ⊥. This may be surprising, especially because the system with ⊥ is strictly more powerful. Jens Palsberg, Mitchell Wand, Patrick O'Keefe |
Formal Aspects Comput. | 2 |
| 1997 | Lightweight Closure ConversionabstractWe consider the problem of lightweight closure conversion, in which multiple procedure call protocols may coexist in the same code. A lightweight closure omits bindings for some of the free variables of the procedure that is represents. Flow analysis is used to match the protocol expected by each procedure and the protocol used at its possible call sites. We formulate the flow analysis as a deductive system that generates a labeled transition system and a set of constraints. We show that any solution to the constraints justifies the resulting transformation. Some of the techniques used are similar to those of abstract interpretation, but others appear to be novel. Paul Steckler, Mitchell Wand |
ACM Trans. Program. Lang. Syst. | 2 |
| 1996 | Compiler Correctness for Concurrent Languages
David S. Gladstein, Mitchell Wand |
COORDINATION | 2 |
| 1996 | Modeling Subobject-based Inheritance
Jonathan G. Rossie Jr., Daniel P. Friedman, Mitchell Wand |
ECOOP | 3 |
| 1995 | Strong Normalization with Non-Structural SubtypingabstractWe study a type system with a notion of subtyping that involves a largest type ⊤, a smallest type ⊥, atomic coercions between base types, and the usual ordering of function types. We prove that any λ-term typable in this system is strongly normalizing, which solves an open problem of Thatte. We also prove that the fragment without ⊥ types has strictly fewer terms. This demonstrates that ⊥ adds power to a type system. Mitchell Wand, Patrick O'Keefe, Jens Palsberg |
Math. Struct. Comput. Sci. | 1 |
| 1994 | Selective and Lightweight Closure ConversionabstractWe consider the problem of selective and lightweight closure conversion, in which multiple procedure-calling protocols may coexist in the same code. Flow analysis is used to match the protocol expected by each procedure and the protocol used at each of its possible call sites. We formulate the flow analysis as the solution of a set of constraints, and show that any solution to the constraints justifies the resulting transformation. Some of the techniques used are suggested by those of abstract interpretation, but others arise out of alternative approaches. Mitchell Wand, Paul Steckler |
POPL | 1 |
| 1994 | Selective Thunkification
Paul Steckler, Mitchell Wand |
SAS | 2 |
| 1994 | Conditional Lambda-Theories and the Verification of Static Properties of Programs
Mitchell Wand, Zheng-Yu Wang |
Inf. Comput. | 1 |
| 1993 | Specifying the Correctness of Binding-Time AnalysisabstractMogensen has exhibited a very compact partial evaluator for the pure lambda calculus, using binding-time analysis followed by specialization. We give a correctness criterion for this partial evaluator and prove its correctness relative to this specification. We show that the conventional properties of partial evaluators, such as the Futamura projections, are consequences of this specification. By considering both a flow analysis and the transformation it justifies together, this proof suggests a framework for the incorporating flow analyses into verified compilers. Mitchell Wand |
POPL | 1 |
| 1993 | Specifying the Correctness of Binding-Time AnalysisabstractAbstract Mogensen has exhibited a very compact partial evaluator for the pure lambda calculus, using binding-time analysis followed by specialization. We give a correctness criterion for this partial evaluator and prove its correctness relative to this specification. We show that the conventional properties of partial evaluators, such as the Futamura projections, are consequences of this specification. By considering both a flow analysis and the transformation it justifies together, this proof suggests a framework for incorporating flow analyses into verified compilers. Mitchell Wand |
J. Funct. Program. | 1 |
| 1992 | Type Inference for Partial Types is Decidable
Patrick O'Keefe, Mitchell Wand |
ESOP | 2 |
| 1991 | Correctness of Procedure Representations in Higher-Order Assembly Language
Mitchell Wand |
MFPS | 1 |
| 1991 | Type Inference for Record Concatenation and Multiple Inheritance
Mitchell Wand |
Inf. Comput. | 1 |
| 1991 | Correctness of Static Flow Analysis in Continuation Semantics
Margaret Montenyohl, Mitchell Wand |
Sci. Comput. Program. | 2 |
| 1990 | Conditional Lambda-Theories and the Verification of Static Properties of ProgramsabstractA proof that a simple compiler correctly uses the static properties in its symbol table is presented. This is done by regarding the target code produced by the compiler as a syntactic variant of a lambda -term. In general, this lambda -term C may not be equal to the semantics S of the source program: they need to equal only when information in the symbol table is valid. Rules of inference for conditional lambda -judgements are presented, and their soundness is proven. These rules are then used to prove the correctness of a simple compiler that relies on a symbol table. The form of the proof suggests that such proofs may be largely mechanizable.> Mitchell Wand, Zheng-Yu Wang |
LICS | 1 |
| 1990 | A Short Proof of the Lexical Addressing Algorithm
Mitchell Wand |
Inf. Process. Lett. | 1 |
| 1989 | Type Inference for Record Concatenation and Multiple InheritanceabstractThe author shows that the type inference problem for a lambda calculus with records, including a record concatenation operator, is decidable. He shows that this calculus does not have principal types but does have finite complete sets of type, that is, for any term M in the calculus, there exists an effectively generable finite set of type schemes such that every typing for M is an instance of one of the schemes in the set. The author shows how a simple model of object-oriented programming, including hidden instance variables and multiple inheritance, may be coded in this calculus. The author concludes that type inference is decidable for object-oriented programs, even with multiple inheritance and classes as first-class values.> Mitchell Wand |
LICS | 1 |
| 1989 | Incorporating Static Analysis in a Combinator-Based Compiler
Margaret Montenyohl, Mitchell Wand |
Inf. Comput. | 2 |
| 1988 | Corrigendum: Complete Type Inference for Simple ObjectsabstractAn error has been pointed out in the author's paper (see Proc. 2nd IEEE Symp. on Logic in Computer Science, p.37-44 (1987)). It appears that there are programs without principal type schemes in the system in that paper.> Mitchell Wand |
LICS | 1 |
| 1988 | Correct Flow Analysis in Continuation SemanticsabstractThree semantics-preserving transformations (static replacement, factoring, and combinator selection) are used to convert a continuation semantics into a formal description of a semantic analyzer and code generator. The result of this derivation is a compilation algorithm which performs type checking before code generation so that type-checking instructions are not generated in the target code. Both the flow analysis and the resulting optimizations are proved correct with respect to the original definition of the source language. The proof consists of showing that all restructuring transformations preserve the semantics of the source language. This transformational approach can be extended to derive correctness proofs of other flow analysis and code optimization techniques. Margaret Montenyohl, Mitchell Wand |
POPL | 2 |
| 1987 | Complete Type Inference for Simple Objects
Mitchell Wand |
LICS | 1 |
| 1987 | Macro-by-Example: Deriving Syntactic Transformations from their SpecificationsabstractThis paper presents two new developments. First, it describes a “macro-by-example” specification language for syntactic abstractions in Lisp and related languages. This specification language allows a more declarative specification of macros than conventional macro facilities do by giving a better treatment of iteration and mapping constructs. Second, it gives a formal semantics for the language and a derivation of a compiler from the semantics. This derivation is a practical application of semantics-directed compiler development methodology. Eugene E. Kohlbecker, Mitchell Wand |
POPL | 2 |
| 1987 | Linear Future Semantics and Its Implementation
Stefan Kölbl, Mitchell Wand |
Sci. Comput. Program. | 2 |
| 1986 | Finding the Source of Type ErrorsabstractIt is a truism that most bugs are detected only at a great distance from their source. Although polymorphic type-checking systems like those in ML help greatly by detecting potential run-time type errors at compile-time, such systems are still not very helpful for locating the source of a type error. Typically, an error is reported only when the type-checker can proceed no further, even though the programmer's actual error may have occurred much earlier in the text. We describe an algorithm which appears to be quite helpful in isolating and explaining the source of type errors. The algorithm works by keeping track of the reasons the checker makes deductions about the types of variables. Mitchell Wand |
POPL | 1 |
| 1986 | Obtaining Coroutines with Continuations
Christopher T. Haynes, Daniel P. Friedman, Mitchell Wand |
Comput. Lang. | 3 |
| 1985 | Embedding Type Structure in SemanticsabstractWe show how a programming language designer may embed the type structure of a programming language in the more robust type structure of the typed lambda calculus. This is done by translating programs of the language into terms of the typed lambda calculus. Our translation, however, does not always yield a well-typed lambda term. Programs whose translations are not well-typed are considered meaningless, that is, ill-typed. We give a conditionally type-correct semantics for a simple language with continuation semantics. We provide a set of static type-checking rules for our source language, and prove that they are sound and complete: that is, a program passes the typing rules if and only if its translation is well-typed. This proves the correctness of our static semantics relative to the well-established typing rules of the typed lambda-calculus. Mitchell Wand |
POPL | 1 |
| 1984 | A Types-as-Sets Semantics for Milner-Style PolymorphismabstractIn this paper we present a semantics for Milner-style polymorphism in which types are sets. The basic picture is that our programs are actually terms in a typed λ-calculus, in which the type information can be safely deleted from the concrete syntax. In order to allow for common programming constructs, we allow reflexive or infinite types, and we also allow opaque types, which have private representations. Mitchell Wand |
POPL | 1 |
| 1983 | Loops in Combinator-Based CompilersabstractIn our paper [Wand 82a], we introduced a paradigm for compilation based on combinators. A program from a source language is translated (via a semantic definition) to trees of combinators; the tree is simplified (via associative and distributive laws) to a linear, assembly-language-like format: the compiler writer's virtual machine operates by simulating a reduction sequence of the simplified tree. The correctness of these transformations follows from general results about the λ-calculus. The code produced by such n generator is always tree-like. In this paper, the method is extended to produce target code with explicit loops. This is done by re-introducing variables into the terms of the target language in a restricted way, along with a structured binding operator. Mitchell Wand |
POPL | 1 |
| 1983 | Loops in Combinator-Based Compilers
Mitchell Wand |
Inf. Control. | 1 |
| 1982 | Semantics-Directed Machine ArchitectureabstractWe show how to analyze the denotational semantics for a programming language to obtain a compiler and a suitable target machine for the language. We do this by rewriting the equations using suitable combinators. The machine operates by simulating the reduction sequences for the combinator terms. The reduction sequences pass through certain standard forms, which become an architecture for the machine, and the combinators become machine instructions. Despite the abstract nature of its development, the machine greatly resembles a conventional one. The method is illustrated by a simple expression language with procedures and input-output. Mitchell Wand |
POPL | 1 |
| 1982 | Specifications, Models, and Implementations of Data Abstractions
Mitchell Wand |
Theor. Comput. Sci. | 1 |
| 1982 | Deriving Target Code as a Representation of Continuation SemanticsabstractReynolds' technique for deriving interpreters is extended to derive compilers from continuation semantics.The technique starts by eliminating h-variables from the semantic equations through the introduction of special-purpose combinators.The semantics of a program phrase may be represented by a term built from these combinators.Then associative and distributive laws are used to simplify the terms.Last, a machine is built to interpret the simplified terms as the functions they represent.The combinators reappear as the instructions of this machine.The technique is illustrated with three examples. Mitchell Wand |
ACM Trans. Program. Lang. Syst. | 1 |
| 1980 | First-Order Identities as a Defining Language
Mitchell Wand |
Acta Informatica | 1 |
| 1980 | Continuation-Based Program Transformation StrategiesabstractProgram transformations often revolve the generahzation of a function to take additional arguments It is shown that m many eases such an additional variable arises as a representation of the continuation or global context m which the function is evaluated.By considering continuations, local transformation strategies can take advantage of global knowledge The general results are followed by two examples' the a-fl tree pruning algorithm and an algorithm for the conversion of a propositional formula to conjunctive normal form Mitchell Wand |
J. ACM | 1 |
| 1979 | Final Algebra Semantics and Data Type Extensions
Mitchell Wand |
J. Comput. Syst. Sci. | 1 |
| 1979 | Fixed-Point Constructions in Order-Enriched Categories
Mitchell Wand |
Theor. Comput. Sci. | 1 |
| 1978 | Compiling Lambda-Expressions Using Continuations and Factorizations
Mitchell Wand, Daniel P. Friedman |
Comput. Lang. | 1 |
| 1978 | A New Incompleteness Result for Hoare's SystemabstractThere exist structures for which Hoare's formal system for partial correctness is incomplete, even ff the entire first-order theory of the structure is included among the axioms This incompleteness occurs even if attention is restricted to structures with a solvable halting problem, and to programs which always halt on the structure The implications of this result for program proving are discussed Mitchell Wand |
J. ACM | 1 |
| 1977 | A Characterization of Weakest Preconditions
Mitchell Wand |
J. Comput. Syst. Sci. | 1 |
| 1976 | A New Incompleteness Result for Hoare's SystemabstractA structure A is presented for which Hoare's formal system for partial correctness is incomplete, even if the entire first-order theory of A is included among the axioms. It follows that the language of first-order logic is insufficient to express all loop invariants. The implications of this result for program-proving are discussed. Mitchell Wand |
STOC | 1 |
| 1973 | An Unusual Application of Program-ProvingabstractAn inductive proof in mathematics may often be expressed as an algorithm and a proof that the algorithm is correct. Especially when the proof proceeds by cases, a recursive pattern-matching language, such as Hewitt's MATCHLESS, is a felicitous language for writing the algorithm. We use this idea to prove a new mathematical result, which itself is of interest in computer science. We define objects called k-models. Our main theorem is a necessary and sufficient condition for a k-model to be the restriction of a k+1-model. Mitchell Wand |
STOC | 1 |
| 1972 | A Concrete Approach to Abstract Recursion Definitions
Mitchell Wand |
ICALP | 1 |