Formal Methods

Table of Contents


A Map

graph LR;
    FormalModel;
    FormalMethod;
    FormalSpecification;
    FormalVerification;
    Logic;
    ModalLogic;
    TemporalLogic;
    LogicProgramming;
    ConstraintLogicProgramming;
    AutomaticTheoremProving;
    ProofAssistant;
    ModelChecker;
    SAT;
    3SAT;
    SMT;
    Types;
    Coq;
    Agda;
    Idris;
    Lean;
    Alloy;
    TLAPlus;
    PlusCal;
    Z3;
    Prolog;
    Datalog;
    MiniKanren;
    Souffle;
    Creusot;

    Logic-->ModalLogic;
    ModalLogic-->TemporalLogic;
    TemporalLogic-->TLAPlus;
    Logic-->Types;
    Logic-->ProofAssistant;
    Logic-->SAT;
    Types-->CategoryTheory;
    ProofAssistant-->Lean;
    SAT-->Z3;
    ModelChecker-->TLAPlus;
    ModelChecker-->Alloy;
    TLAPLus-->PlusCall;
    LogicProgramming-->Prolog;
    LogicProgramming-->Datalog;
    LogicProgramming-->MiniKanren;

General formal methods

Videos

Theorem proving

Coq

Agda

Videos

Formal specification

Alloy

Videos

TLA+

Leslie Lamport:

Hillel Wayne: Twitter Blog Github

Murat Demirbas: Twitter Blog

Jack Vanlightly: Twitter Blog

Lorin Hochstein: Twitter Blog Github

Ron Pressler: Twitter, Blog

Markus Kuppe:

Other:

TLA+ and consensus algorithms

Videos

Leslie Lamport:

Hillel Wayne:

Books

Leslie Lamport - Specifying Systems
  • I Getting started
    • 1 A little simple math
    • 2 Specifying a simple clock
    • 3 An asynchronous interface
    • 4 A FIFO
    • 5 A caching memory
    • 6 Some more math
    • 7 Writing a specification: some advice
  • II More advanced topics
    • 8 Liveness and fairness
    • 9 Real time
    • 10 Composing specifications
    • 11 Advanced examples
  • III The tools
    • 12 The syntactic analyzer
    • 13 The TLATEX typesetter
    • 14 The TLC model checker
  • IV The TLA+ language
    • 15 The syntax of TLA+
    • 16 The operators of TLA+
    • 17 The meaning of a module
    • 18 The standard modules
Practical TLA+
  • 2019/05 Book Review: Practical TLA+

  • Part I The Semantics of TLA+ and PlusCal

    • 1 An example
    • 2 PlusCal
    • 3 Operators and Functions
    • 4 Constants, Models and Imports
    • 5 Concurrency
    • 6 Temporal Logic
  • Part II Applying TLA+

    • 7 Algorithms
    • 8 Data Structures
    • 9 State Machines
    • 10 Business Logic
    • 11 MapReduce
    • A Math
    • B The PT Module
    • C PlusCal to TLA+

Quickstrom

Formal methods in Rust

Ralf Jung

Alastair Reed Blog

High Assurance Rust

RustBelt

Ferrocene

Kani

Magmide

  • GithubA dependently-typed proof language intended to make provably correct bare metal code possible for working software engineers.

TLA and Rust

Hacspec

  • https://hacspec.org/blog/posts/hax-v0-1/
  • https://github.com/hacspec/hax

Formal verification

Videos

Model checking

Videos

Compiler verification

CompCert

Videos