RustBelt: Securing the foundations of the Rust programming language

R Jung, JH Jourdan, R Krebbers, D Dreyer - Proceedings of the ACM on …, 2017 - dl.acm.org
Rust is a new systems programming language that promises to overcome the seemingly
fundamental tradeoff between high-level safety guarantees and low-level control over …

Verdi: a framework for implementing and formally verifying distributed systems

JR Wilcox, D Woos, P Panchekha, Z Tatlock… - Proceedings of the 36th …, 2015 - dl.acm.org
Distributed systems are difficult to implement correctly because they must handle both
concurrency and failures: machines may crash at arbitrary points and networks may reorder …

Refinement types: A tutorial

R Jhala, N Vazou - Foundations and Trends® in …, 2021 - nowpublishers.com
Refinement types enrich a language's type system with logical predicates that circumscribe
the set of values described by the type. These refinement predicates provide software …

Idris 2: Quantitative type theory in practice

E Brady - arxiv preprint arxiv:2104.00480, 2021 - arxiv.org
Dependent types allow us to express precisely what a function is intended to do. Recent
work on Quantitative Type Theory (QTT) extends dependent type systems with linearity, also …

Planning for change in a formal verification of the raft consensus protocol

D Woos, JR Wilcox, S Anton, Z Tatlock… - Proceedings of the 5th …, 2016 - dl.acm.org
We present the first formal verification of state machine safety for the Raft consensus
protocol, a critical component of many distributed systems. We connected our proof to …

Secure distributed programming with value-dependent types

N Swamy, J Chen, C Fournet, PY Strub… - ACM SIGPLAN …, 2011 - dl.acm.org
Distributed applications are difficult to program reliably and securely. Dependently typed
functional languages promise to prevent broad classes of errors and vulnerabilities, and to …

QED at large: A survey of engineering of formally verified software

T Ringer, K Palmskog, I Sergey… - … and Trends® in …, 2019 - nowpublishers.com
Abstract Development of formal proofs of correctness of programs can increase actual and
perceived reliability and facilitate better understanding of program specifications and their …

Programming and proving with distributed protocols

I Sergey, JR Wilcox, Z Tatlock - … of the ACM on Programming Languages, 2017 - dl.acm.org
Distributed systems play a crucial role in modern infrastructure, but are notoriously difficult to
implement correctly. This difficulty arises from two main challenges:(a) correctly …

Mechanized verification of fine-grained concurrent programs

I Sergey, A Nanevski, A Banerjee - Proceedings of the 36th ACM …, 2015 - dl.acm.org
Efficient concurrent programs and data structures rarely employ coarse-grained
synchronization mechanisms (ie, locks); instead, they implement custom synchronization …

Scilla: a smart contract intermediate-level language

I Sergey, A Kumar, A Hobor - arxiv preprint arxiv:1801.00687, 2018 - arxiv.org
This paper outlines key design principles of Scilla---an intermediate-level language for
verified smart contracts. Scilla provides a clean separation between the communication …