RefinedC: automating the foundational verification of C code with refined ownership types

M Sammler, R Lepigre, R Krebbers… - Proceedings of the …, 2021 - dl.acm.org
Given the central role that C continues to play in systems software, and the difficulty of
writing safe and correct C code, it remains a grand challenge to develop effective formal …

Stacked borrows: an aliasing model for Rust

R Jung, HH Dang, J Kang, D Dreyer - Proceedings of the ACM on …, 2019 - dl.acm.org
Type systems are useful not just for the safety guarantees they provide, but also for helping
compilers generate more efficient code by simplifying important program analyses. In Rust …

Into the depths of C: elaborating the de facto standards

K Memarian, J Matthiesen, J Lingard, K Nienhuis… - ACM SIGPLAN …, 2016 - dl.acm.org
C remains central to our computing infrastructure. It is notionally defined by ISO standards,
but in reality the properties of C assumed by systems code and those implemented by …

Modular, compositional, and executable formal semantics for LLVM IR

Y Zakowski, C Beck, I Yoon, I Zaichuk, V Zaliva… - Proceedings of the …, 2021 - dl.acm.org
This paper presents a novel formal semantics, mechanized in Coq, for a large, sequential
subset of the LLVM IR. In contrast to previous approaches, which use relationally-specified …

Taming undefined behavior in LLVM

J Lee, Y Kim, Y Song, CK Hur, S Das… - ACM SIGPLAN …, 2017 - dl.acm.org
A central concern for an optimizing compiler is the design of its intermediate representation
(IR) for code. The IR should make it easy to perform transformations, and should also afford …

Understanding and evolving the Rust programming language

R Jung - 2020 - publikationen.sulb.uni-saarland.de
Rust is a young systems programming language that aims to fill the gap between high-level
languages—which provide strong static guarantees like memory and thread safety—and low …

Exploring C semantics and pointer provenance

K Memarian, VBF Gomes, B Davis, S Kell… - Proceedings of the …, 2019 - dl.acm.org
The semantics of pointers and memory objects in C has been a vexed question for many
years. C values cannot be treated as either purely abstract or purely concrete entities: the …

[PDF][PDF] The C standard formalized in Coq

RJ Krebbers - 2015 - repository.ubn.ru.nl
The C programming language was created by Thompson and Ritchie around 1970 as the
implementation language of the Unix operating system [Rit93]. The development of Unix …

Simuliris: a separation logic framework for verifying concurrent program optimizations

L Gäher, M Sammler, S Spies, R Jung… - Proceedings of the …, 2022 - dl.acm.org
Today's compilers employ a variety of non-trivial optimizations to achieve good performance.
One key trick compilers use to justify transformations of concurrent programs is to assume …

CompCertM: CompCert with C-assembly linking and lightweight modular verification

Y Song, M Cho, D Kim, Y Kim, J Kang… - Proceedings of the ACM …, 2019 - dl.acm.org
Supporting multi-language linking such as linking C and handwritten assembly modules in
the verified compiler CompCert requires a more compositional verification technique than …