EDBT 2026 Demo / reviewers in the wild / expert
Gavin M. Bierman
dblp:b/GavinMBierman
· DBLP profile ↗
30ranked-venue papers
16as first author
0since 2021 · last 2017
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 20 · 11 first-authorDatabases, data management, data science and information retrieval · 5 · 2 first-authorTheory of computation · 5 · 3 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
8 papers |
Programming languages and type systems · 68% Compilers and program optimization · 10% Program verification · 9% | |
| Databases, data mining, and information retrieval
4 papers |
Query processing and optimization · 52% Data models and query languages · 43% Data integration and cleaning · 6% |
Topics — the 25 heaviest of 25, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Programming languages and type systems › type systems
gradual typing |
0.4 | 2 | 2015 | Safe & Efficient Gradual Typing for TypeScript · POPL 2015 Gradual typing embedded securely in JavaScript · POPL 2014 |
Programming languages and type systems
type systems |
0.3 | 3 | 2015 | Safe & Efficient Gradual Typing for TypeScript · POPL 2015 Mutatis Mutandis: Safe and predictable dynamic software updating · ACM Trans. Program. Lang. Syst. 2007 Mutatis mutandis: safe and predictable dynamic software updating · POPL 2005 |
Data models and query languages › database programming language
language-integrated query |
0.3 | 2 | 2014 | Code Generation for Efficient Query Processing in Managed Runtimes · Proc. VLDB Endow. 2014 LINQ: reconciling object, relations and XML in the .NET framework · SIGMOD Conference 2006 |
Compilers and program optimization
run-time checks |
0.2 | 1 | 2015 | Safe & Efficient Gradual Typing for TypeScript · POPL 2015 |
Programming languages and type systems › type systems › gradual typing
sound gradual typing |
0.2 | 1 | 2015 | Safe & Efficient Gradual Typing for TypeScript · POPL 2015 |
Programming languages and type systems › type systems
soundness |
0.2 | 1 | 2015 | Safe & Efficient Gradual Typing for TypeScript · POPL 2015 |
Query processing and optimization › query compilation
code generation for query execution |
0.2 | 1 | 2014 | Code Generation for Efficient Query Processing in Managed Runtimes · Proc. VLDB Endow. 2014 |
Query processing and optimization › query execution
in-memory query processing |
0.2 | 1 | 2014 | Code Generation for Efficient Query Processing in Managed Runtimes · Proc. VLDB Endow. 2014 |
Query processing and optimization
query compilation |
0.2 | 1 | 2014 | Code Generation for Efficient Query Processing in Managed Runtimes · Proc. VLDB Endow. 2014 |
Program verification › program logic
separation logic |
0.1 | 2 | 2008 | Separation logic, abstraction and inheritance · POPL 2008 Separation logic and abstraction · POPL 2005 |
Software maintenance and evolution
dynamic software updating |
0.1 | 2 | 2007 | Mutatis Mutandis: Safe and predictable dynamic software updating · ACM Trans. Program. Lang. Syst. 2007 Mutatis mutandis: safe and predictable dynamic software updating · POPL 2005 |
Data models and query languages
impedance mismatch |
0.1 | 2 | 2007 | Lost in translation: formalizing proposed extensions to c# · OOPSLA 2007 LINQ: reconciling object, relations and XML in the .NET framework · SIGMOD Conference 2006 |
Programming languages and type systems
inheritance |
0.1 | 1 | 2008 | Separation logic, abstraction and inheritance · POPL 2008 |
Programming languages and type systems
object-oriented programming |
0.1 | 1 | 2008 | Separation logic, abstraction and inheritance · POPL 2008 |
Programming languages and type systems › language design
language extension |
0.1 | 1 | 2007 | Lost in translation: formalizing proposed extensions to c# · OOPSLA 2007 |
Program analysis
static analysis |
0.1 | 1 | 2007 | Mutatis Mutandis: Safe and predictable dynamic software updating · ACM Trans. Program. Lang. Syst. 2007 |
Data integration and cleaning › schema mapping
object-relational mapping |
0.1 | 1 | 2006 | LINQ: reconciling object, relations and XML in the .NET framework · SIGMOD Conference 2006 |
Systems and software security
language-based security |
0.1 | 1 | 2014 | Gradual typing embedded securely in JavaScript · POPL 2014 |
Runtime systems and virtual machines
managed runtime |
0.1 | 1 | 2014 | Code Generation for Efficient Query Processing in Managed Runtimes · Proc. VLDB Endow. 2014 |
Program verification
modular verification |
0.1 | 1 | 2005 | Separation logic and abstraction · POPL 2005 |
Data models and query languages
formal semantics |
0.0 | 1 | 2003 | Formal semantics and analysis of object queries · SIGMOD Conference 2003 |
Data models and query languages › query language
object-oriented query language |
0.0 | 1 | 2003 | Formal semantics and analysis of object queries · SIGMOD Conference 2003 |
Data models and query languages
type system |
0.0 | 1 | 2003 | Formal semantics and analysis of object queries · SIGMOD Conference 2003 |
Data models and query languages
XML query languages |
0.0 | 1 | 2006 | LINQ: reconciling object, relations and XML in the .NET framework · SIGMOD Conference 2006 |
Query processing and optimization
query optimization |
0.0 | 1 | 2003 | Formal semantics and analysis of object queries · SIGMOD Conference 2003 |
Methods — techniques the papers use, named apart from their topics
query compilation · 0.4language-integrated query · 0.4simulation proof · 0.2runtime checks · 0.2formalization · 0.1static analysis · 0.1core calculus · 0.1abstract predicates · 0.1type system · 0.0operational semantics · 0.0effect system · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2017 | Self-managed collections: Off-heap memory management for scalable query-dominated collectionsabstractExplosive growth in DRAM capacities and the emergence of language-integrated query enable a new class of managed applications that perform complex query processing on huge volumes of data stored as collections of objects in the memory space of the application. While more flexible in terms of schema design and application development, this approach typically experiences sub-par query execution performance when compared to specialized systems like DBMS. To address this issue, we propose self-managed collections, which utilize off-heap memory management and dynamic query compilation to improve the performance of querying managed data through language-integrated query. We evaluate self-managed collections using both microbenchmarks and enumeration-heavy queries from the TPC-H business intelligence benchmark. Our results show that self-managed collections outperform ordinary managed collections in both query processing and memory management by up to an order of magnitude and even outperform an optimized in memory columnar database system for the vast majority of queries. Fabian Nagel, Gavin M. Bierman, Aleksandar Dragojevic, Stratis Viglas |
EDBT | 2 |
| 2015 | Safe & Efficient Gradual Typing for TypeScriptabstractCurrent proposals for adding gradual typing to JavaScript, such as Closure, TypeScript and Dart, forgo soundness to deal with issues of scale, code reuse, and popular programming patterns. We show how to address these issues in practice while retaining soundness. We design and implement a new gradual type system, prototyped for expediency as a 'Safe' compilation mode for TypeScript. Our compiler achieves soundness by enforcing stricter static checks and embedding residual runtime checks in compiled code. It emits plain JavaScript that runs on stock virtual machines. Our main theorem is a simulation that ensures that the checks introduced by Safe TypeScript (1) catch any dynamic type error, and (2) do not alter the semantics of type-safe TypeScript code. Aseem Rastogi, Nikhil Swamy, Cédric Fournet, Gavin M. Bierman, Panagiotis Vekris |
POPL | 4 |
| 2014 | Understanding TypeScript
Gavin M. Bierman, Martín Abadi, Mads Torgersen |
ECOOP | 1 |
| 2014 | Gradual typing embedded securely in JavaScriptabstractJavaScript's flexible semantics makes writing correct code hard and writing secure code extremely difficult. To address the former problem, various forms of gradual typing have been proposed, such as Closure and TypeScript. However, supporting all common programming idioms is not easy; for example, TypeScript deliberately gives up type soundness for programming convenience. In this paper, we propose a gradual type system and implementation techniques that provide important safety and security guarantees. Nikhil Swamy, Cédric Fournet, Aseem Rastogi, Karthikeyan Bhargavan, Juan Chen 0002, Pierre-Yves Strub, Gavin M. Bierman |
POPL | 7 |
| 2014 | Code Generation for Efficient Query Processing in Managed RuntimesabstractIn this paper we examine opportunities arising from the convergence of two trends in data management: in-memory database systems (imdbs), which have received renewed attention following the availability of affordable, very large main memory systems; and language-integrated query, which transparently integrates database queries with programming languages (thus addressing the famous 'impedance mismatch' problem). Language-integrated query not only gives application developers a more convenient way to query external data sources like imdbs, but also to use the same querying language to query an application's in-memory collections. The latter offers further transparency to developers as the query language and all data is represented in the data model of the host programming language. However, compared to imdbs, this additional freedom comes at a higher cost for query evaluation. Our vision is to improve in-memory query processing of application objects by introducing database technologies to managed runtimes. We focus on querying and we leverage query compilation to improve query processing on application objects. We explore different query compilation strategies and study how they improve the performance of query processing over application data. We take C# as the host programming language as it supports language-integrated query through the linq framework. Our techniques deliver significant performance improvements over the default linq implementation. Our work makes important first steps towards a future where data processing applications will commonly run on machines that can store their entire datasets in-memory, and will be written in a single programming language employing language-integrated query and imdb-inspired runtimes to provide transparent and highly efficient querying. Fabian Nagel, Gavin M. Bierman, Stratis Viglas |
Proc. VLDB Endow. | 2 |
| 2012 | Pause 'n' Play: Formalizing Asynchronous C#
Gavin M. Bierman, Claudio V. Russo, Geoffrey Mainland, Erik Meijer 0001, Mads Torgersen |
ECOOP | 1 |
| 2012 | Semantic subtyping with an SMT solverabstractAbstract We study a first-order functional language with the novel combination of the ideas of refinement type (the subset of a type to satisfy a Boolean expression) and type-test (a Boolean expression testing whether a value belongs to a type). Our core calculus can express a rich variety of typing idioms; for example, intersection, union, negation, singleton, nullable, variant, and algebraic types are all derivable. We formulate a semantics in which expressions denote terms, and types are interpreted as first-order logic formulas. Subtyping is defined as valid implication between the semantics of types. The formulas are interpreted in a specific model that we axiomatize using standard first-order theories. On this basis, we present a novel type-checking algorithm able to eliminate many dynamic tests and to detect many errors statically. The key idea is to rely on a Satisfiability Modulo Theories solver to compute subtyping efficiently. Moreover, using a satisfiability modulo theories solver allows us to show the uniqueness of normal forms for non-deterministic expressions, provide precise counterexamples when type-checking fails, detect empty types, and compute instances of types statically and at run-time. Gavin M. Bierman, Andrew D. Gordon 0001, Catalin Hritcu, David E. Langworthy |
J. Funct. Program. | 1 |
| 2012 | Extending relational algebra with similaritiesabstractIn this paper we propose various extensions to the relational model to support similarity-based querying. We build upon the -relation model, where tuples are assigned values from an arbitrary semiring , and its associated positive relational algebra $\text{RA}^{+}_{\mathcal{K}}$ . We consider a recently proposed extension to $\text{RA}^{+}_{\mathcal{K}}$ using a monus operation on the semiring to support negative queries, and show how, surprisingly, it fails for important ‘fuzzy’ semirings. Instead, we suggest using a negation operator. We also consider the identities satisfied by the relational algebra $\text{RA}^{+}_{\mathcal{K}}$ . We show that moving from a semiring to a particular form of lattice (a De Morgan frame) yields a relational algebra that satisfies all the classical (positive) relational algebra identities. We claim that to support real-world similarity queries realistically, one must move from tuple-level annotations to attribute-level annotations. We show in detail how our De Morgan frame-based model can be extended to support attribute-level annotations and give worked examples of similarity queries in this setting. Melita Hajdinjak, Gavin M. Bierman |
Math. Struct. Comput. Sci. | 2 |
| 2010 | Adding Dynamic Types to C#
Gavin M. Bierman, Erik Meijer 0001, Mads Torgersen |
ECOOP | 1 |
| 2010 | Semantic subtyping with an SMT solverabstractWe study a first-order functional language with the novel combination of the ideas of refinement type (the subset of a type to satisfy a Boolean expression) and type-test (a Boolean expression testing whether a value belongs to a type). Our core calculus can express a rich variety of typing idioms; for example, intersection, union, negation, singleton, nullable, variant, and algebraic types are all derivable. We formulate a semantics in which expressions denote terms, and types are interpreted as first-order logic formulas. Subtyping is defined as valid implication between the semantics of types. The formulas are interpreted in a specific model that we axiomatize using standard first-order theories. On this basis, we present a novel type-checking algorithm able to eliminate many dynamic tests and to detect many errors statically. The key idea is to rely on an SMT solver to compute subtyping efficiently. Moreover, interpreting types as formulas allows us to call the SMT solver at run-time to compute instances of types. Gavin M. Bierman, Andrew D. Gordon 0001, Catalin Hritcu, David E. Langworthy |
ICFP | 1 |
| 2009 | A theory of typed coercions and its applicationsabstractA number of important program rewriting scenarios can be recast as type-directed coercion insertion. These range from more theoretical applications such as coercive subtyping and supporting overloading in type theories, to more practical applications such as integrating static and dynamically typed code using gradual typing, and inlining code to enforce security policies such as access control and provenance tracking. In this paper we give a general theory of type-directed coercion insertion. We specifically explore the inherent tradeoff between expressiveness and ambiguity--the more powerful the strategy for generating coercions, the greater the possibility of several, semantically distinct rewritings for a given program. We consider increasingly powerful coercion generation strategies, work out example applications supported by the increased power (including those mentioned above), and identify the inherent ambiguity problems of each setting, along with various techniques to tame the ambiguities. Nikhil Swamy, Michael Hicks 0001, Gavin M. Bierman |
ICFP | 3 |
| 2008 | UpgradeJ: Incremental Typechecking for Class Upgrades
Gavin M. Bierman, Matthew J. Parkinson, James Noble 0001 |
ECOOP | 1 |
| 2008 | Separation logic, abstraction and inheritanceabstractInheritance is a fundamental concept in object-oriented programming, allowing new classes to be defined in terms of old classes. When used with care, inheritance is an essential tool for object-oriented programmers. Thus, for those interested in developing formal verification techniques, the treatment of inheritance is of paramount importance. Unfortunately, inheritance comes in a number of guises, all requiring subtle techniques. Matthew J. Parkinson, Gavin M. Bierman |
POPL | 2 |
| 2008 | Information systems preface
Gavin M. Bierman, Christoph Koch 0001 |
Inf. Syst. | 1 |
| 2008 | Dynamic rebinding for marshalling and update, via redex-time and destruct-time reductionabstractAbstract Most programming languages adopt static binding, but for distributed programming an exclusive reliance on static binding is too restrictive: dynamic binding is required in various guises, for example, when a marshalled value is received from the network, containing identifiers that must be rebound to local resources. Typically, it is provided only by ad hoc mechanisms that lack clean semantics. In this paper, we adopt a foundational approach, developing core dynamic rebinding mechanisms as extensions to the simply typed call-by-value λ calculus. To do so, we must first explore refinements of the call-by-value reduction strategy that delay instantiation, to ensure computations make use of the most recent versions of rebound definitions. We introduce redex - time and destruct - time strategies. The latter forms the basis for a λ marsh calculus that supports dynamic rebinding of marshalled values, while remaining as far as possible statically typed. We sketch an extension of λ marsh with concurrency and communication, giving examples showing how wrappers for encapsulating untrusted code can be expressed. Finally, we show that a high-level semantics for dynamic updating can also be based on the destruct-time strategy, defining a λ update calculus with simple primitives to provide type-safe updating of running code. We show how the ideas of this simple calculus extend to more real-world, module-level dynamic updating in the style of Erlang. We thereby establish primitives and a common semantic foundation for a variety of real-world dynamic rebinding requirements. Peter Sewell, Gareth Paul Stoyle, Michael Hicks 0001, Gavin M. Bierman, Keith Wansbrough |
J. Funct. Program. | 4 |
| 2007 | Lost in translation: formalizing proposed extensions to c#abstractCurrent real-world software applications typically involve heavy use of relational and XML data and their query languages. Unfortunately object-oriented languages and database query languages are based on different semantic foundations and optimization strategies. The resulting ''ROX (Relations, Objects, XML) impedance mismatc'' makes life very difficult for developers. Gavin M. Bierman, Erik Meijer 0001, Mads Torgersen |
OOPSLA | 1 |
| 2007 | Mutatis Mutandis: Safe and predictable dynamic software updatingabstractThis article presents Proteus, a core calculus that models dynamic software updating, a service for fixing bugs and adding features to a running program. Proteus permits a program's type structure to change dynamically but guarantees the updated program remains type-correct by ensuring a property we call con-freeness. We show how con-freeness can be enforced dynamically, and how it can be approximated via a novel static analysis. This analysis can be used to assess the implications of a program's structure on future updates in order to make update success more predictable. We have implemented Proteus for C, and briefly discuss our implementation which we have tested on several well-known programs. Gareth Paul Stoyle, Michael Hicks 0001, Gavin M. Bierman, Peter Sewell, Iulian Neamtiu |
ACM Trans. Program. Lang. Syst. | 3 |
| 2006 | LINQ: reconciling object, relations and XML in the .NET frameworkabstractMany software applications today need to handle data from different data models; typically objects from the host programming language along with the relational and XML data models. The ROX impedance mismatch makes programs awkward to write and hard to maintain.The .NET Language-Integrated Query (LINQ) framework, proposed for the next release of the .NET framework, approaches this problem by defining a pattern of general-purpose standard query operators for traversal, filter, and projection. Based on this pattern, any .NET language can define special query comprehension syntax that is subsequently compiled into these standard operators (our code examples are in VB).Besides the general query operators, the LINQ framework also defines two domain specific APIs that work over XML (XLinq) and relational data (DLinq) respectively. The operators over XML use a lightweight and easy to use in-memory XML representation to provide XQuery-style expressiveness in the host programming language. The operators over relational data provide a simple OR mapping by leveraging remotable queries that are executed directly in the back-end relational store. Erik Meijer 0001, Brian Beckman, Gavin M. Bierman |
SIGMOD Conference | 3 |
| 2005 | The Essence of Data Access in Comega
Gavin M. Bierman, Erik Meijer 0001, Wolfram Schulte |
ECOOP | 1 |
| 2005 | First-Class Relationships in an Object-Oriented Language
Gavin M. Bierman, Alisdair Stuart Wren |
ECOOP | 1 |
| 2005 | Separation logic and abstractionabstractIn this paper we address the problem of writing specifications for programs that use various forms of modularity, including procedures and Java-like classes. We build on the formalism of separation logic and introduce the new notion of an abstract predicate and, more generally, abstract predicate families. This provides a flexible mechanism for reasoning about the different forms of abstraction found in modern programming languages, such as abstract datatypes and objects. As well as demonstrating the soundness of our proof system, we illustrate its utility with a series of examples. Matthew J. Parkinson, Gavin M. Bierman |
POPL | 2 |
| 2005 | Mutatis mutandis: safe and predictable dynamic software updatingabstractDynamic software updates can be used to fix bugs or add features to a running program without downtime. Essential for some applications and convenient for others, low-level dynamic updating has been used for many years. Perhaps surprisingly, there is little high-level understanding or language support to help programmers write dynamic updates effectively.To bridge this gap, we present Proteus, a core calculus for dynamic software updating in C-like languages that is flexible, safe, and predictable. Proteus supports dynamic updates to functions (even active ones), to named types and to data, allowing on-line evolution to match source-code evolution as we have observed it in practice. We ensure updates are type-safe by checking for a property we call "con-freeness" for updated types t at the point of update. This means that non-updated code will not use t concretely beyond that point (concrete usages are via explicit coercions) and thus t's representation can safely change. We show how con-freeness can be enforced dynamically for a particular program state. We additionally define a novel and efficient static updateability analysis to establish con-freeness statically, and can thus automatically infer program points at which all future (well-formed) updates will be type-safe. We have implemented our analysis for C and tested it on several well-known programs. Gareth Paul Stoyle, Michael Hicks 0001, Gavin M. Bierman, Peter Sewell, Iulian Neamtiu |
POPL | 3 |
| 2003 | Dynamic rebinding for marshalling and update, with destruct-time?abstractMost programming languages adopt static binding, but for distributed programming an exclusive reliance on static binding is too restrictive: dynamic binding is required in various guises, for example when a marshalled value is received from the network, containing identifiers that must be rebound to local resources. Typically it is provided only by ad-hoc mechanisms that lack clean semantics.In this paper we adopt a foundational approach, developing core dynamic rebinding mechanisms as extensions to simply-typed call-by-value ? -calculus. To do so we must first explore refinements of the call-by-value reduction strategy that delay instantiation, to ensure computations make use of the most recent versions of rebound definitions. We introduce redex-time and destruct-time strategies. The latter forms the basis for a ?marsh calculus that supports dynamic rebinding of marshalled values, while remaining as far as possible statically-typed. We sketch an extension of ? marsh with concurrency and communication, giving examples showing how wrappers for encapsulating untrusted code can be expressed. Finally, we show that a high-level semantics for dynamic updating can also be based on the destruct-time strategy, defining a ?marsh calculus with simple primitives to provide type-safe updating of running code. We thereby establish primitives and a common semantic foundation for a variety of real-world dynamic rebinding requirements. Gavin M. Bierman, Michael Hicks 0001, Peter Sewell, Gareth Paul Stoyle, Keith Wansbrough |
ICFP | 1 |
| 2003 | Formal semantics and analysis of object queriesabstractModern database systems provide not only powerful data models but also complex query languages supporting powerful features such as the ability to create new database objects and invocation of arbitrary methods (possibly written in a third-party programming language).In this sense query languages have evolved into powerful programming languages. Surprisingly little work exists utilizing techniques from programming language research to specify and analyse these query languages. This paper provides a formal, high-level operational semantics for a complex-value OQL-like query language that can create fresh database objects, and invoke external methods. We define a type system for our query language and prove an important soundness property.We define a simple effect typing discipline to delimit the computational effects within our queries. We prove that this effect system is correct and show how it can be used to detect cases of non-determinism and to define correct query optimizations. Gavin M. Bierman |
SIGMOD Conference | 1 |
| 2001 | Strong Normalisation of Cut-Elimination in Classical Logic
Christian Urban, Gavin M. Bierman |
Fundam. Informaticae | 2 |
| 2000 | Program equivalence in a linear functional languageabstractResearchers have recently proposed that for certain applications it is advantageous to use functional languages whose type systems are based upon linear logic: so-called linear functional languages. In this paper we develop reasoning techniques for programs in a linear functional language, linPCF , based on their operational behaviour. The principal theorem of this paper is to show that contextual equivalence of linPCF programs can be characterised coinductively. This characterisation provides a tractable method for reasoning about contextual equivalence, and is used in three ways: [bull ] A number of useful contextual equivalences between linPCF programs is given. [bull ] A notion of type isomorphism with respect to contextual equivalence, called operational isomorphism, is given. In particular the types !ϕ[otimes ]!ψ and !(ϕ&ψ) are proved to be operationally isomorphic. [bull ] A translation of non-strict PCF into linPCF is shown to be adequate, but not fully abstract, with respect to contextual equivalence. Gavin M. Bierman |
J. Funct. Program. | 1 |
| 1999 | A Classical Linear lambda-Calculus
Gavin M. Bierman |
Theor. Comput. Sci. | 1 |
| 1998 | A Computational Interpretation of the lambda-µ-Calculus
Gavin M. Bierman |
MFCS | 1 |
| 1998 | Computational Types from a Logical PerspectiveabstractMoggi's computational lambda calculus is a metalanguage for denotational semantics which arose from the observation that many different notions of computation have the categorical structure of a strong monad on a cartesian closed category. In this paper we show that the computational lambda calculus also arises naturally as the term calculus corresponding (by the Curry–Howard correspondence) to a novel intuitionistic modal propositional logic. We give natural deduction, sequent calculus and Hilbert-style presentations of this logic and prove strong normalisation and confluence results. Nick Benton, Gavin M. Bierman, Valeria de Paiva |
J. Funct. Program. | 2 |
| 1996 | A Note on Full Intuitionistic Linear Logic
Gavin M. Bierman |
Ann. Pure Appl. Log. | 1 |