Reference. The Essence of Generalized Algebraic Data Types
This paper considers direct encodings of generalized algebraic data types (GADTs) in a minimal suitable lambda-calculus. To this end, we develop an extension of System with recursive types and internalized type equalities with injective constant type constructors. We show how GADTs and associated pattern-matching constructs can be directly expressed in the calculus, thus showing that it may be treated as a highly idealized modern functional programming language. We prove that the internalized type equalities in conjunction with injectivity rules increase the expressive power of the calculus by establishing a non-macro-expressibility result in , and prove the system type-sound via a syntactic argument. Finally, we build two relational models of our calculus: a simple, unary model that illustrates a novel, two-stage interpretation technique, necessary to account for the equational constraints; and a more sophisticated, binary model that relaxes the construction to allow, for the first time, formal reasoning about data-abstraction in a calculus equipped with GADTs.
Cite
Cites 38 works (4 here)
With notes (4)
Semantic analysis of normalisation by evaluation for typed lambda calculus fiore-2022-semantic
This paper studies normalisation by evaluation for typed lambda calculus from a categorical and algebraic viewpoint. The first part of the paper analyses the lambda definability result of Jung and Tiuryn via Kripke logical relations and shows how it can be adapted to unify definability and normalisation, yielding an extensional normalisation result. In the second part of the paper, the analysis is refined further by considering intensional Kripke relations (in the form of Artin–Wraith glueing) and shown to provide a function for normalising terms, casting normalisation by evaluation in the context of categorical glueing. The technical development includes an algebraic treatment of the syntax and semantics of the typed lambda calculus that allows the definition of the normalisation function to be given within a simply typed metatheory. A normalisation-by-evaluation program in a dependently typed functional programming language is synthesised.
Iris from the ground up: A modular foundation for higher-order concurrent separation logic jung_etal_iris_ground_up_2018
Iris is a framework for higher-order concurrent separation logic, which has been implemented in the Coq proof assistant and deployed very effectively in a wide variety of verification projects. Iris was designed with the express goal of simplifying and consolidating the foundations of modern separation logics, but it has evolved over time, and the design and semantic foundations of Iris itself have yet to be fully written down and explained together properly in one place. Here, we attempt to fill this gap, presenting a reasonably complete picture of the latest version of Iris (version 3.1), from first principles and in one coherent narrative.
Type-and-scope safe programs and their proofs allais-2017-type
Abstract syntax and variable binding fiore_etal_nd
We develop a theory of abstract syntax with variable binding. To every binding signature we associate a category of models consisting of variable sets endowed with compatible algebra and substitution structures. The syntax generated by the signature is the initial model. This gives a notion of initial algebra semantics encompassing the traditional one; besides compositionality, it automatically verifies the semantic substitution lemma.
External (34)
- The Essence of Generalized Algebraic Data Types (artifact) (2023)
- How Functorial Are (Deep) GADTs? (2022)
- (Deep) induction rules for GADTs (2022)
- GADTs, Functoriality, Parametricity: Pick Two (2022)
- PARAMETRICITY FOR PRIMITIVE NESTED TYPES AND GADTS (2021)
- Sound and complete bidirectional typechecking for higher-rank polymorphism with existentials and indexed types (2019)
- Guarded Computational Type Theory (2018)
- IxFree: Step-indexed logical relations in Coq (2017)
- System FC with explicit kind equality (2013)
- Relational Parametricity for Higher Kinds (2012)
- Logical Step-Indexed Logical Relations (2011)
- Parametricity, type equality, and higher-order polymorphism (2010)
- Foundations for structured programming with GADTs (2008)
- Meta-programming With Built-in Type Equality (2008)
- System F with type equality coercions (2007)
- Simple unification-based type inference for GADTs (2006)
- Stratified type inference for generalized algebraic data types (2006)
- Modelling environments in call-by-value programming languages (2003)
- Guarded recursive datatype constructors (2003)
- First-Class Phantom Types (2003)
- Types and Programming Languages (2002)
- Nested datatypes (1998)
- Type-directed partial evaluation (1996)
- Categorical data types in parametric polymorphism (1994)
- Reflexive graphs and parametric polymorphism (1994)
- Definitional reflection and the completion (1994)
- A Syntactic Approach to Type Soundness (1994)
- Lambda Calculi with Types (1993)
- Inductive definitions in the system Coq - rules and properties (1993)
- Sheaves in geometry and logic: a first introduction to topos theory (1992)
- A Fixpoint Theorem in Linear Logic (1992)
- An inverse of the evaluation functional for typed lambda-calculus (1991)
- On the expressive power of programming languages (1991)
- Theorems for free! (1989)