{"id":13748704,"url":"https://github.com/Robbepop/stevia","last_synced_at":"2025-05-09T11:31:15.773Z","repository":{"id":80786072,"uuid":"90567682","full_name":"Robbepop/stevia","owner":"Robbepop","description":"A simple (unfinished) SMT solver for QF_ABV.","archived":false,"fork":false,"pushed_at":"2019-03-14T01:40:03.000Z","size":1443,"stargazers_count":36,"open_issues_count":11,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-05-05T21:16:20.104Z","etag":null,"topics":["bitvector","decision-procedure","smt","smtlibv2","symbolic-execution"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Robbepop.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-APACHE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-05-07T23:13:13.000Z","updated_at":"2025-02-14T14:28:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"fa236eae-599d-4d84-b401-e20f1e8b9d9e","html_url":"https://github.com/Robbepop/stevia","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Robbepop%2Fstevia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Robbepop%2Fstevia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Robbepop%2Fstevia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Robbepop%2Fstevia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Robbepop","download_url":"https://codeload.github.com/Robbepop/stevia/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253240350,"owners_count":21876593,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitvector","decision-procedure","smt","smtlibv2","symbolic-execution"],"created_at":"2024-08-03T07:00:47.778Z","updated_at":"2025-05-09T11:31:15.331Z","avatar_url":"https://github.com/Robbepop.png","language":"Rust","funding_links":[],"categories":["Projects"],"sub_categories":["Provers and Solvers"],"readme":"# Stevia - Satisfiability Modulo Theories (SMT) Solver\n\n|       Linux       |       Windows       |       Chat        |      Coveralls       |      Codecov       |     Metrics      |\n|:-----------------:|:-------------------:|:-----------------:|:--------------------:|:------------------:|:----------------:|\n| [![travis][0]][1] | [![appveyor][2]][3] | [![chat][10]][11] | [![coveralls][4]][5] | [![licence][6]][7] | [![tokei][8]][9] |\n\n---\n\nThis is a brave attempt to write a simple [SMT][smt-wiki] solver in the [Rust][rust-home] ([github][rust-repo]) programming language.\n\nIt is based on the design of:\n\n- [STP][stp-home] ([github][stp-repo])\n- [Boolector][boolector-home].\n\nCurrently the solver is in very early development phase.\n\n## Supported Theories (SMT)\n\n- Bitvectors of fixed bit-width and modulo-two arithmetics.\n- Non-extensional arrays, indexed by bitvectors with bitvector values.\n- Only supports quantifier-free inputs.\n\nThe combined theory in SMT notation is called `QF_ABV`.\n\n## Future Goals\n\n- Support inputs specified in [SMTLib 2.6][smtlib-home].\n- Comprehensive documentation for all important parts of the code.\n- Eventually be able to keep up with efficient SMT solvers like STP.\n- C API to enable bindings for other languages.\n- Use an efficient SAT solver under the hood, like [candy][candy-repo] and [JamSAT][jamsat-repo].\n\n## Simplifications\n\nStevia supports word-level transformations, called simplifications, that it applies throughout the solving process.\nIn the following is an example of what is possible with the WIP implementation of the simplifier.\n\nThe arithmetic expression in LISP syntax:\n\n```lisp\n(+ x 42 (- x y) (* y (-5)) (- (+ x 10 y)))\n```\n\nIs simplified to:\n\n```lisp\n(+ 32 (* -7 y) x)\n```\n\nThis output can then be further processed by other simplification and solving processes.\n\n## Unstable Features Used\n\nThese features need to be stabilized before this crate can be used on the stable channel.\n\n**Current State:** Rust version 1.26\n\n- **Simplifier**\n\n    - [`#![feature(box_patterns)]`][unstable_box_patterns]\n    - [`#![feature(nll)]`][unstable_nll]\n\n- **Bitblaster**\n\n    - [`#![feature(fn_traits)]`][unstable_fn_traits]\n    - [`#![feature(unboxed_closures)]`][unstable_unboxed_closures]\n\n## License\n\nLicensed under either of\n\n * Apache license, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)\n * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n\n### Dual licence: [![badge][license-mit-badge]](LICENSE-MIT) [![badge][license-apache-badge]](LICENSE-APACHE)\n\n### Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any\nadditional terms or conditions.\n\n[0]: https://travis-ci.org/Robbepop/stevia.svg?branch=master\n[1]: https://travis-ci.org/Robbepop/stevia\n\n[2]: https://ci.appveyor.com/api/projects/status/16fc9l6rtroo4xqd?svg=true\n[3]: https://ci.appveyor.com/project/Robbepop/stevia/branch/master\n\n[4]: https://coveralls.io/repos/github/Robbepop/stevia/badge.svg?branch=master\n[5]: https://coveralls.io/github/Robbepop/stevia?branch=master\n\n[6]: https://codecov.io/gh/Robbepop/stevia/branch/master/graph/badge.svg\n[7]: https://codecov.io/gh/Robbepop/stevia/branch/master\n\n[8]: https://tokei.rs/b1/github/robbepop/stevia?category=code\n[9]: https://github.com/Aaronepower/tokei#badges\n\n[10]: https://badges.gitter.im/stevia-solver/gitter.svg\n[11]: https://gitter.im/stevia-solver/Lobby?utm_source=share-link\u0026utm_medium=link\u0026utm_campaign=share-link\n\n[license-mit-badge]: https://img.shields.io/badge/license-MIT-blue.svg\n[license-apache-badge]: https://img.shields.io/badge/license-APACHE-orange.svg\n\n[smt-wiki]: https://en.wikipedia.org/wiki/Satisfiability_modulo_theories\n[rust-home]: https://www.rust-lang.org/\n[rust-repo]: https://github.com/rust-lang/rust\n[stp-home]: http://stp.github.io/\n[stp-repo]: https://github.com/stp/stp\n[boolector-home]: http://fmv.jku.at/boolector/\n[smtlib-home]: http://smtlib.cs.uiowa.edu/index.shtml\n[candy-repo]: https://github.com/Udopia/candy-kingdom\n[jamsat-repo]: https://github.com/fkutzner/JamSAT\n\n[unstable_box_patterns]: https://github.com/rust-lang/rust/issues/29641\n[unstable_nll]: https://github.com/rust-lang/rust/issues/43234\n[unstable_fn_traits]: https://github.com/rust-lang/rust/issues/29625\n[unstable_unboxed_closures]: https://github.com/rust-lang/rust/issues/29625\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRobbepop%2Fstevia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRobbepop%2Fstevia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRobbepop%2Fstevia/lists"}