Reference. Substructural Parametricity
Ordered, linear, and other substructural type systems allow us to expose deep properties of programs at the syntactic level of types. In this paper, we develop a family of unary logical relations that allow us to prove consequences of parametricity for a range of substructural type systems. A key idea is to parameterize the relation by an algebra, which we exemplify with a monoid and commutative monoid to interpret ordered and linear type systems, respectively. We prove the fundamental theorem of logical relations and apply it to deduce extensional properties of inhabitants of certain types. Examples include demonstrating that the ordered types for list append and reversal are inhabited by exactly one function, as are types of some tree traversals. Similarly, the linear type of the identity function on lists is inhabited only by permutations of the input. Our most advanced example shows that the ordered type of the list fold function is inhabited only by the fold function.
Cite
Cited by (1)
Ordered Adjoint Logic roshal-2026-ordered
Ordered logics and type systems have been used in a variety of applications including computational linguistics, memory allocation, stream processing, logical frameworks, parametricity, and enforcing security protocols. In most formulations, ordered types are also linear, requiring each resource to be used exactly once. Prior work by Kanovich et al. has investigated calculi that relax this constraint through subexponentials within a linear ordered logic. We generalize their work by using adjoint modalities to combine logics with varying fine-grained structural properties, including weakening, left contraction, right contraction, left mobility, and right mobility. We show that the resulting sequent calculus admits cut elimination. We further provide a natural deduction formulation in which structural rules are implicit, and show that proof checking for this system is decidable. This makes it a suitable foundation for an expressive adjoint programming language or logical framework.
Cites 47 works (9 here)
With notes (9)
Adjoint Natural Deduction jang-2024-adjoint
Adjoint logic is a general approach to combining multiple logics with different structural properties, including linear, affine, strict, and (ordinary) intuitionistic logics, where each proposition has an intrinsic mode of truth. It has been defined in the form of a sequent calculus because the central concept of independence is most clearly understood in this form, and because it permits a proof of cut elimination following standard techniques. In this paper we present a natural deduction formulation of adjoint logic and show how it is related to the sequent calculus. As a consequence, every provable proposition has a verification (sometimes called a long normal form). We also give a computational interpretation of adjoint logic in the form of a functional language and prove properties of computations that derive from the structure of modes, including freedom from garbage (for modes without weakening and contraction), strictness (for modes disallowing weakening), and erasure (based on a preorder between modes). Finally, we present a surprisingly subtle algorithm for type checking.
Verus: Verifying Rust Programs using Linear Ghost Types lattuada-2023-verus
The Rust programming language provides a powerful type system that checks linearity and borrowing, allowing code to safely manipulate memory without garbage collection and making Rust ideal for developing low-level, high-assurance systems. For such systems, formal verification can be useful to prove functional correctness properties beyond type safety. This paper presents Verus, an SMT-based tool for formally verifying Rust programs. With Verus, programmers express proofs and specifications using the Rust language, allowing proofs to take advantage of Rust’s linear types and borrow checking. We show how this allows proofs to manipulate linearly typed permissions that let Rust code safely manipulate memory, pointers, and concurrent resources. Verus organizes proofs and specifications using a novel mode system that distinguishes specifications, which are not checked for linearity and borrowing, from executable code and proofs, which are checked for linearity and borrowing. We formalize Verus’ linearity, borrowing, and modes in a small lambda calculus, for which we prove type safety and termination of specifications and proofs. We demonstrate Verus on a series of examples, including pointer-manipulating code (an xor-based doubly linked list), code with interior mutability, and concurrent code.
Relating Message Passing and Shared Memory, Proof-Theoretically pfenning-2023-relating
Syntax and Semantics of Quantitative Type Theory atkey-2018-syntax
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.
Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning jung-2015-iris
Session Types as Intuitionistic Linear Propositions caires-2010-session
The logic of bunched implications ohearn_pym_bi_1999
We introduce a logic BI in which a multiplicative (or linear) and an additive (or intuitionistic) implication live side-by-side. The propositional version of BI arises from an analysis of the proof-theoretic relationship between conjunction and implication; it can be viewed as a merging of intuitionistic logic and multiplicative intuitionistic linear logic. The naturality of BI can be seen categorically: models of propositional BI’s proofs are given by bicartesian doubly closed categories, i.e., categories which freely combine the semantics of propositional intuitionistic logic and propositional multiplicative intuitionistic linear logic. The predicate version of BI includes, in addition to standard additive quantifiers, multiplicative (or intensional) quantifiers [inline image] and [inline image] which arise from observing restrictions on structural rules on the level of terms as well as propositions. We discuss computational interpretations, based on sharing, at both the propositional and predicate levels.
External (38)
- Data race freedom à la mode (2025)
- A mixed linear and graded logic: Proofs, terms, and models (2025)
- Regrading policies for flexible information flow control in session-typed concurrency (artifact) (2024)
- The functional essence of imperative binary search trees (2024)
- Information flow control in cyclic process networks (2024)
- Logical relations for session-typed concurrency (2023)
- FP2 : Fully in-place functional programming (2023)
- Theorems for free from separation logic specifications (2021)
- Session logical relations for noninterference (2021)
- A unified view of modalities in type systems (2020)
- Linear dependent type theory for quantum programming languages (2020)
- Context constrained computation (2018)
- A logical framework with commutative and non-commutative subexponentials (2018)
- Adjoint logic and its concurrent operational interpretation (2018)
- Well-founded recursion with copatterns and sized types (2016)
- Linear logical relations and observational equivalences for session-based concurrency (2014)
- Behavioral polymorphism and parametricity in session-based communication (2013)
- Termination in session-based concurrency via linear logical relations (2012)
- Linear type theory for asynchronous session types (2010)
- A constructive approach to the resource semantics of substructural logics (2010)
- Relational parametricity for a polymorphic linear lambda calculus (2010)
- State-dependent representation independence (2009)
- A Hybrid Logical Framework (2009)
- Contextual modal type theory (2008)
- L3 : a linear language with locations (2007)
- Hybridizing a logical framework (2007)
- A step-indexed model of substructural state (2005)
- Kripke semantics for modal substructural logics (2002)
- Ordered Linear Logic and Applications (2001)
- Fundamental concepts in programming languages (2000)
- Natural deduction for intuitionistic non-commutative linear logic (1999)
- Relational semantics and a relational proof system for full Lambek calculus (1998)
- A mixed linear and non-linear logic: Proofs, terms and models (1994)
- Theorems for free! (1989)
- Linear logic and lazy computation (1987)
- Natural semantics (1987)
- Representation independence and data abstraction (1986)
- Types, abstraction, and parametric polymorphism (1983)