Lennart Beringer

dblp:b/LBeringer · DBLP profile ↗
← Back
24ranked-venue papers
12as first author
6since 2021 · last 2024
0000-0002-1570-3492ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 14 · 7 first-author · 3 since 2021Theory of computation · 11 · 4 first-author · 4 since 2021Security and privacy · 3 · 2 first-authorArtificial intelligence and machine learning · 2 · 1 first-author
YearPublicationVenuePosition
2024 Compositional Verification of Concurrent C Programs with Search Structure Templates
abstract
Concurrent search structure templates are a technique for separating the verification of a concurrent data structure into concurrency-control and data-structure components, which can then be modularly combined with no additional proof effort. In this paper, we implement the template approach in the Verified Software Toolchain (VST), and use it to prove correctness of C implementations of fine-grained concurrent data structures. This involves translating code, specifications, and proofs to the idiom of C and VST, and gives us another look at the requirements and limitations of the template approach. We encounter several questions about the boundaries between template and data structure, as well as some common data structure operations that cannot naturally be decomposed into templates. Nonetheless, the approach appears promising for modular verification of real-world concurrent data structures.
Duc-Than Nguyen, Lennart Beringer, William Mansky
CPP2
2023 Foundational Verification of Stateful P4 Packet Processing
Qinshi Wang, Mengying Pan, Ryan Doenges, Lennart Beringer, Andrew W. Appel
ITP5
2022 Verified Software Units for Simple DFA Modules and Objects in C
Lennart Beringer
ISoLA (2)1
2021 Verified Software Units
abstract
Abstract Modularity - the partitioning of software into units of functionality that interact with each other via interfaces - has been the mainstay of software development for half a century. In case of the C language, the main mechanism for modularity is the compilation unit / header file abstraction. This paper complements programmatic modularity for C with modularity idioms for specification and verification in the context of Verifiable C, an expressive separation logic for CompCert . Technical innovations include (i)abstract predicate declarations– existential packages that combine Parkinson & Bierman’s abstract predicates with their client-visible reasoning principles; (ii)residualpredicates, which help enforcing data abstraction in callback-rich code; and (iii) an application to pure (Smalltalk-style) objects that connects code verification to model-level reasoning about features such as subtyping,self, inheritance, and late binding. We introduce our techniques using concrete example modules that have all been verified using the Coq proof assistant and combine to fully linked verified programs using a novel, abstraction-respecting component composition rule for Verifiable C.
Lennart Beringer
ESOP1
2021 Verifying an HTTP Key-Value Server with Interaction Trees and VST
abstract
We present a networked key-value server, implemented in C and formally verified in Coq. The server interacts with clients using a subset of the HTTP/1.1 protocol and is specified and verified using interaction trees and the Verified Software Toolchain. The codebase includes a reusable and fully verified C string library that provides 17 standard POSIX string functions and 17 general purpose non-POSIX string functions. For the KVServer socket system calls, we establish a refinement relation between specifications at user-space level and at CertiKOS kernel-space level.
Hengchu Zhang, Wolf Honoré, Nicolas Koh, Yao Li 0004, Yishuai Li, Li-yao Xia, Lennart Beringer, William Mansky, Benjamin C. Pierce, Steve Zdancewic
ITP7
2021 Abstraction and subsumption in modular verification of C programs
Lennart Beringer, Andrew W. Appel
Formal Methods Syst. Des.1
2019 From C to interaction trees: specifying, verifying, and testing a networked server
abstract
We present the first formal verification of a networked server implemented in C. Interaction trees, a general structure for representing reactive computations, are used to tie together disparate verification and testing tools (Coq, VST, and QuickChick) and to axiomatize the behavior of the operating system on which the server runs (CertiKOS). The main theorem connects a specification of acceptable server behaviors, written in a straightforward “one client at a time” style, with the CompCert semantics of the C program. The variability introduced by low-level buffering of messages and interleaving of multiple TCP connections is captured using network refinement, a variant of observational refinement.
Nicolas Koh, Yao Li 0004, Yishuai Li, Li-yao Xia, Lennart Beringer, Wolf Honoré, William Mansky, Benjamin C. Pierce, Steve Zdancewic
CPP5
2019 Abstraction and Subsumption in Modular Verification of C Programs
Lennart Beringer, Andrew W. Appel
FM1
2018 VST-Floyd: A Separation Logic Tool to Verify Correctness of C Programs
Qinxiang Cao, Lennart Beringer, Samuel Gruetter, Josiah Dodds, Andrew W. Appel
J. Autom. Reason.2
2017 Verified Correctness and Security of mbedTLS HMAC-DRBG
abstract
We have formalized the functional specification of HMAC-DRBG (NIST 800-90A), and we have proved its cryptographic security-that its output is pseudorandom--using a hybrid game-based proof. We have also proved that the mbedTLS implementation (C program) correctly implements this functional specification. That proof composes with an existing C compiler correctness proof to guarantee, end-to-end, that the machine language program gives strong pseudorandomness. All proofs (hybrid games, C program verification, compiler, and their composition) are machine-checked in the Coq proof assistant. Our proofs are modular: the hybrid game proof holds on any implementation of HMAC-DRBG that satisfies our functional specification. Therefore, our functional specification can serve as a high-assurance reference.
Katherine Q. Ye, Matthew Green 0001, Naphat Sanguansin, Lennart Beringer, Adam Petcher, Andrew W. Appel
CCS4
2015 Compositional CompCert
abstract
This paper reports on the development of Compositional CompCert, the first verified separate compiler for C.
Gordon Stewart 0001, Lennart Beringer, Santiago Cuéllar, Andrew W. Appel
POPL2
2015 Verified Correctness and Security of OpenSSL HMAC
Lennart Beringer, Adam Petcher, Katherine Q. Ye, Andrew W. Appel
USENIX Security Symposium1
2014 Verified Compilation for Shared-Memory C
Lennart Beringer, Gordon Stewart 0001, Robert Dockins, Andrew W. Appel
ESOP1
2013 Verifying pointer and string analyses with region type systems
Lennart Beringer, Robert Grabowski, Martin Hofmann 0001
Comput. Lang. Syst. Struct.1
2012 End-to-end Multilevel Hybrid Information Flow Control
Lennart Beringer
APLAS1
2012 Verified heap theorem prover by paramodulation
abstract
We present VeriStar, a verified theorem prover for a decidable subset of separation logic. Together with VeriSmall [3], a proved-sound Smallfoot-style program analysis for C minor, VeriStar demonstrates that fully machine-checked static analyses equipped with efficient theorem provers are now within the reach of formal methods. As a pair, VeriStar and VeriSmall represent the first application of the Verified Software Toolchain [4], a tightly integrated collection of machine-verified program logics and compilers giving foundational correctness guarantees.
Gordon Stewart 0001, Lennart Beringer, Andrew W. Appel
ICFP2
2011 Relational Decomposition
Lennart Beringer
ITP1
2009 Relational semantics for effect-based program transformations: higher-order store
abstract
We give a denotational semantics to a type and effect system tracking reading and writing to global variables holding values that may include higher-order effectful functions. Refined types are modelled as partial equivalence relations over a recursively-defined domain interpreting the untyped language, with effect information interpreted in terms of the preservation of certain sets of binary relations on the store.
Nick Benton, Andrew Kennedy, Lennart Beringer, Martin Hofmann 0001
PPDP3
2007 Secure information flow and program logics
abstract
We present interpretations of type systems for secure information flow in Hoare logic, complementing previous encodings in binary (e.g. relational) program logics. Treating base-line non-interference, multi-level security and flow sensitivity for a while language, we show how typing derivations may be used to automatically generate proofs in the program logic that certify the absence of illicit flows. In addition, we present proof rules for baseline non-interference for object-manipulating instructions, As a consequence, standard verification technology may be used for verifying that a concrete program satisfies the noninterference property. Our development is based on a formalisation of the encodings in Isabelle/HOL.
Lennart Beringer, Martin Hofmann 0001
CSF1
2007 Relational semantics for effect-based program transformations with dynamic allocation
abstract
We give a denotational semantics to a region-based effect system tracking reading, writing and allocation in a higher-order language with dynamically allocated integer references.
Nick Benton, Andrew Kennedy, Lennart Beringer, Martin Hofmann 0001
PPDP3
2007 A program logic for resources
David Aspinall 0001, Lennart Beringer, Martin Hofmann 0001, Hans-Wolfgang Loidl, Alberto Momigliano
Theor. Comput. Sci.2
2006 Reading, Writing and Relations
Nick Benton, Andrew Kennedy, Martin Hofmann 0001, Lennart Beringer
APLAS4
2006 A Bytecode Logic for JML and Types
Lennart Beringer, Martin Hofmann 0001
APLAS1
2004 Automatic Certification of Heap Consumption
Lennart Beringer, Martin Hofmann 0001, Alberto Momigliano, Olha Shkaravska
LPAR1