Vilhelm Sjöberg

dblp:72/7563 · DBLP profile ↗
← Back
9ranked-venue papers
2as first author
1since 2021 · last 2024
0009-0000-7371-4969ORCID · corroborated

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

Software engineering, systems software and programming languages · 8 · 2 first-author · 1 since 2021Systems, architecture and hardware · 1 · 1 since 2021Security and privacy · 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
8 papers
Programming languages and type systems · 41% Program verification · 36% Operating systems · 12%
Network and information security
2 papers
Hardware security and side channels · 80% Systems and software security · 20%

Topics — the 21 heaviest of 22, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Hardware security and side channels
trusted execution environments
0.812024
Verifying Rust Implementation of Page Tables in a Software Enclave Hypervisor · ASPLOS (2) 2024
Program verification › system verification › systems code verification
hypervisor verification
0.812024
Verifying Rust Implementation of Page Tables in a Software Enclave Hypervisor · ASPLOS (2) 2024
Program verification
abstraction refinement
0.722019
DeepSEA: a language for certified system software · Proc. ACM Program. Lang. 2019
Certified concurrent abstraction layers · PLDI 2018
Programming languages and type systems › type theory
dependent types
0.532015
Programming up to Congruence · POPL 2015
Combining proofs and programs in a dependently typed language · POPL 2014
Dependent types and program equivalence · POPL 2010
Operating systems
kernel
0.412019
DeepSEA: a language for certified system software · Proc. ACM Program. Lang. 2019
Compilers and program optimization
verified compilation
0.412019
DeepSEA: a language for certified system software · Proc. ACM Program. Lang. 2019
Program verification
concurrent program verification
0.312018
Certified concurrent abstraction layers · PLDI 2018
Operating systems › kernel
kernel design
0.212016
CertiKOS: An Extensible Architecture for Building Certified Concurrent OS Kernels · OSDI 2016
Programming languages and type systems › language-based security
memory safety
0.212024
Verifying Rust Implementation of Page Tables in a Software Enclave Hypervisor · ASPLOS (2) 2024
Programming languages and type systems
rust
0.212024
Verifying Rust Implementation of Page Tables in a Software Enclave Hypervisor · ASPLOS (2) 2024
Programming languages and type systems
type systems
0.212015
Programming up to Congruence · POPL 2015
Programming languages and type systems › type systems
type soundness
0.212014
Combining proofs and programs in a dependently typed language · POPL 2014
Programming languages and type systems › metatheory
decidability
0.112010
Dependent types and program equivalence · POPL 2010
Programming languages and type systems
type checking
0.112010
Dependent types and program equivalence · POPL 2010
Programming languages and type systems › type checking
type equivalence
0.112010
Dependent types and program equivalence · POPL 2010
Concurrent programming
concurrency verification
0.112018
Certified concurrent abstraction layers · PLDI 2018
Systems and software security
information flow control
0.112009
Reactive noninterference · CCS 2009
Systems and software security › information flow control
noninterference
0.112009
Reactive noninterference · CCS 2009
Concurrent programming
concurrency bugs
0.112016
CertiKOS: An Extensible Architecture for Building Certified Concurrent OS Kernels · OSDI 2016
Program verification › correctness proof
total correctness
0.112014
Combining proofs and programs in a dependently typed language · POPL 2014
Programming languages and type systems
language-based security
0.012009
Reactive noninterference · CCS 2009

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

formal verification · 2.1rust · 1.5equational reasoning · 0.4effect encapsulation · 0.4coq · 0.4compcert · 0.4layer-based verification · 0.3certified programming · 0.2congruence closure · 0.2temporal logic · 0.2
YearPublicationVenuePosition
2024 Verifying Rust Implementation of Page Tables in a Software Enclave Hypervisor
abstract
As trusted execution environments (TEE) have become the corner stone for secure cloud computing, it is critical that they are reliable and enforce proper isolation, of which a key ingredient is spatial isolation. Many TEEs are implemented in software such as hypervisors for flexibility, and in a memory-safe language, namely Rust to alleviate potential memory bugs. Still, even if memory bugs are absent from the TEE, it may contain semantic errors such as mis-configurations in its memory subsystem which breaks spatial isolation.
Zhenyang Dai, Vilhelm Sjöberg, Xupeng Li, Yu Chen 0004, Wenhao Wang 0001, Yuekai Jia, Sean Noble Anderson, Laila Elbeheiry, Shubham Sondhi, Yu Zhang 0313, Zhaozhong Ni, Shoumeng Yan, Ronghui Gu, Zhengyu He
ASPLOS (2)3
2019 DeepSEA: a language for certified system software
abstract
Writing certifiably correct system software is still very labor-intensive, and current programming languages are not well suited for the task. Proof assistants work best on programs written in a high-level functional style, while operating systems need low-level control over the hardware. We present DeepSEA, a language which provides support for layered specification and abstraction refinement, effect encapsulation and composition, and full equational reasoning. A single DeepSEA program is automatically compiled into a certified ``layer'' consisting of a C program (which is then compiled into assembly by CompCert), a low-level functional Coq specification, and a formal (Coq) proof that the C program satisfies the specification. Multiple layers can be composed and interleaved with manual proofs to ascribe a high-level specification to a program by stepwise refinement. We evaluate the language by using it to reimplement two existing verified programs: a SHA-256 hash function and an OS kernel page table manager. This new style of programming language design can directly support the development of correct-by-construction system software.
Vilhelm Sjöberg, Yuyang Sang, Shu-Chun Weng, Zhong Shao 0001
Proc. ACM Program. Lang.1
2018 Certified concurrent abstraction layers
abstract
Concurrent abstraction layers are ubiquitous in modern computer systems because of the pervasiveness of multithreaded programming and multicore hardware. Abstraction layers are used to hide the implementation details (e.g., fine-grained synchronization) and reduce the complex dependencies among components at different levels of abstraction. Despite their obvious importance, concurrent abstraction layers have not been treated formally. This severely limits the applicability of layer-based techniques and makes it difficult to scale verification across multiple concurrent layers.
Ronghui Gu, Zhong Shao 0001, Jieung Kim, Xiongnan (Newman) Wu, Jérémie Koenig, Vilhelm Sjöberg, Hao Chen 0023, David Costanzo, Tahina Ramananandro
PLDI6
2017 Safety and Liveness of MCS Lock - Layer by Layer
Jieung Kim, Vilhelm Sjöberg, Ronghui Gu, Zhong Shao 0001
APLAS2
2016 CertiKOS: An Extensible Architecture for Building Certified Concurrent OS Kernels
Ronghui Gu, Zhong Shao 0001, Hao Chen 0023, Xiongnan (Newman) Wu, Jieung Kim, Vilhelm Sjöberg, David Costanzo
OSDI6
2015 Programming up to Congruence
abstract
This paper presents the design of Zombie, a dependently-typed programming language that uses an adaptation of a congruence closure algorithm for proof and type inference. This algorithm allows the type checker to automatically use equality assumptions from the context when reasoning about equality. Most dependently-typed languages automatically use equalities that follow from beta-reduction during type checking; however, such reasoning is incompatible with congruence closure. In contrast, Zombie does not use automatic beta-reduction because types may contain potentially diverging terms. Therefore Zombie provides a unique opportunity to explore an alternative definition of equivalence in dependently-typed language design.
Vilhelm Sjöberg, Stephanie Weirich
POPL1
2014 Combining proofs and programs in a dependently typed language
abstract
Most dependently-typed programming languages either require that all expressions terminate (e.g. Coq, Agda, and Epigram), or allow infinite loops but are inconsistent when viewed as logics (e.g. Haskell, ATS, Ωmega. Here, we combine these two approaches into a single dependently-typed core language. The language is composed of two fragments that share a common syntax and overlapping semantics: a logic that guarantees total correctness, and a call-by-value programming language that guarantees type safety but not termination. The two fragments may interact: logical expressions may be used as programs; the logic may soundly reason about potentially nonterminating programs; programs can require logical proofs as arguments; and "mobile" program values, including proofs computed at runtime, may be used as evidence by the logic. This language allows programmers to work with total and partial functions uniformly, providing a smooth path from functional programming to dependently-typed programming.
Chris Casinghino, Vilhelm Sjöberg, Stephanie Weirich
POPL2
2010 Dependent types and program equivalence
abstract
The definition of type equivalence is one of the most important design issues for any typed language. In dependently typed languages, because terms appear in types, this definition must rely on a definition of term equivalence. In that case, decidability of type checking requires decidability for the term equivalence relation.
Limin Jia 0001, Jianzhou Zhao, Vilhelm Sjöberg, Stephanie Weirich
POPL3
2009 Reactive noninterference
abstract
Many programs operate reactively--patiently waiting for user input, running for a while producing output, and eventually returning to a state where they are ready to accept another input (or occasionally diverging). When a reactive program communicates with multiple parties, we would like to be sure that it can be given secret information by one without leaking it to others.
Aaron Bohannon, Benjamin C. Pierce, Vilhelm Sjöberg, Stephanie Weirich, Steve Zdancewic
CCS3