SMT

Top 21 SMT Open-Source Projects

  • manticore

    Symbolic execution tool

  • FStar

    A Proof-oriented Programming Language

  • Project mention: Lean4 helped Terence Tao discover a small bug in his recent paper | news.ycombinator.com | 2023-10-27
  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • liquidhaskell

    Liquid Types For Haskell

  • alive2

    Automatic verification of LLVM optimizations

  • Project mention: CBMC: C bounded model checker. (2021) | news.ycombinator.com | 2024-05-04

    Another problem with LLVM I’ve heard about is that it’s intermediate language or API or something is a moving, informally-specified target. People who know LLVM internals might weigh in on that claim. If true, it’s actually easier to target C or a subset of Rust just because it’s static and well-understood.

    Two projects sought to mitigate these issues by going in different directions. One was a compiler backend that aimed to be easy to learn with well-specified IL. The other aimed to formalize LLVM’s IL.

    http://c9x.me/compile/

    https://github.com/AliveToolkit/alive2

    There have also been typed, assembly languages to support verification from groups like FLINT. One can also compile language-specific analysis with a certified to LLVM IL compiler. Integrating pieces from different languages can have risks. That (IIRC) is being mitigated by people doing secure, abstract compilation.

  • py2many

    Transpiler of Python to many other languages

  • Project mention: Transpiler, a Meaningless Word | news.ycombinator.com | 2023-08-16

    > Another problem is that there are hundreds of built-in library functions that need to be compiled from Python from C

    An approach I've advocated as one of the main authors of py2many is that all of the python builtin functions be written in a subset of python[1] and then compiled into native code. This has the benefit of avoiding GIL, problems with C-API among other things.

    Do checkout the examples here[2] which work out of the box for many of the 8-9 supported backends.

    [1] https://github.com/py2many/py2many/blob/main/doc/langspec.md

  • jlcparts

    Better parametric search for components available for JLC PCB assembly

  • Project mention: Quick Part Search | /r/PrintedCircuitBoard | 2023-06-12
  • smack

    SMACK Software Verifier and Verification Toolchain (by smackers)

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • apalache

    APALACHE: symbolic model checker for TLA+ and Quint

  • Project mention: Verified Rust for low-level systems code | news.ycombinator.com | 2024-05-04

    TLA+ has also had an SMT-based backend, Apalache [1], for a few years now. In general, you encode your system model (which would be the Rust functions for Verus, the TLA model for Apalache) and your desired properties into an SMT formula, and you let the solver have a go at it. The deal is that the SMT language is quite expressive, which makes such encodings... not easy, but not impossible. And after you're done with it, you can leverage all the existing solvers that people have built.

    While there is a series of "standard" techniques for encoding particular program languages features into SMT (e.g., handling higher-order functions, which SMT solves don't handle natively), the details of how you encode the model/properties are extremely specific to each formalism, and you need to be very careful to ensure that the encoding is sound. You'd need to go and read the relevant papers to see how this is done.

    [1]: https://apalache.informal.systems

  • stainless

    Verification framework and tool for higher-order Scala programs (by epfl-lara)

  • sbv

    SMT Based Verification in Haskell. Express properties about Haskell programs and automatically prove them using SMT solvers.

  • z3_tutorial

    Jupyter notebooks for tutorial on the Z3 SMT solver

  • suslik

    Synthesis of Heap-Manipulating Programs from Separation Logic

  • kryptonite-for-kafka

    Kryptonite for Kafka is a client-side 🔒 field level 🔓 cryptography library for Apache Kafka® offering a Kafka Connect SMT, ksqlDB UDFs, and a standalone HTTP API service. It's an ! UNOFFICIAL ! community project

  • hz3

    Haskell bindings to Microsoft's Z3 API (unofficial).

  • sbvPlugin

    Formally prove properties of Haskell programs using SBV/SMT.

  • SMPT

    SMPT is a SMT-based model checker for Petri nets focused on reachability problems that takes advantage of net reductions (polyhedral reductions).

  • Project mention: Petri Net for tokio ? | /r/rust | 2023-09-05

    I also found https://github.com/nicolasAmat/SMPT maybe it should be used because SMT, Z3 looks familiar. It's used in fancy new theorem provers.

  • nus-timetable-optimizer

    Codebase for the NUS Timetable Optimizer, a tool to help students at the National University of Singapore optimize their timetables to their liking.

  • Project mention: What new features would you like to see in NUSMods? | /r/nus | 2023-07-04

    This might be what you’re looking for: https://nus-optimizer.com/

  • lsmtree

    Sparse Merkle tree for a key-value map.

  • KeyToField-smt

    A Kafka Connect Single Message Transform (SMT) that enables you to append the record key to the value as a named field

  • Project mention: FLaNK Stack Weekly 19 Feb 2024 | dev.to | 2024-02-19
  • JLCDB

    Easy to use query based search engine for JLCPCB SMT service.

  • Project mention: Quick Part Search | /r/PrintedCircuitBoard | 2023-06-12

    Cool. I also did something like this a while back that can be found here but i scratched it since i relied on csv dumps on jlcpcb and they decided to remove that. How do you get the data?

  • Hsmtlib

    Haskell library for easy interaction with SMT-LIB 2 compliant solvers.

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020).

SMT related posts

  • What new features would you like to see in NUSMods?

    2 projects | /r/nus | 4 Jul 2023
  • NUS Guide for Incoming Undergraduates

    1 project | /r/SGExams | 1 Jun 2023
  • If You've Got Enough Money, It's All 'Lawful'

    2 projects | /r/WorkReform | 13 May 2023
  • [ANNOUNCE] New release of SBV with support for quantifiers

    1 project | /r/haskell | 15 Apr 2023
  • John Regehr: Alive2 LLVM optims verification

    1 project | news.ycombinator.com | 18 Feb 2023
  • liquidhaskell ghc9に対応したリリース出てたの知らなんだ

    1 project | /r/u_Dazzling_Finger_8120 | 10 Feb 2023
  • [Hobby] Amateur Generalist Programmer Seeking to Put Bugfixing Skills to Good Use

    2 projects | /r/INAT | 9 Nov 2022
  • A note from our sponsor - InfluxDB
    www.influxdata.com | 6 May 2024
    Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality. Learn more →

Index

What are some of the best open-source SMT projects? This list will help you:

Project Stars
1 manticore 3,640
2 FStar 2,570
3 liquidhaskell 1,150
4 alive2 681
5 py2many 599
6 jlcparts 491
7 smack 424
8 apalache 410
9 stainless 347
10 sbv 233
11 z3_tutorial 147
12 suslik 121
13 kryptonite-for-kafka 78
14 hz3 57
15 sbvPlugin 44
16 SMPT 27
17 nus-timetable-optimizer 18
18 lsmtree 18
19 KeyToField-smt 16
20 JLCDB 4
21 Hsmtlib 4

Sponsored
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com