Reference. Call-By-Push-Value: A Functional/Imperative Synthesis
Cite
Cited by (24)
Syntax and semantics of focalisation with relative monads and comonads mangel-2026-syntax
Commuting Conversions and Join Points for Call-by-Push-Value chan-2026-commuting
Classical Notions of Computation and the Hasegawa-Thielecke Theorem mangel-2026-classical
Mechanizing Synthetic Tait Computability in Istari li_etal_2025
Modular abstract syntax trees (MAST): substitution tensors with second-class sorts fiore-2025-modular
Logical relations for call-by-push-value models, via internal fibrations in a 2-category amorim_kura_saville_2025
We give a denotational account of logical relations for call-by-push-value (CBPV) in the fibrational style of Hermida, Jacobs, Katsumata and others. Fibrations – which axiomatise the usual notion of sets-with-relations – provide a clean framework for constructing new, logical relations-style, models. Such models can then be used to study properties such as effect simulation.
Extending this picture to CBPV is challenging: the models incorporate both adjunctions and enrichment, making the appropriate notion of fibration unclear. We handle this using 2-category theory. We identify an appropriate 2-category, and define CBPV fibrations to be fibrations internal to this 2-category which strictly preserve the CBPV semantics.
Next, we develop the theory so it parallels the classical setting. We give versions of the codomain and subobject fibrations, and show that new models can be constructed from old ones by pullback. The resulting framework enables the construction of new, logical relations-style, models for CBPV.
Finally, we demonstrate the utility of our approach with particular examples. These include a generalisation of Katsumata’s -lifting to CBPV models, an effect simulation result, and a relative full completeness result for CBPV without sum types.
Cost-sensitive computational adequacy of higher-order recursion in synthetic domain theory niu-2024-cost
Decalf: A Directed, Effectful Cost-Aware Logical Framework grodin-2024-decalf
Towards Univalent Reference Types: The Impact of Univalence on Denotational Semantics sterling-2024-towards
LNL polycategories and doctrines of linear logic shulman-2023-lnl
A cost-aware logical framework niu-2022-a
An Algebraic Theory for Shared-State Concurrency dvir-2022-an
Structured Handling of Scoped Effects yang-2022-structured
Logical Relations as Types: Proof-Relevant Parametricity for Program Modules sterling_harper_2021
The theory of program modules is of interest to language designers not only for its practical importance to programming, but also because it lies at the nexus of three fundamental concerns in language design: the phase distinction, computational effects, and type abstraction. We contribute a fresh “synthetic” take on program modules that treats modules as the fundamental constructs, in which the usual suspects of prior module calculi (kinds, constructors, dynamic programs) are rendered as derived notions in terms of a modal type-theoretic account of the phase distinction. We simplify the account of type abstraction (embodied in the generativity of module functors) through a lax modality that encapsulates computational effects, placing projectibility of module expressions on a type-theoretic basis.
Our main result is a (significant) proof-relevant and phase-sensitive generalization of the Reynolds abstraction theorem for a calculus of program modules, based on a new kind of logical relation called a parametricity structure. Parametricity structures generalize the proof-irrelevant relations of classical parametricity to proof-relevant families, where there may be non-trivial evidence witnessing the relatedness of two programs—simplifying the metatheory of strong sums over the collection of types, for although there can be no “relation classifying relations,” one easily accommodates a “family classifying small families.”
Using the insight that logical relations/parametricity is itself a form of phase distinction between the syntactic and the semantic, we contribute a new synthetic approach to phase separated parametricity based on the slogan logical relations as types, by iterating our modal account of the phase distinction. We axiomatize a dependent type theory of parametricity structures using two pairs of complementary modalities (syntactic, semantic) and (static, dynamic), substantiated using the topos theoretic Artin gluing construction. Then, to construct a simulation between two implementations of an abstract type, one simply programs a third implementation whose type component carries the representation invariant.
Gradual Type Theory new_licata_ahmed_2021
A Semantic Foundation for Sound Gradual Typing new_dissertation_2020
Graduality and Parametricity: Together Again for the First Time new_jamner_ahmed_2020
Parametric polymorphism and gradual typing have proven to be a difficult combination, with no language yet produced that satisfies the fundamental theorems of each: parametricity and graduality. Notably, Toro, Labrada, and Tanter (POPL 2019) conjecture that for any gradual extension of System F that uses dynamic type generation, graduality and parametricity are “simply incompatible”. However, we argue that it is not graduality and parametricity that are incompatible per se, but instead that combining the syntax of System F with dynamic type generation as in previous work necessitates type-directed computation, which we show has been a common source of graduality and parametricity violations in previous work.
We then show that by modifying the syntax of universal and existential types to make the type name generation explicit, we remove the need for type-directed computation, and get a language that satisfies both graduality and parametricity theorems. The language has a simple runtime semantics, which can be explained by translation to a statically typed language where the dynamic type is interpreted as a dynamically extensible sum type. Far from being in conflict, we show that the parametricity theorem follows as a direct corollary of a relational interpretation of the graduality property.
On the expressive power of user-defined effects: Effect handlers, monadic reflection, delimited control forster-2019-on
Gradual Type Theory new_licata_ahmed_2019
Gradually typed languages are designed to support both dynamically typed and statically typed programming styles while preserving the benefits of each. While existing gradual type soundness theorems for these languages aim to show that type-based reasoning is preserved when moving from the fully static setting to a gradual one, these theorems do not imply that correctness of type-based refactorings and optimizations is preserved. Establishing correctness of program transformations is technically difficult, because it requires reasoning about program equivalence, and is often neglected in the metatheory of gradual languages.
In this paper, we propose an axiomatic account of program equivalence in a gradual cast calculus, which we formalize in a logic we call gradual type theory (GTT). Based on Levy’s call-by-push-value, GTT gives an axiomatic account of both call-by-value and call-by-name gradual languages. Based on our axiomatic account we prove many theorems that justify optimizations and refactorings in gradually typed languages. For example, uniqueness principles for gradual type connectives show that if the βη laws hold for a connective, then casts between that connective must be equivalent to the so-called “lazy” cast semantics. Contrapositively, this shows that “eager” cast semantics violates the extensionality of function types. As another example, we show that gradual upcasts are pure functions and, dually, gradual downcasts are strict functions. We show the consistency and applicability of our axiomatic theory by proving that a contract-based implementation using the lazy cast semantics gives a logical relations model of our type theory, where equivalence in GTT implies contextual equivalence of the programs. Since GTT also axiomatizes the dynamic gradual guarantee, our model also establishes this central theorem of gradual typing. The model is parametrized by the implementation of the dynamic types, and so gives a family of implementations that validate type-based optimization and the gradual guarantee.
Resource Polymorphism munchmaccagnoni-2018-resource
Polarised Intermediate Representation of Lambda Calculus with Sums munchmaccagnoni-2015-polarised
Integrating Linear and Dependent Types krishnaswami_integrating_2015
Algebraic foundations for effect-dependent optimisations kammar-2012-algebraic
The Duality of Computation under Focus curien-2010-the
Cites 64 works (2 here)
With notes (2)
Linear logic girard_linear_1987
Abstract syntax and variable binding fiore_etal_nd
External (62)
- The Lazy Lambda Calculus: an investigation into the foundations of functional programming (2021)
- λμ-Calculus: An algorithmic interpretation of classical natural deduction (2005)
- Computational lambda-calculus and monads (2003)
- A fully abstract game semantics for finite nondeterminism (2003)
- Full abstraction and universality via realisability (2003)
- A fully abstract game semantics for general references (2002)
- Full abstraction for functional languages with control (2002)
- Linear logic, monads and the lambda calculus (2002)
- Game semantics and abstract machines (2002)
- On Full Abstraction for PCF: I, II, and III (2000)
- A fully abstract model for sequential computation (2000)
- Logical Full Abstraction and PCF (2000)
- Abstract Models of Storage (2000)
- A fully abstract semantics for a higher-order functional language with nondeterministic computation (1999)
- A Semantic analysis of control (1999)
- Call-by-value games (1998)
- Games and Full Abstraction for a Functional Metalanguage with Recursive Types (1998)
- Semantics of dynamic variables in Algol-like languages (1998)
- Premonoidal categories and notions of computation (1997)
- The Essence of Algol (1997)
- Linearity, Sharing and State: A Fully Abstract Game Semantics for Idealized Algol with Active Expressions (1997)
- Environments, continuation semantics and indexed categories (1997)
- Game theoretic analysis of call-by-value computation (1997)
- Continuation Semantics and Self-adjointness (1997)
- Categorical Structure of Continuation Passing Style (1997)
- Games and Definability For FPC (1997)
- Thunks and the λ-calculus (1997)
- Relational Properties of Domains (1996)
- Sound and complete axiomatisations of call-by-value control operators (1995)
- Parametricity and local variables (1995)
- Mathematical Theory of Domains (1994)
- Categories for Types (1994)
- Full Abstraction for PCF (extended abstract) (1994)
- A functional theory of local names (1994)
- Names and higher-order functions (1994)
- Back to direct style (1994)
- Introduction to extensive and distributive categories (1993)
- Reasoning about programs in continuation-passing style (1993)
- Observable properties of higher order functions that dynamically create local names, or: What's new? (1993)
- Introduction to distributive categories (1993)
- Games and full Completeness for multiplicative Linear Logic (1992)
- Recursive types in Kleisli categories (1992)
- Notions of computation and monads (1991)
- Compiling with Continuations (1991)
- Semantics of programming languages (1991)
- Algebraically complete categories (1991)
- Typing first-class continuations in ML (1991)
- The lazy lambda calculus (1990)
- Extracting constructive content from classical proofs (1990)
- A formulae-as-type notion of control (1990)
- Continuation-passing, closure-passing style (1989)
- Non-well-founded sets (1988)
- Domains for denotational semantics (1982)
- The Category-Theoretic Solution of Recursive Domain Equations (1982)
- A category-theoretic approach to the semantics of programming languages (1982)
- The Semantics of Call-By-Value and Call-By-Name in a Nondeterministic Environment (1980)
- A mathematical semantics for a nondeterministic typed λ-calculus (1980)
- Classically and intuitionistically provably recursive functions (1978)
- Rabbit: A Compiler for Scheme (1978)
- The Relation between Computational and Denotational Properties for Scott’s $\text{D}_\infty $-Models of the Lambda-Calculus (1976)
- The Mechanical Evaluation of Expressions (1964)
- Thunks (1961)