About
An exhaustive list of all Rust resources regarding automated or semi-automated formalization efforts in any area, constructive mathematics, formal algorithms, and program verification.
As of May 29, 2022, proof of computation & cryptographic stuff are considered off-topic.
awesome-rust-formalized-reasoning is an EDLA project.
The purpose of edla.org is to promote the state of the art in various domains.
Contents
Legend
- Actively maintened :fire:
- Announcement :loudspeaker:
- Archived :skull:
- Benchmark :watch:
- Best in Class :diamonds:
- Book implementation :book:
- Crate(s) :package:
- Crates keyword fully listed :100:
- Deleted by author :recycle:
- Educational project :mortar_board:
- Exhumated :ghost:
- Inactive :zzz:
- List of resources :information_source:
- Paper with code :factory:
- Popular :star:
- Research paper :lab_coat:
- Toy project :baby_chick:
- Vibe coding :robot:
- Video :tv:
- Web demo :eyes:
- WIP :construction:
Projects
Provers and Solvers
Provers TPTP compliant
SAT Solver
Solver MPS compliant
Proof assistant
Misc
Verification
Misc
Libraries
Parser
Bindings
Translator
Misc
Books code
There is numerous implementations of TAPL :book:, we keep only the most popular and keep an eye on implementations that worth attention.
Programming Language
- beta - dependently-typed programming language, aiming to support a cubical interpretation of univalence.
- egglog :package::star::lab_coat: - language that combines the benefits of equality saturation and datalog.
- Fathom :package::star::construction: - declarative data definition language for formally specifying binary data formats.
- High-order Virtual Machine (HVM) :star: - massively parallel, optimal functional runtime.
- Interaction Calculus :package::star: - programming language (fit the optimal λ-calculus reduction algorithm perfectly).
- isotope-prover-experiments :lab_coat::lab_coat::skull: - experimental dependently typed language supporting borrow checking.
- Kind :package::star: - next-gen functional language and proof assistant.
- Last Order Logic :package: - experimental logical language.
- Lean-Claude - rewrite Lean4 Compiler in Rust, using only Claude Code.
- Logicaffeine :package::package::package::package::package::package::package::package::package::package::package::star: - compiles your words into programs, proofs, and formal systems.
- minihl - formal methods playgorund for MiniHeapLang language.
- minitt-rs :package::package::star::skull: - became Voile.
- Narc :package::star::zzz: - dependently-typed programming language with Agda style dependent pattern matching.
- norem-lang - pure functional programming language with automatic verification and effect system.
- Pika :star::construction: - small, performance-oriented, dependently typed ML with algebraic effects and unboxed types..
- Pikelet :package::star::zzz: - small, functional, dependently typed programming language.
- proto-vulcan :package::package: - miniKanren-family relational logic programming language.
- reckon :star: - programming language designed for reasoning tasks, proof checking, and logical inferencing.
- rooc :mortar_board::star: - a language for compiling formal mathematical models into static models.
- Rust pi-forall :lab_coat: - partial re-implementation of pi-forall.
- Scryer Prolog :package::star: - modern Prolog implementation.
- SMT-language :package: - Sat Modulo Theory Language.
- stupid-see :baby_chick::zzz: - symbolic execution engine. Mainly targeted at the verification course in THU.
- tako - experimental programming language for ergonomic software verification.
- TIP :baby_chick::zzz: - programming language aimed at teaching fundamental concepts of static program analysis.
- Untyped Concatenative Calculus :zzz: - toy programming language and prototype for Dawn.
- Untyped Multistack Concatenative Calculus - toy programming language and prototype for Dawn.
- Voile :package::package::star::zzz: - became Narc.
- zz :package::star::skull: - zymbolic verifier and tranzpiler to bare metal C.
Kanren
Lambda Calculus
Propositional logic
Unclassified
Resources
Books
Research Paper & Thesis
Demos
Blogs
Posts
Crates keywords
- Mikko Aarnos - Serkr.
- Johannes Altmanninger - rate.
- ammkrn -
nanoda, nanoda_lib, second_opinion.
- AndPuQing - Leo3.
- Bruno Andreotti - Carcara.
- Arata - lutrix.
- arbaregni - resolution-prover.
- astrobeastie - sequentprover.
- Alexis Aurandt - r2u2_core.
- Yechan Bae - Rudra, Satire.
- Clark Barrett -
Rust-SMT-LIB-API.
- Mathieu Baudet -
smt2utils.
- Mike Beaumont - rust-sat.
- Antoine Belvire - Croissant.
- Tim Beurskens - RsBDD.
- Matteo Biggio - cplex-rs.
- Aurel Bílý - program-proofs-prusti.
- Justin Blanchard - cat_solver.
- boitsov14 - theorem-prover-rs.
- James Bornholt - rustsat(2), Shuttle.
- Henrik Böving - Obvious.
- Oliver Bøving - Mist, smtlib, vipers.
- Lee ByeongJun - Lambda Calculus Parser.
- Bickio O'Callahan - Solving The Witness with Z3.
- Pierre Carbonnelle - m2cSMT, xmt-lib.
- Mario Carneiro - coq-rs, FRAT-rs, hz-to-mm0, isabelle export tool, Metamath hammer, Metamath-knife, Mizar proof checker, mm0-rs, olean-rs.
- Tej Chajed - Temporal Verifier.
- Adrien Champion - hoice,
Kinō, matla, Mikino, rsmt2, SAT-MICRO, Verification for Dummies.
- David Chanin - Tensor Theorem Prover.
- Michelle Cheatham - rusty-logic.
- Thomas Chaumeny - Satisfaction.
- Jimmy Chen Chen - theorem-prover.
- Alex Chew - Z3D.
- Konstantin Chukharev - SAT Nexus, backdoor-solver.
- Guillaume Claret - coq-of-rust, Formal Land.
- Cobalt - SAT solver ANalyser.
- CoCoSol - logiq.
- Lorenzo Colombini - Colombini-SAT.
- convexbrain - Totsu.
- David Cox - mps.
- Simon Cruanes - BatSat.
- Dacit - Sequent solver.
- dandxy89 - lp_parser_rs.
- Azeez Daoud - ceetle.
- DavidD12 - SMT-language, smt_sb-rs.
- Ariel Davis - coc.
- Liam Davis - StalmarckSAT.
- Jip J. Dekker - pindakaas.
- Xavier Denis - Creusot, RustHornBelt: A Semantic Foundation for Functional Verification of Rust Programs with Unsafe Code, RustHornBelt Library & Benchmarks, Rust verification tools (2021), Specifying and Verifying Higher-order Rust Iterators (2023), A hybrid approach to semi-automated Rust verification (2024), Visions of the future: formal verification in Rust.
- Sushant Dinesh - libsmt.rs.
- Sylvie Dirkswager - Pika.
- Craig Disselkoen - boolector.
- Andrei Dobrescu, Marian Călborean - INCL Automated Theorem Prover.
- Dragon-Hatcher - Type System Chess, vampire-rs, watson.
- Mark Drobnak - p4-analyzer.
- Bruno Dutertre - rust-smt-ir, rust-smt-ir-examples, rust-smt-strings.
- Thomas Dziedzic - lambda_calculus.
- Kurt Ehlert - ellp.
- Trevor Elliott - auto, easy-smt.
- endeav0r - falcon-z3.
- Enkelmann - cwe_checker.
- Aodhnait Étaín - Esther.
- Michael Färber - CoP, Kontroli, Lambda Term Parsing, meancop, research notebook about improving with Rust the performance of nonclausal automated theorem provers.
- Nathan Fenner - sat_toasty_helper.
- Jonáš Fiala - SMTSCOPE.
- FireFighterDuck - Alice_rs, Kissat-rs, minihl.
- Paolo Flores - logic-parser.
- Hugo Frezat - logic-lang.
- Robin Freyler - CNF Parser, DIMACS Parser, Stevia.
- Lennard Gäher - RefinedRust.
- Galois, Inc. - crux-mir.
- Alexey Gerasimov - Liquid Rust.
- Jad Ghalayini -
isotope-prover-experiments, lean-sys.
- Mohammed Ghannam - russcip, scip-sys.
- Nicola Gigante - ::formally.
- Nathan Graule - rs-logik.
- Brandon H. Gomes - qbar.
- Vinicius Gomes - NanoSAT,
satsol.
- William Goodall - roq.
- Robert Grosse - cryptominisat-rs.
- Alexandru Jercan - Croof.
- Travis Hance - verified-memory-allocator.
- Masaki Hara - Logic solver, RatSat.
- Jannis Harder - Cnfpack, Flussab CNF, Minimal models, starlit, Varisat, Varisat notebook.
- David S. Hardin - Hardware/Software Co-Assurance using the Rust Programming Language and ACL2, Verification of a Rust Implementation of Knuth's Dancing Links using ACL2.
- Tristen Harr - Logicaffeine.
- Rowan Hart - Yices2.
- Timothée Haudebourg - smt2.
- Reuben Hillyard - beta.
- Son HO - Charon.
- Sarek Høverstad Skotåm - CreuSAT.
- Hoblovski - stupid-see, stupid-smt.
- Graydon Hoare - Some notes on Rust, mutable aliasing and formal verification.
- Emil Hofstetter - mini-prop, prop_tune.
- Khaled Hosseini - Propositional logic evaluator.
- hrkzmnm - rust_z3prover.
- Jason Hu - cvc5-rs, sat-interface, Yaspar, Yaspar-IR.
- Tero Huttunen - proto-vulcan.
- Noel Huibers - Hashi - Bridges Puzzle.
- ibrahimcesar - lolli.
- Christoph Jabs - Scuttle, maxpre-rs, rustsat.
- Bart Jacobs - VeriFast.
- Alex Jackson - sat-solvers.
- Jan - Plogic.
- Paweł Jastrzebski - Propositional Logic.
- Ranjit Jhala - flux-demo.
- Andrew Johnson - LSTS, Pun Calculus, Relog.
- Evan Johnson - VeriWasm.
- Dylan R. Johnston - Formally Verifying Rust's Opaque Types.
- Matthias Jugan - LogicNG, logicng-open-wbo-sys.
- Ralf Jung - Understanding and Evolving the Rust Programming Language, Miri: Practical Undefined Behavior Detection for Rust.
- Oskari Jyrkinen - Axiom Profiler 2.0.
- jzbor - Lambda Shell.
- Carl Kadie - Check AI-Generated Code Perfectly and Automatically.
- Hosein Kalbasi - akim.
- Igor Kalichevski - nnf.
- karroffel - contracts.
- Anto Keinänen - logical_solver, logical_tui.
- Franziskus Kiefer - Hax.
- Tetsuya Kitahata - Legalis-RS, OxiLean, OxiZ.
- Mike Kuykendall - Logician.
- Rahul Kumar - How Open Source Projects are Using Kani to Write Better Software in Rust, Rust std-lib verification.
- Prateek Kumar -
msat, rsat, slp, SolHOP.
- Alexey Kutepov - Noq.
- Kevin Lacker - Acorn.
- Ivan Ladelshchikov - nonogrid.
- Kevin Laeufer - Patronus.
- Aleksandr Larionov - bootfrost.
- Andrea Lattuada - verus.
- lcnr -
cobalt.
- Shea Leffler - tarpit-rs, whisper.
- Alessandro Legnani - VeriFactory.
- Nico Lehmann - Flux.
- Carl Lerche - Loom.
- Chuck Liang - Lambdascript.
- Nathan Lilienthal - lambash, lalrpop-lambda.
- ljedrz - blc, lambda_calculus.
- Ophir LOJKINE - highs, highs-sys, good_lp.
- Emmanuel Lonca - Decdnnf-rs, Ipasir-loading, pblib-rs, scalop.
- Kevin Lotz - isabelle-client, smt-str.
- Andrew Luka - cadical-sys.
- Patrick Lühne - anthem, foliage.
- Michael Madden - Xori.
- Scott J Maddox - Untyped Concatenative Calculus, Untyped Multistack Concatenative Calculus.
- Indraneel Mahendrakumar - Lamb.
- Harald Maida - Lamcal.
- Krzysztof Małysa -
prover.
- Manas - fuzzylogic.
- MarcoTz - TAPL Implementations.
- Miklos Maroti - cadical-rs, relsat-rs, uasat-rs.
- marshtompsxd - verifiable-controllers.
- Niko Matsakis - Chalk, Kani, plar-rs.
- Yusuke Matsushita - Extensible Functional-Correctness Verification of Rust Programs by the Technique of Prophecy, RustHorn.
- mbillingr - miniKANREN, The Little Prover, the-little-typer.
- adam mcdaniel - reckon.
- mcmfb -
lambda_calc.
- Tom Meyer - Granite.
- Alexander Mishunin - minisat-rust.
- Proloy Mishra - lam, nnoq, nyaya.
- Bruce Mitchener - z3.
- Lucas Morales - polytype, program-induction.
- Jesse Mu - satyrs.
- Dominic Mulligan - Supervisionary.
- Jon Nadal - Stateright.
- Chandrakana Nandi - Ruler.
- neuring - rummy_to_sat, Satoxid.
- Sven Nilsen - Avalog, Avatar Hypergraph Rewriting, Caso, Debug-SAT, hooo, Joker Calculus, Last Order Logic, linear_solver, Monotonic-Solver, pocket_prover, pocket_prover-set, Poi, Prop, reachability_solver.
- Yuichi Nishiwaki - shari.
- Chase Norman - Canonical.
- Stefan O'Rear - smetamath.
- Robert Obkircher - sat-solver.
- Adolfo Ochagavía - An adventure with optimization, Rust and Z3.
- Jan Onderka - Machine-check.
- Edgar Onghena - inf402.
- Alex Ozdemir - rlfsc.
- Mohsen Pakzad - Rustplex.
- PatrickTheElder - EasyZ3.
- Chris Patuzzo - Supermux, Supersat.
- Pierre-Marie Pédrot - Kravanenn.
- Hugo Peters - Cracking the Cryptic (with Z3 and Rust).
- Arvid E. Picciani - zz.
- Anton Ping - norem-lang.
- Dan Pittman - Bounded Registers.
- Gabriel Poesia - minimo.
- Nadia Polikarpova - cyclegg.
- Christian Poveda -
Chevre.
- Bobby Powers - Logically Qualified Data Types.
- Joshua Pratt - ArcsJs - Provable, tako.
- petersn - autosat.
- Boqin Qin - lockbud.
- Armaan Rashid - implies.
- Michael Rawson - discrimination-tree, lazyCoP,
lerna, lickety, HopCoP, SATCoP, tptp.
- Alastair Reid - Articles about a collection of tools/libraries to support both static and dynamic verification of Rust programs, Rust Software Verification Benchmarks, Rust verification tools, Rust verification tools list.
- Adrien Renaudineau - sat_lab.
- Fernando Bryan Reza Campos - Logic Tracer.
- Corey Richardson - lpsolve.
- Nathan Ringo - FALL.
- Benjamin Rogers-Newsome - Rust First Order Logic.
- Erik Rohkohl - n-queens-sat.
- Olivier ROLAND - mrs, mrs-tptp.
- Marco Concetto Rudilosso - validator.
- Josh Rule - formal-systems-learning-rs, list-routine-learning-rs, term-rewriting-rs.
- Salman Saghafi - rust-z3-practice, Rusty Razor.
- Michael Salter - Rustproof, rustproof-libsmt.
- Marcos Sartori - Espresso Logic Minimizer.
- Robert Scheidegger - microsat.
- Daniel Schemmel - DRSAT.
- Ryan Schroeder - AbsoluteUnity, epilog.
- Carol Schulze - gpp-solver.
- Klas Segeljakt - type-theory.
- shinkwhek - SAT solver.
- skbaek - t3p.
- Narazaki Shuji - SAT-bench, Splr, Splr notebook, sudoku_sat.
- Konstantin Sidorov - How to discover short, shorter, and the shortest proofs of unsatisfiability, simple-stat.
- Jörg Singer - raa_tt.
- J David Smith - rplex.
- SnO₂WMaN - rust-proplogic-toylang.
- snsinfu - dpll-sat.
- Takehide Soh - bddminisat-sys.
- Mikhail Solovev - bitwuzla-sys, boolector-sys.
- Ben Sparkes - otter_sat.
- Specy - microlp, rooc.
- Dennis Sprokholt - aws-lambda-z3, Rust pi-forall.
- Will Sturgeon - Junglefowl.
- Yuheng Su - logic-form, rIC3 Hardware Model Checker.
- SymmetricChaos - tnt.
- Mateusz Szpakowski - CNFGEN, CNFGEN 2, Exec-SAT.
- Lucas Tabary-Maujean - Proost.
- Victor Taelin - High-order Virtual Machine (HVM), Kind2, Interaction Calculus.
- Calin Tataru - homotopy-rs.
- Sven Thiele - clingo-rs.
- Mark Thom - Scryer Prolog.
- Fabian Thorand - LogRu.
- Arthur Tilley - harrison-rust.
- Hitoshi Togasaki - scrapsat, screwsat.
- Callum Tolley - plc.
- William Towler - type-proof.
- Aaron Trent - tribool.
- Sebastian Ullrich - A Formal Verification of Rust's Binary Search Implementation, electrolysis, Simple Verification of Rust Programs via Functional Purification.
- V4kst1z - tapl, TIP.
- Alexa VanHattum - Artifact Evaluation: Kani Rust Verifier (Kani).
- Noel vanSchaick - clawgic.
- Pavol Vargovčík - z3-rust.
- Herman Venter - MIRAI, Rust static analysis/verification reading and resources.
- Mark Verleg - prover(2).
- Nathaniel Victor - SAT Solver(2).
- Nikita Voronov - RLCI.
- Xinyi Wan - vostd.
- John Wang - rust-metamath.
- Shuxian Wang - QED Prover.
- Max Willsey - egg, egglog.
- Ivo Wingelaar - compiler, mmb-binutils, mmb-parser, mmb-types, The Trivial Metamath Zero kernel, Verifier.
- Jan Winkelmann - smtlib-syntax.
- wvhulle - lean-tui.
- Florian Würmseer - SAT-Solver.
- Jieyou Xu - Propositional Tableaux Solver.
- Chenyuan Yang - AutoVerus: Verus Proof Synthesis.
- Ren Yanjie - bool2dimacs, RustLogic.
- Yi Cai - vest.
- Brendan Zabarauskas - Fathom, moniker, Pikelet, rust-nbe-for-mltt.
- Bas Zalmstra - Resolvo.
- Alexey Zatelepin -
minilp.
- Xiyu Zhai - Lean-Claude.
- Eric Zhang - µKanren-rs.
- Hanliang Zhang - sat.
- Tesla Ice Zhang -
minitt-rs, Narc, Voile.
- Lin Zhengyao - verdict.
- Xie Zhongtao - rsmaxsat,
rssat, satgalaxy-rs.
- Felix Zhu - lambdacube.
- Li Zhuohua - MirChecker.
- Philip Zucker - res-rs.