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

Travis Hance

dblp:122/8102 · DBLP profile ↗
← Back
10ranked-venue papers
5as first author
7since 2021 · last 2026
0009-0003-1104-7795ORCID · corroborated

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

Software engineering, systems software and programming languages · 9 · 4 first-author · 6 since 2021Computer networks · 1 · 1 first-author · 1 since 2021

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
5 papers
Program verification · 69% Programming languages and type systems · 21% Concurrent programming · 10%
Computer architecture, parallel and distributed computing, and storage systems
3 papers
Distributed systems · 57% Storage systems · 43%
Theoretical computer science
2 papers
Automated reasoning and model checking · 52% Distributed computing theory · 48%
Network and information security
1 paper
Systems and software security · 100%

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

TopicWeightPapersLastEvidence papers
Distributed computing theory
distributed verification
0.922024
Inductive Invariants That Spark Joy: Using Invariant Taxonomies to Streamline Distributed Protocol Proofs · OSDI 2024
Finding Invariants of Distributed Systems: It's a Small (Enough) World After All · NSDI 2021
Program verification › theorem proving
interactive proof
0.812024
Verus: A Practical Foundation for Systems Verification · SOSP 2024
Program verification › proof assistants
proof automation
0.812024
Verus: A Practical Foundation for Systems Verification · SOSP 2024
Program verification
system verification
0.812024
Verus: A Practical Foundation for Systems Verification · SOSP 2024
Automated reasoning and model checking › program verification
inductive invariants
0.812024
Inductive Invariants That Spark Joy: Using Invariant Taxonomies to Streamline Distributed Protocol Proofs · OSDI 2024
Concurrent programming
concurrency verification
0.712023
Leaf: Modularity for Temporary Sharing in Separation Logic · Proc. ACM Program. Lang. 2023
Program verification
concurrent program verification
0.712023
Sharding the State Machine: Automated Modular Reasoning for Complex Concurrent Systems · OSDI 2023
Programming languages and type systems › type systems › substructural type systems
linear types
0.712023
Verus: Verifying Rust Programs using Linear Ghost Types · Proc. ACM Program. Lang. 2023
Program verification › code-level verification
rust verification
0.712023
Verus: Verifying Rust Programs using Linear Ghost Types · Proc. ACM Program. Lang. 2023
Program verification › program logic
separation logic
0.712023
Leaf: Modularity for Temporary Sharing in Separation Logic · Proc. ACM Program. Lang. 2023
Distributed systems
distributed coordination
0.712023
Sharding the State Machine: Automated Modular Reasoning for Complex Concurrent Systems · OSDI 2023
Distributed systems
distributed system verification
0.512021
Finding Invariants of Distributed Systems: It's a Small (Enough) World After All · NSDI 2021
Storage systems
distributed storage
0.412020
Storage Systems are Distributed Systems (So Verify Them That Way!) · OSDI 2020
Storage systems
storage reliability
0.412020
Storage Systems are Distributed Systems (So Verify Them That Way!) · OSDI 2020
Systems and software security › information flow control
dynamic information flow control
0.212016
Precise, dynamic information flow for database-backed applications · PLDI 2016
Systems and software security
information flow control
0.212016
Precise, dynamic information flow for database-backed applications · PLDI 2016
Programming languages and type systems
language semantics
0.212016
Precise, dynamic information flow for database-backed applications · PLDI 2016
Programming languages and type systems › information flow control
noninterference
0.212016
Precise, dynamic information flow for database-backed applications · PLDI 2016
Program verification
SMT-based verification
0.212023
Verus: Verifying Rust Programs using Linear Ghost Types · Proc. ACM Program. Lang. 2023

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

state machine sharding · 1.3automated modular reasoning · 1.3formal verification · 1.2lambda calculus · 0.7iris separation logic · 0.7guarding operator · 0.7SMT solving · 0.7formal semantics · 0.5dynamic taint tracking · 0.5distributed systems reasoning · 0.4
YearPublicationVenuePosition
2026 VerusBelt: A Semantic Foundation for Verus's Proof-Oriented Extensions to the Rust Type System
abstract
Verus is a verification tool for the Rust programming language that has already been put to use in several significant systems verification efforts. Verus offers a distinctive approach among Rust verification systems in that, in addition to offering fast SMT-based automation, it supports verification of both safe and unsafe Rust code in a single, unified framework. It achieves this by providing users with a range of proof-oriented types—types introduced specifically by Verus to aid in verification—on top of which one can then build verified implementations of Rust APIs that would otherwise require the use of unsafe Rust features. In this paper, we develop VerusBelt, the first semantic soundness proof for a significant subset of Verus. In addition to modeling the full range of Verus's core proof-oriented types—including cells, invariants, resource algebras, and storage protocols—VerusBelt accounts (for the first time) for full-fledged Rust lifetimes, concurrency and thread safety, and mutable borrows. A central challenge involves building a model of shared borrows that is generic enough to support storage protocols—we tackle this by marrying RustBelt's lifetime logic with the Leaf library for temporary resource sharing in Iris. All our proofs are mechanized in Iris/Rocq.
Travis Hance, Laila Elbeheiry, Yusuke Matsushita 0002, Derek Dreyer
Proc. ACM Program. Lang.1
2024 Inductive Invariants That Spark Joy: Using Invariant Taxonomies to Streamline Distributed Protocol Proofs
Nuda Zhang, Travis Hance, Manos Kapritsos, Tej Chajed, Bryan Parno
OSDI2
2024 Verus: A Practical Foundation for Systems Verification
abstract
Formal verification is a promising approach to eliminate bugs at compile time, before they ship. Indeed, our community has verified a wide variety of system software. However, much of this success has required heroic developer effort, relied on bespoke logics for individual domains, or sacrificed expressiveness for powerful proof automation.
Andrea Lattuada 0001, Travis Hance, Jay Bosamiya, Matthias Brun 0002, Chanhee Cho, Hayley LeBlanc, Pranav Srinivasan, Reto Achermann, Tej Chajed, Chris Hawblitzel, Jon Howell, Jacob R. Lorch, Oded Padon, Bryan Parno
SOSP2
2023 Sharding the State Machine: Automated Modular Reasoning for Complex Concurrent Systems
Travis Hance, Yi Zhou 0025, Andrea Lattuada 0001, Reto Achermann, Alexander Conway 0001, Ryan Stutsman, Gerd Zellweger, Chris Hawblitzel, Jon Howell, Bryan Parno
OSDI1
2023 Leaf: Modularity for Temporary Sharing in Separation Logic
abstract
In concurrent verification, separation logic provides a strong story for handling both resources that are owned exclusively and resources that are shared persistently (i.e., forever). However, the situation is more complicated for temporarily shared state, where state might be shared and then later reclaimed as exclusive. We believe that a framework for temporarily-shared state should meet two key goals not adequately met by existing techniques. One, it should allow and encourage users to verify new sharing strategies. Two, it should provide an abstraction where users manipulate shared state in a way agnostic to the means with which it is shared. We present Leaf, a library in the Iris separation logic which accomplishes both of these goals by introducing a novel operator, which we call guarding, that allows one proposition to represent a shared version of another. We demonstrate that Leaf meets these two goals through a modular case study: we verify a reader-writer lock that supports shared state, and a hash table built on top of it that uses shared state.
Travis Hance, Jon Howell, Oded Padon, Bryan Parno
Proc. ACM Program. Lang.1
2023 Verus: Verifying Rust Programs using Linear Ghost Types
abstract
The Rust programming language provides a powerful type system that checks linearity and borrowing, allowing code to safely manipulate memory without garbage collection and making Rust ideal for developing low-level, high-assurance systems. For such systems, formal verification can be useful to prove functional correctness properties beyond type safety. This paper presents Verus, an SMT-based tool for formally verifying Rust programs. With Verus, programmers express proofs and specifications using the Rust language, allowing proofs to take advantage of Rust's linear types and borrow checking. We show how this allows proofs to manipulate linearly typed permissions that let Rust code safely manipulate memory, pointers, and concurrent resources. Verus organizes proofs and specifications using a novel mode system that distinguishes specifications, which are not checked for linearity and borrowing, from executable code and proofs, which are checked for linearity and borrowing. We formalize Verus' linearity, borrowing, and modes in a small lambda calculus, for which we prove type safety and termination of specifications and proofs. We demonstrate Verus on a series of examples, including pointer-manipulating code (an xor-based doubly linked list), code with interior mutability, and concurrent code.
Andrea Lattuada 0001, Travis Hance, Chanhee Cho, Matthias Brun 0002, Isitha Subasinghe, Yi Zhou 0025, Jon Howell, Bryan Parno, Chris Hawblitzel
Proc. ACM Program. Lang.2
2021 Finding Invariants of Distributed Systems: It's a Small (Enough) World After All
Travis Hance, Marijn Heule, Ruben Martins, Bryan Parno
NSDI1
2020 Storage Systems are Distributed Systems (So Verify Them That Way!)
Travis Hance, Andrea Lattuada 0001, Chris Hawblitzel, Jon Howell, Rob Johnson 0001, Bryan Parno
OSDI1
2020 Liquid information flow control
abstract
We present Lifty, a domain-specific language for data-centric applications that manipulate sensitive data. A Lifty programmer annotates the sources of sensitive data with declarative security policies, and the language statically and automatically verifies that the application handles the data according to the policies. Moreover, if verification fails, Lifty suggests a provably correct repair, thereby easing the programmer burden of implementing policy enforcing code throughout the application. The main insight behind Lifty is to encode information flow control using liquid types, an expressive yet decidable type system. Liquid types enable fully automatic checking of complex, data dependent policies, and power our repair mechanism via type-driven error localization and patch synthesis. Our experience using Lifty to implement three case studies from the literature shows that (1) the Lifty policy language is sufficiently expressive to specify many real-world policies, (2) the Lifty type checker is able to verify secure programs and find leaks in insecure programs quickly, and (3) even if the programmer leaves out all policy enforcing code, the Lifty repair engine is able to patch all leaks automatically within a reasonable time.
Nadia Polikarpova, Deian Stefan, Jean Yang 0001, Shachar Itzhaky, Travis Hance, Armando Solar-Lezama
Proc. ACM Program. Lang.5
2016 Precise, dynamic information flow for database-backed applications
abstract
We present an approach for dynamic information flow control across the application and database. Our approach reduces the amount of policy code required, yields formal guarantees across the application and database, works with existing relational database implementations, and scales for realistic applications. In this paper, we present a programming model that factors out information flow policies from application code and database queries, a dynamic semantics for the underlying $^JDB$ core language, and proofs of termination-insensitive non-interference and policy compliance for the semantics. We implement these ideas in Jacqueline, a Python web framework, and demonstrate feasibility through three application case studies: a course manager, a health record system, and a conference management system used to run an academic workshop. We show that in comparison to traditional applications with hand-coded policy checks, Jacqueline applications have 1) a smaller trusted computing base, 2) fewer lines of policy code, and 2) reasonable, often negligible, additional overheads.
Jean Yang 0001, Travis Hance, Thomas H. Austin, Armando Solar-Lezama, Cormac Flanagan, Stephen Chong
PLDI2