Code Monkey home page Code Monkey logo

newca12 / awesome-rust-formalized-reasoning Goto Github PK

View Code? Open in Web Editor NEW
277.0 13.0 9.0 285 KB

An exhaustive list of all Rust resources regarding automated or semi-automated formalization efforts in any area, constructive mathematics, formal algorithms, and program verification.

License: MIT License

formal-verification prover automated-theorem-provers theorem-prover reasoning logic constructive-mathematics dependent-types theorem-proving proof-assistants

awesome-rust-formalized-reasoning's Introduction

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 πŸ”₯
  • Archived πŸ’€
  • Benchmark ⌚
  • Best in Class ♦️
  • Book implementation πŸ“–
  • Crate(s) πŸ“¦
  • Crates keyword fully listed πŸ’―
  • Deleted by author ♻️
  • Educational project πŸŽ“
  • Exhumated πŸ‘»
  • Inactive πŸ’€
  • List of resources ℹ️
  • Popular ⭐
  • Research paper implementation πŸ₯Ό
  • Toy project 🐀
  • Video πŸ“Ί
  • WIP 🚧

Projects

Provers and Solvers

Provers TPTP compliant

  • CoP πŸ“¦ - reimplement automated theorem provers of the leanCoP family, such as leanCoP and nanoCoP.
  • lazyCoP βŒšπŸ’€ - automatic theorem prover for first-order logic with equality.
  • lerna πŸ’€ - proves theorems.
  • lickety - prototype system for linear resolution with splitting.
  • meancop πŸ“¦β™»οΈ - became CoP.
  • Serkr β­πŸ‘» - automated theorem prover for first order logic with equality.
  • theorem-prover-rs - rewrite of theorem-prover-kt a sequent-style automated theorem prover.

SAT Solver

  • BatSat πŸ“¦β­ - solver forked from ratsat, a reimplementation of MiniSat.
  • Colombini-SAT - simple 3-SAT solver.
  • CreuSAT ⭐ - formally verified SAT solver verified with Creusot.
  • Debug-SAT πŸ“¦ - debuggable automatic theorem prover for boolean satisfiability problems (SAT).
  • dpll-sat πŸ’€ - naΓ―ve SAT solver implementing the classic DPLL algorithm.
  • DRSAT - Daniel's Rusty SAT solver.
  • lutrix πŸ’€ - SAT/SMT Solver.
  • minisat-rust β­πŸ’€ - experimental minisat SAT solver.
  • msat πŸ“¦πŸ’€ - MaxSAT Solver.
  • RatSat πŸ“¦πŸ“¦β­πŸ’€ - reimplementation of MiniSat.
  • Resolvo πŸ“¦β­ - fast package resolver (CDCL based SAT solving).
  • rsat πŸ“¦πŸ’€ - SAT Solver.
  • RsBDD - Reduced-order Binary Decision Diagram (RoBDD) SAT solver.
  • rust-sat πŸ’€ - SAT solver that accepts input in the DIMACS CNF file format.
  • rustsat 🐀 - toy SAT solver.
  • sat - simple CDCL sat solver.
  • SAT solver πŸ€πŸ’€ - SAT solver.
  • SAT-MICRO πŸ₯Ό - reimplementation of the SAT-solver described in 'SAT-MICRO: petit mais costaud!'.
  • sat-solver - simple CDCL SAT solver based on the lecture 185.A93 Formal Methods in CS at TU Wien.
  • SATCoP πŸ’€ - theorem prover for first-order logic based on connection tableau and SAT solving.
  • Satire πŸ“¦ πŸ’€ - educational SAT solver.
  • satyrs πŸŽ“πŸ’€ - DPLL SAT solver.
  • scrapsat πŸ’€ - CDCDL SAT Solver.
  • screwsat πŸ“¦β­ - simple CDCL SAT Solver.
  • Scuttle πŸ“¦πŸ“¦ - multi-objective MaxSAT solver based on the rustsat library and the CaDiCaL SAT solver.
  • slp πŸ“¦β™»οΈ - became SolHOP.
  • SolHOP πŸ“¦πŸ’€ - aims to be a SAT and MaxSAT solver. Currently, a CDCL based SAT.
  • Splr πŸ“¦β™¦οΈβ­ - modern CDCL SAT solver.
  • starlit 🚧 - CDCL SAT solver.
  • Stevia β­πŸ’€ - simple (unfinished) SMT solver for QF_ABV.
  • UASAT-RS - SAT solver based calculator for discrete mathematics and universal algebra.
  • VarisatπŸ“¦πŸ“¦πŸ“¦πŸ“¦πŸ“¦πŸ“¦πŸ“¦πŸ“¦β­ - CDCL based SAT solver.

Solver MPS compliant

  • ellp πŸ“¦πŸš§ - linear programming library that provides primal and dual simplex solvers.
  • minilp πŸ“¦β­πŸ’€ - linear programming solver.

Proof assistant

  • hakim - hacky interactive theorem prover.
  • cobalt β™»οΈπŸ‘» - a wip minimal proof assistant.
  • Esther πŸ’€ - simple automated proof assistant.
  • homotopy-rs ♦️⭐πŸ₯ΌπŸ₯ΌπŸ”₯ - implementation of homotopy.io proof assistant.
  • LSTS πŸ“¦β­ - proof assistant that is also a programming language.
  • Noq πŸ“Ίβ­ - Not Coq. Simple expression transformer that is not Coq.
  • Poi πŸ“¦β­ - pragmatic point-free theorem prover assistant.
  • Proost - simple proof assistant.
  • qbar πŸ“¦πŸ’€ - experimental automated theorem verifier/prover and proof assistant.

Misc

  • Avalog πŸ“¦β­ - experimental implementation of Avatar Logic with a Prolog-like syntax.
  • autosat πŸ“¦πŸ€ - automatic conversion of functions to CNF for SAT solving.
  • Caso πŸ“¦ - category Theory Solver for Commutative Diagrams.
  • cyclegg - cyclic theorem prover for equational reasoning using egraph.
  • good_lp ⭐ - Mixed Integer Linear Programming modeler using external solvers.
  • gpp-solver πŸ“¦ - small hybrid push-pull solver/planner that has the best of both worlds.
  • hoice ⭐ - ICE-based Constrained Horn Clause (CHC) solver.
  • linear_solver πŸ“¦β­ - linear solver designed to be easy to use with Rust enums.
  • Logic solver β­πŸ’€ - logic solver.
  • Mikino πŸ“¦πŸ“¦ - simple induction and BMC engine.
  • Monotonic-Solver πŸ“¦β­ - monotonic solver designed to be easy to use with Rust enum expressions.
  • nnoq - simple theorem prover (nay, verifier) based on functional expression rewriting.
  • nyaya - proof language based on sequent calculus and Metamath.
  • Obvious πŸ’€ - simple little logic solver and calculator.
  • pocket_prover πŸ“¦πŸ“¦β­ - fast, brute force, automatic theorem prover for first order logic.
  • prover πŸ’€ - first-order logic prover.
  • prover(2) πŸ€πŸ’€ - experiment with integer relation prover.
  • QED Prover ⭐πŸ₯Ό - reimplementation of the Cosette prover in Rust.
  • reachability_solver πŸ“¦ - linear reachability solver for directional edges.
  • relsat-rs 🐀 - Experiments with provers.
  • SAT-bench - benchmark suit for SAT solvers.
  • sat_lab 🐀🚧 - framework for manipulating SAT problems.
  • SAT solver ANalyser 🚧 - toolbox for analyzing performance and runtime characteristics of SAT solvers.
  • sequentprover 🐀 - proof search algorithm for boolean formulae.
  • Sequent solver πŸ€πŸ’€ - simple sequent solver.
  • shari - the 🍣 prover.
  • stupid-smt πŸ€πŸ’€ - SMT library. Mainly project at the verification course in THU.
  • Tensor Theorem Prover - first-order logic theorem prover (support unification with approximate vector similarity).
  • theorem-prover - implementation of a theorem prover for first-order logic.
  • Totsu πŸ“¦πŸ“¦πŸ“¦πŸ“¦πŸ“¦β­ - first-order conic solver for convex optimization problems .

Verification

Static Analysis & Rust verification tools

Misc

Libraries

Parser

Bindings

Translator

  • 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 πŸ“¦πŸ“¦β­ - intermediate representation (IR) in Rust for SMT-LIB queries.

Misc

Books code

There is numerous implementations of TAPL πŸ“–, we keep only the most popular and keep an eye on implementations that worth attention.

Programming Language

Kanren

Lambda Calculus

  • 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_calc πŸ“¦β™»οΈ - command-line untyped lambda calculus interpreter.
  • 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).
  • Lambdascript - educational tool illustrating beta reduction of untyped lamba terms.
  • Lamcal πŸ“¦πŸ“¦πŸ’€ - 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.

Propositional logic

  • Chevre ♻️ - small propositional logic interpreter.
  • implies πŸ“¦ - storing logical formulas as parse trees and performing complex operations on them.
  • logic πŸ“¦ πŸ€πŸ’€ - crate for propositional logic.
  • logic-resolver πŸ€πŸ’€ - toy implementation of resolution for propositional logic.
  • mini-prop πŸ“¦ - CLI tool for parsing and processing LaTex formatted propositional statements.
  • plc πŸ’€ - propositional logic calculator.
  • Plogic ⭐ - propositional logic evaluator and rule-based pattern matcher.
  • Prop πŸ“¦β­ - library for theorem proving with Intuitionistic Propositional Logic.
  • Propositional Tableaux Solver πŸ“¦ πŸ’€ - solver using the propositional tableaux method.
  • prop_tune πŸ“¦πŸ“¦πŸ“¦ - library for working with Logical Propositions.
  • raa_tt πŸ“¦ - prover for sentences of propositional calculus.
  • Resolution Prover πŸ’€ - resolution prover library for propositional logic.
  • resolution-prover πŸ’€ - Uses propositional resolution to prove statements and proofs on discord.
  • rs-logik πŸ‘» - propositional logic interpreter.
  • rust-proplogic-toylang 🐀 - toy language for Propositional Logic.
  • rusty-logic πŸ€πŸ’€ - propositional logic analysis.
  • simple-proof-assistant πŸ€πŸ’€ - a proof assistant kernel for minimal propositional logic.
  • validator πŸ’€ - small utility to test a propositional logic theorem prover.

Unclassified

  • Croissant - crossword solver backed by various SAT solvers.
  • formal-systems-learning-rs πŸ’€ - simulations to learn formal systems as typed first-order term rewriting systems.
  • inf402 - SAT-solver-based takuzu solver.
  • Junglefowl πŸ“¦πŸ“¦ - runs Peano arithmetic on Rust types, verified at compile time..
  • list-routine-learning-rs πŸ’€ - to learn typed first-order term rewriting systems that perform list routines.
  • logical_tui 🐀 - tui for logical_solver.
  • Minimal models πŸ’€ - uses a SAT solver to find minimal partial assignments that are model of a CNF formula.
  • n-queens-sat πŸ’€ - modelling n-queens problem as conjunctive normal form and solving it with DPLL algorithm.
  • nonogrid πŸ“¦ - lightning fast nonogram solver.
  • peano πŸ₯Ό - An environment for learning formal mathematical reasoning from scratch.
  • Relog - implementation of several strongly-normalizing string rewriting systems.
  • rummy_to_sat - implementation of a solver for Rummy.
  • rust-z3-practice πŸ’€ - solving a number of SAT problems using Z3.
  • sudoku_sat - solve Sudoku variants with SAT solvers.
  • Supermux πŸ’€ - reduction of the superpermutation problem to Quantified Boolean Formula.
  • Supersat πŸ’€ - attempt to find superpermutations by reducing the problem to SAT.
  • tarpit-rs β­πŸ’€ - type-level implementation of Smallfuck. Turing-completeness proof for Rust's type system.
  • VeriFactory ⭐ - verifier for Factorio blueprints.

Resources

Books

Research Paper & Thesis

Demos

Blogs

Posts

Crates keywords

Community

awesome-rust-formalized-reasoning's People

Contributors

newca12 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.