Reference. CN: Verifying Systems C Code with Separation-Logic Refinement Types
Cite
Cited by (2)
Code-Specify-Test-Debug-Prove: Flexibly Integrating Separation Logic Specification into Conventional Workflows aamer-2026-code
Fulminate: Testing CN Separation-Logic Specifications in C banerjee-2025-fulminate
Cites 58 works (5 here)
With notes (5)
Iris from the ground up: A modular foundation for higher-order concurrent separation logic jung_etal_iris_ground_up_2018
Functors are type refinement systems mellies_zeilberger_2015
The standard reading of type theory through the lens of category theory is based on the idea of viewing a type system as a category of well-typed terms. We propose a basic revision of this reading: rather than interpreting type systems as categories, we describe them as functors from a category of typing derivations to a category of underlying terms. Then, turning this around, we explain how in fact any functor gives rise to a generalized type system, with an abstract notion of typing judgment, typing derivations and typing rules. This leads to a purely categorical reformulation of various natural classes of type systems as natural classes of functors.
The main purpose of this paper is to describe the general framework (which can also be seen as providing a categorical analysis of refinement types), and to present a few applications. As a larger case study, we revisit Reynolds’ paper on “The Meaning of Types” (2000), showing how the paper’s main results may be reconstructed along these lines.
CakeML: A verified implementation of ML kumar_cakeml_2014
Separation logic: A logic for shared mutable data structures reynolds_separation_2002
Linear logic girard_linear_1987
External (53)
- Android 13 Release Notes (2022)
- RefinedC formalisation of the early allocator (2022)
- Developing With Formal Methods at BedRock Systems, Inc (2022)
- Islaris: verification of machine code against authoritative ISA semantics (2022)
- VIP: verifying real-world C idioms with integer-pointer casts (2022)
- The Prusti Project: Formal Verification for Rust (2022)
- Data for "CN: Verifying Systems C Code with Separation-Logic Refinement Types" (2022)
- The dogged pursuit of bug-free C programs: the Frama-C software analysis platform (2021)
- Gillian: A Multi-Language Platform for Unified Symbolic Analysis (2021)
- Cogent: uniqueness types and certifying compilation (2021)
- RefinedC: automating the foundational verification of C code with refined ownership types (2021)
- A Secure and Formally Verified Linux KVM Hypervisor (2021)
- Formal Verification of a Multiprocessor Hypervisor on Arm Relaxed Memory Hardware (2021)
- seL4 in Australia: from research to real-world trustworthy systems (2020)
- Virtualisation for the Masses: Exposing KVM on Android (KVM Forum slides) (2020)
- KVM for Android (2020)
- Exploring C semantics and pointer provenance (2019)
- Semi-automated Reasoning About Non-determinism in C Expressions (2019)
- VST-Floyd: A Separation Logic Tool to Verify Correctness of C Programs (2018)
- Viper: A Verification Infrastructure for Permission-Based Reasoning (2017)
- Model checking for symbolic-heap separation logic with inductive predicates (2016)
- CertiKOS: An Extensible Architecture for Building Certified Concurrent OS Kernels (2016)
- Provably secure memory isolation for Linux on ARM: Submission to special issue on Verified Information Flow Security (2016)
- A Formal C Memory Model for Separation Logic (2016)
- Dependent types and multi-monadic effects in F* (2016)
- Into the depths of C: elaborating the de facto standards (2016)
- A new verified compiler backend for CakeML (2016)
- Automatic Verification of Iterated Separating Conjunctions Using Symbolic Execution (2016)
- Verified compilation of CakeML to multiple machine-code targets (2016)
- A high assurance virtualization platform for ARMv8 (2016)
- The C Standard Formalized in Coq (PhD thesis, Radboud University Nijmegen) (2015)
- Program Logics for Certified Compilers (2014)
- Ironclad Apps: End-to-End Security via Automated Full-System Verification (2014)
- Comprehensive formal verification of an OS microkernel (2014)
- The rust language (2014)
- Certified Complexity (CerCo) (2014)
- Infer: An Automatic Program Verifier for Memory Safety of C Programs (2011)
- VeriFast: A Powerful, Sound, Predictable, Fast Verifier for C and Java (2011)
- seL4: formal verification of an operating-system kernel (2010)
- Verifying the Microsoft Hyper-V Hypervisor with VCC (2009)
- A Formally Verified Compiler Back-end (2009)
- An Introduction to Separation Logic (Preliminary Draft) (2008)
- Liquid types (2008)
- Z3: An Efficient SMT Solver (2008)
- L3: A Linear Language with Locations (2007)
- Formal certification of a compiler back-end or: programming a compiler with a proof assistant (2006)
- Dependent ML An approach to practical programming with dependent types (2006)
- Boogie: A Modular Reusable Verifier for Object-Oriented Programs (2005)
- ATS: A Language That Combines Programming with Theorem Proving (2005)
- What’s Decidable About Arrays? (2005)
- Smallfoot: Modular Automatic Assertion Checking with Separation Logic (2005)
- CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs (2002)
- Syntactic Control of Interference (1978)