Software Foundations
The Software Foundations series is a broad introduction to the mathematical underpinnings of reliable<br>software.
The principal novelty of the series is that every detail is one hundred<br>percent formalized and machine-checked: the entire text of each volume,<br>including the exercises, is literally a "proof<br>script" for the Rocq proof assistant.
The exposition is intended for a broad range of readers, from advanced<br>undergraduates to PhD students and researchers. No specific background in<br>logic or programming languages is assumed, though a degree of mathematical<br>maturity is helpful. A one-semester course can expect to cover Logical<br>Foundations plus most of Programming Language<br>Foundations or Verified Functional Algorithms, or selections<br>from both.
Volume 1
Logical Foundations is the entry-point to the series. It covers<br>functional programming, basic concepts of logic, computer-assisted theorem<br>proving, and Coq.
Volume 2
Programming Language Foundations surveys the theory of programming languages, including<br>operational semantics, Hoare logic, and static type systems.
Volume 3
Verified Functional Algorithms shows how a variety of fundamental<br>data structures can be specified and mechanically verified.
Volume 4
QuickChick: Property-Based Testing in Coq<br>introduces tools for combining randomized<br>property-based testing with formal<br>specification and proof in the Coq ecosystem.
Volume 5
Verifiable C is an extended hands-on tutorial on specifying and<br>verifying real-world C programs using the Princeton Verified Software<br>Toolchain.
Volume 6
Separation Logic Foundations is an in-depth<br>introduction to separation logic—a practical approach to<br>modular verification of imperative programs—and how<br>to build program verification<br>tools on top of it.
Volume 7
Security Foundations studies the security of programs<br>by setting clear and rigorous security goals and<br>developing provable enforcement mechanisms.