Publications
2025
-
It Takes a Village: Bridging the Gaps between Current and Formal Specifications for Protocols
-
The Design and Implementation of a Virtual Firmware Monitor
-
Lightweight Hypervisor Verification: Putting the Hardware Burger on a Diet
-
StacKAT: Infinite State Network Verification
-
Active Learning of Symbolic NetKAT Automata
2024
-
Network Design Considerations for Trading Systems
-
Computing Precise Control Interface Specifications
-
KATch: A Fast Symbolic Verifier for NetKAT
2023
-
Automata Learning with an Incomplete Teacher
-
Formal Abstractions for Packet Scheduling
-
P4Testgen: An Extensible Test Oracle For P4-16
-
Hydra: Effective Runtime Network Verification
-
P4Cub: A Little Language for Big Routers
2022
-
Causal Network Telemetry
-
A Programming Language for Future Interests
-
Leapfrog: Certified Equivalence for Protocol Parsers
-
Dependently-Typed Data Plane Programming
2021
-
Avenir: Managing Data Plane Diversity with Control Plane Synthesis
-
Petr4: Formal Foundations for P4 Data Planes
2020
-
Using Deep Programmability to Put Network Owners in Control
-
Forwarding and Routing with Packet Subscriptions
-
Composing Dataplane Programs with μP4
-
Guarded Kleene Algebra with Tests: Verification of Uninterpreted Programs in Nearly Linear Time
2019
-
Proof Carrying Network Code
-
Ancile: Enhancing Privacy for Ubiquitous Computing with Use-Based Privacy
-
How to Avoid Making a Billion-Dollar Mistake: Type-Safe Data Plane Programming with SafeP4
-
TxForest: A DSL for Concurrent Data Stores
-
PicNIC: Predictable Virtualized NIC
-
Scalable Verification of Probabilistic Networks
-
Efficient, Consistent Distributed Computation with Predictive Treaties
2018
-
Packet Subscriptions for Programmable ASICs
-
p4v: Practical Verification for Programmable Data Planes
-
Life in the Fast Lane: A Line-Rate Linear Road
-
YATES: Rapid Prototyping for Traffic Engineering Systems
-
Semi-Oblivious Traffic Engineering: The Road Not Taken
-
NetChain: Scale-Free Sub-RTT Coordination
2017
-
NetCache: Balancing Key-Value Stores with Fast In-Network Caching
-
Life on the Edge: Unraveling Policies into Configurations
-
P4FPGA: A Rapid Prototyping Framework for P4
-
Cantor Meets Scott: Semantic Foundations for Probabilistic Networks
2016
-
Incremental Forest: A DSL for Efficiently Managing Filestores
-
Optimizing Horn Solvers for Network Repair
-
Consistent Network Updates in Polynomial Time
-
Event-Driven Network Programming
-
Safe and Flexible Controller Upgrades for SDNs
-
Felix: Implementing Traffic Measurement on End Hosts Using Program Analysis
-
Probabilistic NetKAT
2015
-
Formal Foundations for Networking (Dagstuhl Seminar 15071)
-
A Fast Compiler for NetKAT
-
The Homeostasis Protocol: Avoiding Transaction Coordination Through Program Analysis
-
Efficient Synthesis of Network Updates
-
A Coalgebraic Decision Procedure for NetKAT
2014
-
Merlin: A Language for Provisioning Network Resources
-
Abstractions for Software-Defined Networks
-
NetKAT: Semantic Foundations for Networks
2013
-
Managing the Network with Merlin
-
Toward Synthesis of Network Updates
-
HotSwap: Correct and Efficient Controller Upgrades for Software-Defined Networks
-
FatTire: Declarative Fault Tolerance for Software-Defined Networks
-
Machine-Verified Network Controllers
-
Composing Software Defined Networks
-
Languages for software-defined networks
2012
-
Abstractions for Network Update
-
Splendid Isolation: A Slice Abstraction for Software-Defined Networks
-
Three Complementary Approaches to Bidirectional Programming
-
A Compiler and Run-time System for Network Programs
-
Specifying and Verifying the Correctness of Dynamic Software Updates
-
Language Abstractions for Software-Defined Networks
-
A Pairwise Abstraction for Round-Based Protocols
2011
-
Consistent Updates for Software-Defined Networks: Change You Can Believe In!
-
Frenetic: A Network Programming Language
-
Forest: A Language and Toolkit for Programming With Filestores
2010
-
Frenetic: A High-Level Langauge for OpenFlow Networks
-
Matching Lenses: Alignment and View Update
2009
-
Bidirectional Programming Languages
-
Provenance: A Future History
-
Bidirectional Transformations: A Cross-Discipline Perspective. GRACE Meeting notes, state of the art, and outlook
-
Updatable Security Views
2008
-
Annotated XML: Queries and Provenance
-
Boomerang: Resourceful Lenses for String Data
-
Quotient Lenses
-
A Generic Programming Toolkit for PADS/ML: First-Class Upgrades for Third-Party Developers
-
An Algebraic Approach to XQuery View Maintenance
-
Boomerang Programmer's Manual
2007
-
Provenance and Data Synchronization
-
A Logic Your Typechecker Can Count On: Unordered Tree Types in Practice
-
Exploiting Schemas in Data Synchronization
-
Combinators for Bidirectional Tree Transformations: A Linguistic Approach to the View Update Problem
2006
-
Actions Louder Than Words? MSO-Definable Transductions
-
A Theory of Featherweight Java in Isabelle/HOL
-
Harmony Programmer's Manual
2005
-
Harmony: A Generic Synchronization Framework for Heterogeneous, Replicated Data
-
Exploiting Schemas in Data Synchronization
-
Mechanized Metatheory for the Masses: The POPLmark Challenge
-
Combinators for Bidirectional Tree Transformations: A Linguistic Approach to the View Update Problem
2004
-
LOOJ: Weaving LOOM into Java
2003
-
Contexts, Boxes, and Names, Oh My!
-
Indexicals and Belief Reports
2002
-
Model Checking for a Functional Hardware Description Language
2001
-
Rupiah: Towards an Expressive Static Type System for Java