Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Luke Nelson

dblp:194/6735 · DBLP profile ↗
← Back
6ranked-venue papers
3as first author
1since 2021 · last 2022
—ORCID · none

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

Software engineering, systems software and programming languages · 6 · 3 first-author · 1 since 2021Theory of computation · 1

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
6 papers
Program verification · 50% Program analysis · 18% Program synthesis and code generation · 12%
Network and information security
1 paper
Systems and software security · 100%

Topics — the 9 heaviest of 12, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis
symbolic execution
1.022022
A formal foundation for symbolic evaluation with merging · Proc. ACM Program. Lang. 2022
Scaling symbolic evaluation for automated verification of systems code with Serval · SOSP 2019
Runtime systems and virtual machines › dynamic compilation
just-in-time compilation
0.622020
Synthesizing JIT Compilers for In-Kernel DSLs · CAV (2) 2020
Specification and verification in the field: Applying formal methods to BPF just-in-time compilers in the Linux kernel · OSDI 2020
Program verification › system verification
kernel verification
0.422019
Hyperkernel: Push-Button Verification of an OS Kernel · SOSP 2017
Scaling symbolic evaluation for automated verification of systems code with Serval · SOSP 2019
Program verification
automated verification
0.412019
Scaling symbolic evaluation for automated verification of systems code with Serval · SOSP 2019
Program verification › system verification
systems code verification
0.412019
Scaling symbolic evaluation for automated verification of systems code with Serval · SOSP 2019
Systems and software security
information flow control
0.312018
Nickel: A Framework for Design and Verification of Information Flow Control Systems · OSDI 2018
Program verification
functional correctness
0.312017
Hyperkernel: Push-Button Verification of an OS Kernel · SOSP 2017
Program verification › proof assistants
proof automation
0.312017
Hyperkernel: Push-Button Verification of an OS Kernel · SOSP 2017
Operating systems › kernel
kernel design
0.112017
Hyperkernel: Push-Button Verification of an OS Kernel · SOSP 2017

Methods — techniques the papers use, named apart from their topics

formal verification · 0.7lean theorem prover · 0.6differential testing · 0.6SAT/SMT solving · 0.6specification and verification · 0.4formal methods · 0.4compiler metasketch · 0.4abstract register machines · 0.4symbolic profiling · 0.4
YearPublicationVenuePosition
2022 A formal foundation for symbolic evaluation with merging
abstract
Reusable symbolic evaluators are a key building block of solver-aided verification and synthesis tools. A reusable evaluator reduces the semantics of all paths in a program to logical constraints, and a client tool uses these constraints to formulate a satisfiability query that is discharged with SAT or SMT solvers. The correctness of the evaluator is critical to the soundness of the tool and the domain properties it aims to guarantee. Yet so far, the trust in these evaluators has been based on an ad-hoc foundation of testing and manual reasoning. This paper presents the first formal framework for reasoning about the behavior of reusable symbolic evaluators. We develop a new symbolic semantics for these evaluators that incorporates state merging. Symbolic evaluators use state merging to avoid path explosion and generate compact encodings. To accommodate a wide range of implementations, our semantics is parameterized by a symbolic factory, which abstracts away the details of merging and creation of symbolic values. The semantics targets a rich language that extends Core Scheme with assumptions and assertions, and thus supports branching, loops, and (first-class) procedures. The semantics is designed to support reusability, by guaranteeing two key properties: legality of the generated symbolic states, and the reducibility of symbolic evaluation to concrete evaluation. Legality makes it simpler for client tools to formulate queries, and reducibility enables testing of client tools on concrete inputs. We use the Lean theorem prover to mechanize our symbolic semantics, prove that it is sound and complete with respect to the concrete semantics, and prove that it guarantees legality and reducibility. To demonstrate the generality of our semantics, we develop Leanette, a reference evaluator written in Lean, and Rosette 4, an optimized evaluator written in Racket. We prove Leanette correct with respect to the semantics, and validate Rosette 4 against Leanette via solver-aided differential testing. To demonstrate the practicality of our approach, we port 16 published verification and synthesis tools from Rosette 3 to Rosette 4. Rosette 3 is an existing reusable evaluator that implements the classic merging semantics, adopted from bounded model checking. Rosette 4 replaces the semantic core of Rosette 3 but keeps its optimized symbolic factory. Our results show that Rosette 4 matches the performance of Rosette 3 across a wide range of benchmarks, while providing a cleaner interface that simplifies the implementation of client tools.
Sorawee Porncharoenwase, Luke Nelson, Xi Wang 0005, Emina Torlak
Proc. ACM Program. Lang.2
2020 Synthesizing JIT Compilers for In-Kernel DSLs
abstract
Modern operating systems allow user-space applications to submit code for kernel execution through the use of in-kernel domain specific languages (DSLs). Applications use these DSLs to customize system policies and add new functionality. For performance, the kernel executes them via just-in-time (JIT) compilation. The correctness of these JITs is crucial for the security of the kernel: bugs in in-kernel JITs have led to numerous critical issues and patches. This paper presents JitSynth , the first tool for synthesizing verified JITs for in-kernel DSLs. JitSynth takes as input interpreters for the source DSL and the target instruction set architecture. Given these interpreters, and a mapping from source to target states, JitSynth synthesizes a verified JIT compiler from the source to the target. Our key idea is to formulate this synthesis problem as one of synthesizing a per-instruction compiler for abstract register machines . Our core technical contribution is a new compiler metasketch that enables JitSynth to efficiently explore the resulting synthesis search space. To evaluate JitSynth , we use it to synthesize a JIT from eBPF to RISC-V and compare to a recently developed Linux JIT. The synthesized JIT avoids all known bugs in the Linux JIT, with an average slowdown of \(1.82\times \) in the performance of the generated code. We also use JitSynth to synthesize JITs for two additional source-target pairs. The results show that JitSynth offers a promising new way to develop verified JITs for in-kernel DSLs.
Jacob Van Geffen, Luke Nelson, Isil Dillig, Xi Wang 0005, Emina Torlak
CAV (2)2
2020 Specification and verification in the field: Applying formal methods to BPF just-in-time compilers in the Linux kernel
Luke Nelson, Jacob Van Geffen, Emina Torlak, Xi Wang 0005
OSDI1
2019 Scaling symbolic evaluation for automated verification of systems code with Serval
abstract
This paper presents Serval, a framework for developing automated verifiers for systems software. Serval provides an extensible infrastructure for creating verifiers by lifting interpreters under symbolic evaluation, and a systematic approach to identifying and repairing verification performance bottlenecks using symbolic profiling and optimizations.
Luke Nelson, James Bornholt, Ronghui Gu, Andrew Baumann, Emina Torlak, Xi Wang 0005
SOSP1
2018 Nickel: A Framework for Design and Verification of Information Flow Control Systems
Helgi Sigurbjarnarson, Luke Nelson, Bruno Castro-Karney, James Bornholt, Emina Torlak, Xi Wang 0005
OSDI2
2017 Hyperkernel: Push-Button Verification of an OS Kernel
abstract
This paper describes an approach to designing, implementing, and formally verifying the functional correctness of an OS kernel, named Hyperkernel, with a high degree of proof automation and low proof burden. We base the design of Hyperkernel's interface on xv6, a Unix-like teaching operating system. Hyperkernel introduces three key ideas to achieve proof automation: it finitizes the kernel interface to avoid unbounded loops or recursion; it separates kernel and user address spaces to simplify reasoning about virtual memory; and it performs verification at the LLVM intermediate representation level to avoid modeling complicated C semantics.
Luke Nelson, Helgi Sigurbjarnarson, Kaiyuan Zhang 0001, Dylan Johnson, James Bornholt, Emina Torlak, Xi Wang 0005
SOSP1