All Projects → mgrabovsky → fm-notes

mgrabovsky / fm-notes

Licence: other
Unassorted scribbles on formal methods, type theory, category theory, and so on, and so on

Programming Languages

Coq
218 projects
Makefile
30231 projects

Projects that are alternatives of or similar to fm-notes

RiscvSpecFormal
The RiscvSpecKami package provides SiFive's RISC-V processor model. Built using Coq, this processor model can be used for simulation, model checking, and semantics analysis. The RISC-V processor model can be output as Verilog and simulated/synthesized using standard Verilog tools.
Stars: ✭ 69 (+263.16%)
Mutual labels:  coq, formal-verification
Practical Fm
A gently curated list of companies using verification formal methods in industry
Stars: ✭ 272 (+1331.58%)
Mutual labels:  coq, formal-methods
coq jupyter
Jupyter kernel for Coq
Stars: ✭ 70 (+268.42%)
Mutual labels:  coq, theorem-proving
tutoriel wp
Frama-C and WP tutorial
Stars: ✭ 31 (+63.16%)
Mutual labels:  formal-methods, formal-verification
reasonml-tic-tac-toe
www.imandra.ai
Stars: ✭ 19 (+0%)
Mutual labels:  formal-methods, formal-verification
vsrl-framework
The Verifiably Safe Reinforcement Learning Framework
Stars: ✭ 42 (+121.05%)
Mutual labels:  formal-methods, formal-verification
Set-Theory
Coq encoding of ZFC and formalization of the textbook Elements of Set Theory
Stars: ✭ 55 (+189.47%)
Mutual labels:  coq, theorem-proving
intrepid
Intrepyd Model Checker
Stars: ✭ 14 (-26.32%)
Mutual labels:  formal-methods, formal-verification
koika
A core language for rule-based hardware design 🦑
Stars: ✭ 103 (+442.11%)
Mutual labels:  coq, formal-methods
Scallina
A Coq-based synthesis of Scala programs which are correct-by-construction
Stars: ✭ 65 (+242.11%)
Mutual labels:  coq, formal-methods
FreeSpec
A framework for implementing and certifying impure computations in Coq
Stars: ✭ 48 (+152.63%)
Mutual labels:  coq, formal-verification
awesome-rust-formalized-reasoning
An exhaustive list of all Rust resources regarding automated or semi-automated formalization efforts in any area, constructive mathematics, formal algorithms, and program verification.
Stars: ✭ 185 (+873.68%)
Mutual labels:  theorem-proving, formal-verification
Coq
Coq is a formal proof management system. It provides a formal language to write mathematical definitions, executable algorithms and theorems together with an environment for semi-interactive development of machine-checked proofs.
Stars: ✭ 3,566 (+18668.42%)
Mutual labels:  coq, theorem-proving
klever
Read-only mirror of the Klever Git repository
Stars: ✭ 18 (-5.26%)
Mutual labels:  formal-methods, formal-verification
high-assurance-legacy
Legacy code connected to the high-assurance implementation of the Ouroboros protocol family
Stars: ✭ 81 (+326.32%)
Mutual labels:  formal-methods, formal-verification
pandoc-lecture
This project defines a skeleton repo for creating lecture slides and handouts including lecture notes out of Pandoc Markdown (http://pandoc.org/MANUAL.html) using a single source approach.
Stars: ✭ 72 (+278.95%)
Mutual labels:  lecture-notes
vericert
A formally verified high-level synthesis tool based on CompCert and written in Coq.
Stars: ✭ 63 (+231.58%)
Mutual labels:  coq
handbook
Dwarves Foundation Employee Handbook
Stars: ✭ 31 (+63.16%)
Mutual labels:  handbook
gamma
An Eclipse-based modeling framework for the component-based design and analysis of reactive systems
Stars: ✭ 21 (+10.53%)
Mutual labels:  formal-verification
theolog-ss2017
Notizen zur TheoLog-Vorlesung mit Begriffen aus Formale Systeme. Hinweis: die Unterlagen sind für die VL in 2017 und können Fehler enthalten
Stars: ✭ 18 (-5.26%)
Mutual labels:  lecture-notes

This repository was originally intended as a log of my learning of the Coq proof assistant. My interests have since grown enormously in breadth and so the document has surpassed its original scope. At this moment, I'd like this place to collect and categorise interesting and useful resources on the theory and applications of various methods of formal verification. This includes topics such as theorem proving, higher-order logic, lambda calculus, type theory, model checking, automated reasoning and so on.

During my adventures in the software verification land, I too often grieved that there was no single book or website that would concisely and eloquently describe some of the methods of the field, the software packages it employed, the jargon or connections to other fields of research. To the best of my knowledge, there is still no such book, survey article, podcast or any other resource. My vision is to fill this gap and provide a sort of signpost or handbook for readers who are new to this area and are eager to learn all of it.

I do not yet claim completeness, correctness, consistency or usefulness of any of information contained herein.


Useful resources on Coq

Coq-related blogs

Libraries and plug-ins for Coq

Applications of Coq

Papers and articles using Coq

Related languages, tools and stuff

For tools, see also page on the Coq website.

Related ACM Special Interest Groups: SIGPLAN, SIGLOG and SIGACT.

Journals and book series

(† denotes open-access journals)

Meta

Conferences and workshops

See the standalone file.

Proof assistants, provers and languages

  • Lean – a new theorem prover developed by Microsoft and CMU with automation support; based on CIC, supports HoTT as well
  • Matita – based on (a variant of) CoC
  • Agda – a (relatively) new, hip dependently-typed functional language and interactive theorem prover
  • Idris – another new and hip "general purpose" language with dependent types, support for theorem proving and tactics; kind of like Coq-flavoured Haskell
  • Dedukti – proof checker based on the λΠ-calculus; tools for translation from other proof assistants available
  • the PRL Project a.k.a. Nuprl
    • MetaPRL
    • JonPRL (GitHub) – a reimplementation of Nuprl by Jon Sterling, Danny Gratzer and Vincent Rahli
    • Red JonPRL – yet another reincarnation by Jon Sterling
  • MetaPRL
  • miniprl – a minimal implementation of PRL in Standard ML
    • cha – an implementation in Haskell
  • Isabelle – great Archive of Formal Proofs; small trusted meta-logical core, usually used along with HOL
  • HOL by Michael Gordon et al. – the original system for interactive theorem proving in higher-order logic
  • MINLOG – interactive proof assistant based on first-order natural deduction calculus
  • ProofPower – based on higher-order logic
  • Mizar
  • ACL2 (A Computational Logic for Applicative Common Lisp) – logic for modelling systems and a complementary prover; based on first-order logic
  • Milawa – theorem prover for ACL2-like logic
  • ATS (Applied Type System) – dependently typed functional languge
  • E theorem prover for first-order logic
  • LEGO proof assistant
  • F7 – extension of F#'s type system with refinement types, dependent types and π-calculus-style concurrency
  • F* – "a new higher order, effectful programming language designed with program verification in mind"
  • Eff – functional language with first-class effects and native handling of all kinds of computational effects without touching monads
  • Twelf
  • Celf
  • Abella
  • Beluga
  • Delphin
  • Andromeda – type theory with equality reflection
  • Prover9 and Mace4 – and automated theorem prover for FOL and searcher for counterexamples, respectively
  • leanCOP – tiny automated theorem prover for classical first-order logic implemented in Prolog
  • PVS
  • Guru
  • MMT language and system

See also: Every proof assistant series of lectures.

Coq
Coq is an interactive theorem prover and proof assistant based on an intensional intuitionistic type theory -- the Calculus of Inductive Constructions (CIC). It is a dependently-typed λ-calculus and (by the Curry-Howard isomorphism) an intuitionistic higher-order logic. It is written in OCaml.

Model checkers

  • SPIN
  • DIVINE – parallel, distributed-memory explicit-state LTL checker
  • UPPAAL
  • TLA+
  • NuSMV – symbolic model checker
  • Ultimate Automizer – model checker based on an automata approach
  • LTSmin – language-agnostic
  • PRISM – probabilistic model checker
  • MMC – explicit-state model checker for π-calculus
  • CBMC – bounded model checking
  • ESBMC – context-bounded model checking
  • Nidhugg

SAT & SMT solvers

Other tools

  • Why3 – platform for deductive reasoning on programs with support for many external provers
  • Alloy – "a language and tool for relational models"
  • Boogie – intermediate verification language
  • Q Program Verifier – collection of tools for a source–IR–IVL translation and subsequent verification
    • SMACK – bounded verification via LLVM to Boogie translation
  • Dafny – "a language and program verifier for functional correctness"
  • Vienna Verification Toolkit
  • CSeq
  • IKOS – "library designed to facilitate the development of sound static analyzers based on Abstract Interpretation"
  • Crab – "language agnostic engine to perform static analysis based on abstract interpretation"
  • Seahorn – "fully automated verification framework for LLVM-based languages"
  • rise4fun – a collection of numerous tools, i.a. for program and algorithm analysis and verification, by Microsoft Research, CMU and others that you can try right on the web page
  • Profound – "an experiment in subformula linking as an interaction method"
  • S²E – "A Platform for In-Vivo Analysis of Software Systems"
  • KLEE – symbolic execution VM
  • CPAchecker
  • Ultimate
  • K Framework
  • Lem

Formal methods in practice

Learning resources

Courses, textbooks, papers, theses, competitions, influential figures in the field.

Type theory

Danny Gratzer's learn-tt is a fantastic resource for those interested in type and category theory. He presents all the terrific tools, textbooks, and papers that deal with both of these in a sensible and logical way, which is a quality that my repository will never have.

I'll only list here resources which he doesn't mention and which I personally find interesting.

Check out the TYPES mailing list as well.

Dependent types

Observational Type Theory

Univalent Foundations and Homotopy Type Theory

Cubical Type Theory

Copyright

Written in 2015–2020 by Matěj Grabovský

This work is licensed under a Creative Commons Attribution 4.0 International License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].