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.
https://github.com/newca12/awesome-rust-formalized-reasoning
Last synced: 5 days ago
JSON representation
About ##
Books code
Libraries
- numerous
- logic-rs - meaning-and-argument/lepore-about-the-book)βπ€ - parser of relational predicate logic & truth tree solver
- plar-rs - rs) - exploring John Harrison's Handbook of Practical Logic and Automated Reasoning.
- tapl - implementation of TAPL.
- TAPL in Rust - collection of implementations of TAPL (Chap 3-10,17,25).
- The Little Prover - little-prover) - transpiled J-Bob assistant & GUI frontend.
- the-little-typer - little-typer) - a Rust take on D.Friedman's book.
- tnt - implementation of Hofstader's "Typographical Number Theory" from the book GΓΆdel, Escher & Bach.
- types-and-programming-languages - Exercises from TAPL textbook + extras! (Chap 5-7,9-10)
- TAPL Implementations - collection of implementations of TAPL (Chap 3-7,9,11,13-14,19,22).
- program-proofs-prusti - proofs.com/) - examples and exercises from the book Program Proofs by K. Rustan M. Leino.
- harrison-rust - library for SAT solving and automated theorem proving derived from the book.
Kanren
Libraries
- Canrun - logic programming library inspired by the *Kanren family of language DSLs.
- miniKANREN - kanren)π€ - miniKANREN as a DSL.
- rslogic - logic programming framework for Rust inspired by Β΅Kanren.
- rust-kanren - loose interpretation of miniKanren and cKanren.
- Β΅Kanren-rs - implementation of Β΅Kanren.
Lambda Calculus
Libraries
- ~~lambda_calc~~ - command-line untyped lambda calculus interpreter.
-
lalrpop-lambda
- lambda)β - Ξ»-calculus grammar/interpretor written using LALRPOP and
Ξ»!. - blc - implementation of the binary lambda calculus.
- Closure Calculus - library for Barry Jay's Closure Calculus.
- lam - lambda calculus evaluator.
- Lamb - implementation of the pure untyped lambda calculus in modern, safe Rust.
- lambash - Ξ»-calculus shell.
- lambda_calculus - simple, zero-dependency implementation of pure lambda calculus in safe Rust.
- lambda_calculus - lambda calculus with antlr grammar.
- lambdacube - implementation of the lambda cube (and other type stuff).
- Lambda Shell - simple REPL shell for untyped lambda expressions.
- Lambdascript - educational tool illustrating beta reduction of untyped lamba terms.
- Lamcal - repl)π€ - lambda calculus parser and evaluator and a separate command line REPL.
- Pun Calculus - variant of Typed Lambda Calculus with generalized variable punning (ad-hoc polymorphism).
- RLCI - Overly-documented Lambda Calculus Interpreter.
- type-theory - typed Ξ»-calculus.
Programming Language
Libraries
- beta - dependently-typed programming language, aiming to support a cubical interpretation of univalence.
- egglog - language that combines the benefits of equality saturation and datalog.
- Fathom - declarative data definition language for formally specifying binary data formats.
- High-order Virtual Machine (HVM) - massively parallel, optimal functional runtime.
- isotope-prover-experiments - proposal/-/blob/main/report.tex)π₯Όπ - experimental dependently typed language supporting borrow checking.
- Kind - next-gen functional language and proof assistant.
- Last Order Logic - experimental logical language.
- minihl - formal methods playgorund for MiniHeapLang language.
- minitt-rs - util)βπ - became Voile.
- Narc - dependently-typed programming language with Agda style dependent pattern matching.
- Pika - small, performance-oriented, dependently typed ML with algebraic effects and unboxed types..
- Pikelet - small, functional, dependently typed programming language.
- proto-vulcan - vulcan)π¦ - miniKanren-family relational logic programming language.
- Rust pi-forall - forall/blob/2022/doc/oplss.pdf) - partial re-implementation of pi-forall.
- Scryer Prolog - prolog)β - modern Prolog implementation.
- SMT-language - lang) - Sat Modulo Theory Language.
- stupid-see - symbolic execution engine. Mainly targeted at the verification course in THU.
- tako - experimental programming language for ergonomic software verification.
- TIP - programming language aimed at teaching fundamental concepts of static program analysis.
- Untyped Concatenative Calculus - toy programming language and prototype for Dawn.
- Untyped Multistack Concatenative Calculus - toy programming language and prototype for Dawn.
- Voile - util)βπ€ - became Narc.
- zz - zymbolic verifier and tranzpiler to bare metal C.
- rooc - a language for compiling formal mathematical models into static models.
- Interaction Calculus - calculus)β - programming language (fit the optimal Ξ»-calculus reduction algorithm perfectly).
- norem-lang - pure functional programming language with automatic verification and effect system.
- reckon - programming language designed for reasoning tasks, proof checking, and logical inferencing.
- Last Order Logic - experimental logical language.
- Logicaffeine - language)π¦π¦π¦π¦π¦π¦π¦π¦π¦β - LOGOS compiles your words into programs, proofs, and formal systems.
- Lean-Claude - rewrite Lean4 Compiler in Rust, using only Claude Code.
- High-order Virtual Machine (HVM) - massively parallel, optimal functional runtime.
Projects
Libraries
- logic-parser - parser)π - library for lexing, parsing and visualizing logical expressions.
- mm0-rs - slides.pdf)π₯Ό - MM0/MM1 server and utilities.
- ~~rust-unify~~ - unify) β»οΈπ₯Ό - unification algorithum implementation.
- lpsolve - sys)π€ - high-level lpsolve wrapper.
- CNF Parser - parser)π€ - efficient and customizable parser for the .cnf file format.
- coq-rs - this program can parse Coq .vo files.
- DIMACS Parser - utilities to parse files in DIMACS .cnf or .sat file format.
- Exec-SAT - sat)π€ - provides routines to parse SAT solver output and to execute SAT solver.
- Flussab CNF - cnf) - parsing and writing of the DIMACS CNF file format.
- FRAT-rs - toolchain for processing and transforming files in the FRAT format.
- Lambda Calculus Parser - Ξ»-calculus parser.
- Lambda Term Parsing - explores different parser designs for a simple lambda term grammar.
- logic-form - form)π€ - library for representing Cube, Clause, CNF and DNF.
- lp_parser_rs - LP file parser.
- mmb-parser - parser) - parser for the Metamath Zero binary proof format.
- mps - fast MPS parser.
- olean-rs - parser/viewer for olean files.
- RustLogic - march1917) - parsing and handling simple logical expressings.
- smt2 - SMT-LIB 2 parsing library.
- tptp - parse the TPTP format.
- boolector - safe high-level bindings for the Boolector SMT solver.
- bitwuzla-sys - sys) - low-level bindings for the Bitwuzla SMT solver.
- boolector-sys - sys) - low-level bindings for the Boolector SMT solver.
- cadical-rs - bindings for the CaDiCaL SAT solver.
- cat_solver - bindings for the Kissat SAT solver.
- cplex-rs - rs)π¦ - safe rust bindings for CPLEX.
- cryptominisat-rs - bindings for CryptoMiniSat.
- falcon-z3 - z3) - bindings for Z3.
- highs - safe rust bindings for the HiGHS linear programming solver.
- highs-sys - sys) - bindings for the HiGHS linear programming solver.
- IPASIR - FFI bindings for the IPASIR incremental SAT solver interface.
- isabelle-client - client) - client to interact with an Isabelle server.
- Kissat-rs - bindings for the Kissat SAT solver.
- lean-sys - sys) - bindings to Lean 4's C API.
- libsmt.rs - bindings for SMTLIB2.
- LogicNG - library for creating, manipulating and solving Boolean and Pseudo-Boolean formulas.
- maxpre-rs - bindings for the (multi-objective) MaxSAT preprocessor MaxPre.
- pblib-rs - rs) - safe bindings for pblib.
- rplex - bindings for CPLEX.
- rsmt2 - zz)βπ€ - generic library to interact with SMT-LIB 2 compliant solvers.
- russcip - safe Rust interface for SCIP.
- Rust-SMT-LIB-API - generic high-level API for interacting with SMT solvers.
- rust_z3prover - use Z3 SMT solver from rust.
- rustproof-libsmt - libsmt)π€ - fork of libsmt.rs.
- SAT Nexus - interfaces and wrappers for SAT solvers.
- scip-sys - sys) - raw rust bindings to SCIP.
- smt_sb-rs - rs) - Z3 SMT Simple Binding.
- smtlib - lowlevel)π¦ - high-level API for interacting with SMT solvers.
- vipers - crates for interacting with the Viper verification infrastructure.
- Yices2 - sys) - low and high-level bindings to the Yices2 SMT solver.
- z3 - sys)βπ₯ - high-level and low-level Rust bindings for the Z3 solver.
- z3-rust - high level bindings for the Microsoft's Z3 SMT solver.
- Z3D - Z3 DSL interface.
- anthem - translate answer set programs to first-order theorem prover language.
- bool2dimacs - transfer boolean expression to dimacs directly.
- CNFGEN - create boolean formulae from boolean expressions and integer expressions.
- Cnfpack - converts between DIMACS CNF file format and the compressed binary Cnfpack format.
- hz-to-mm0 - translator from HOL Zero / Common HOL to Metamath Zero.
- Metamath hammer - tool for automatically proving Metamath theorems using ATPs.
- rust-smt-ir - smt-ir)π¦β - intermediate representation (IR) in Rust for SMT-LIB queries.
- AbsoluteUnity - think Prolog, but less capable.
- Alice_rs - implementation of a decision procedure for A Decidable Fragment of Separation Logic.
- auto - decision procedure for intuitionistic logic.
- Avatar Hypergraph Rewriting - hypergraph rewriting system with avatars for symbolic distinction.
- coc - the calculus of constructions.
- compiler - compiler)π€π€ - trivial compiler framework for Metamath Zero binary proofs.
- discrimination-tree - tree) - discrimination tree term indexing.
- easy-smt - smt)β - easy SMT solver interaction (Inspired by the simple-smt haskell package.).
- egg - flexible, high-performance e-graph library.
- epilog - collection of Prolog-like tools for inference logic.
- FALL - easily embeddable, futures-friendly logic engine.
- foliage - first-order logic with integer arithmetics.
- fuzzylogic - provides operations and inference for fuzzy set theory.
- Joker Calculus - implementation of Joker Calculus in Rust.
- Kravanenn - set of tools for Coq.
- logic-lang - lang) - structural logic based on equivalence graphs.
- logical_solver - library for solving and parsing logical equations.
- LogRu - small, embeddable and fast interpreter for a subset of Prolog.
- mmb-binutils - utility tools for Metamath Zero binary proof files.
- mmb-types - types)π€ - library containing the definitions of the opcodes in the Metamath Zero binary proof files.
- moniker - derive)βπ€ - automagical variable binding library.
- nanoda - became nanoda-lib.
- nanoda_lib - type inference/checking functionality based on the Lean theorem prover.
- nnf - Negation Normal Form manipulation library.
- polytype - Hindley-Milner polymorphic typing system.
- program-induction - library for program induction and learning representations.
- ruler - rewrite rule inference using equality saturation.
- Rust First Order Logic - syntax of First Order Logic with self-consistent logical assertions.
- rust-nbe-for-mltt - normalization by evaluation for Martin-LΓΆf Type Theory with dependent records.
- rust-smt-strings - smt-strings) - library for strings as defined in the SMT-LIB theory of strings.
- RustSAT - batsat)π¦π¦π¦π¦π¦π¦π¦β - provide elements commonly used in satisfiability solving software.
- Rusty Razor - fol)π¦βπ€ - tool for constructing finite models for first-order theories.
- sat_toasty_helper - convenient way to write and solve SAT constraints.
- Satoxid - library to help with encoding SAT problems.
- smt2utils - libraries and tools for the SMT-LIB-2 standard.
- smtlib-syntax - syntax) - syntactic types the for the SMT-LIB 2.6 spec. Meant for code generation, not parsing.
- term-rewriting-rs - representing, parsing, and computing with first-order term rewriting systems.
- tribool - three-valued logic.
- The Trivial Metamath Zero kernel - kernel)π€ - Metamath Zero kernel for Trivial.
- Whisper - logic Programming DSL.
- clingo-rs - derive)π¦β - idiomatic bindings to the clingo library.
- Patronus - btor2 parser, wip hardware bug-finding toolkit.
- isabelle export tool - parser for isabelle database files.
- rssat - bindings for multiple popular SAT solvers, superseded by satgalaxy-rs.
- Decdnnf-rs - translating formulas generated by d4 into the format generated by c2d.
- cadical-sys - sys) - almost complete safe and unsafe bindings for the CaDiCal SAT solver.
- EasyZ3 - simplified API to get started with the z3 SAT solver.
- lean-sys - sys)β - bindings to Lean 4's C API.
- satgalaxy-rs - FFI bindings for satgalaxy-core bringing high-performance SAT solving to Rust.
- pindakaas - cadical)π¦π¦π¦π¦ - transform integer and pseudo Boolean constraints into conjunctive normal form.
- rsmaxsat - bindings for EvalMaxSAT .
- Espresso Logic Minimizer - logic)π¦ - bindings to the Espresso heuristic logic minimiser from UC Berkeley.
- CNFGEN 2 - newer version of CNFGEN - DIMACS CNF generator.
- smt-str - str) - data structures and utilities to parse, manipulate, and reason about SMT-LIB strings.
- Joker Calculus - implementation of Joker Calculus in Rust.
- program-induction - library for program induction and learning representations.
- vampire-rs - prover)π¦ - safe Rust bindings to the Vampire theorem prover for first-order logic with equality.
- Yaspar - a parser for the SMT-LIB 2.7 language generated by the LARLPOP parser generator.
- Logician - type-safe SMT solver driver.
- sat-interface - interface) - abstraction interface for SAT solvers.
- sat-solvers - solvers) - unified Rust interface to multiple SAT solvers with automatic source compilation.
- Yaspar-IR - ir) - provides a few representations of SMT scripts and other functionalities.
- Leo3 - ffi)π¦π¦ - safe, ergonomic Rust bindings to the Lean4 theorem prover, inspired by PyO3's architecture..
- cvc5-rs - rs)π¦ - safe, high-level Rust bindings for the cvc5 SMT solver.
- xmt-lib - lib) - grounder for SMT solvers.
- logic-form - form)π€ - library for representing Cube, Clause, CNF and DNF.
- cplex-rs - rs)π¦ - safe rust bindings for CPLEX.
Provers and Solvers
- ~~cobalt~~ - a wip minimal proof assistant.
- Proost - simple proof assistant.
- meancop - became CoP.
- lazyCoP - automatic theorem prover for first-order logic with equality.
- lerna - proves theorems.
- lickety - prototype system for linear resolution with splitting.
- Serkr - automated theorem prover for first order logic with equality.