{"id":13774342,"url":"https://github.com/boolector/boolector","last_synced_at":"2025-05-11T06:33:02.924Z","repository":{"id":36578399,"uuid":"134006909","full_name":"Boolector/boolector","owner":"Boolector","description":"A Satisfiability Modulo Theories (SMT) solver for the theories of fixed-size bit-vectors, arrays and uninterpreted functions.","archived":true,"fork":false,"pushed_at":"2024-08-23T23:16:34.000Z","size":21104,"stargazers_count":334,"open_issues_count":30,"forks_count":62,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-10-31T14:11:15.615Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://boolector.github.io","language":"SMT","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/Boolector.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-05-18T21:44:21.000Z","updated_at":"2024-10-15T19:00:49.000Z","dependencies_parsed_at":"2024-01-17T07:59:58.014Z","dependency_job_id":"cd66503f-e500-4ee8-a3fe-c55c282a93e6","html_url":"https://github.com/Boolector/boolector","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Boolector%2Fboolector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Boolector%2Fboolector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Boolector%2Fboolector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Boolector%2Fboolector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Boolector","download_url":"https://codeload.github.com/Boolector/boolector/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225022122,"owners_count":17408558,"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":[],"created_at":"2024-08-03T17:01:25.845Z","updated_at":"2024-11-17T09:30:48.075Z","avatar_url":"https://github.com/Boolector.png","language":"SMT","funding_links":[],"categories":["Formal Verification"],"sub_categories":[],"readme":"[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n**This repository serves as archive for the last and final version of Boolector.**\n**Active development and maintenance has stopped.**\n**Boolector was succeeded by [Bitwuzla](https://github.com/bitwuzla/bitwuzla).**\n\n# Boolector\n\nBoolector is a Satisfiability Modulo Theories (SMT) solver for the theories\nof fixed-size bit-vectors, arrays and uninterpreted functions.\nIt supports the [SMT-LIB](http://www.smt-lib.org) logics\nBV,\n[QF_ABV](http://smtlib.cs.uiowa.edu/logics-all.shtml#QF_ABV),\n[QF_AUFBV](http://smtlib.cs.uiowa.edu/logics-all.shtml#QF_AUFBV),\n[QF_BV](http://smtlib.cs.uiowa.edu/logics-all.shtml#QF_BV) and\n[QF_UFBV](http://smtlib.cs.uiowa.edu/logics-all.shtml#QF_UFBV).\nBoolector provides a rich C and Python API and supports incremental solving,\nboth with the SMT-LIB commands push and pop, and as solving under assumptions.\nThe documentation of its API can be found\n[here](https://boolector.github.io/docs).\n\n\n## Website\n\nMore information about Boolector is available at: https://boolector.github.io\n\n## Download\n\nThe latest version of Boolector is available on GitHub:\nhttps://github.com/boolector/boolector\n\n## Installation\n### On macOS (or Linux) via Homebrew\n```\nbrew install boolector\n```\nNote: this installation doesn't come with Python bindings and it uses Lingeling as backend.\n\n## Prerequisites\n\nTo build Boolector from source you need:\n  * cmake \u003e= 3.3\n  * gcc/clang\n  * g++/clang++\n\nTo build the python module `pyboolector` you further need:\n  * Cython \u003e= 0.22\n\n\n## Build\n\nBoolector can be built with support for the SAT solvers\n[CaDiCaL](https://github.com/arminbiere/cadical),\n[CryptoMiniSat](https://github.com/msoos/cryptominisat),\n[Lingeling](http://fmv.jku.at/lingeling),\n[MiniSAT](https://github.com/niklasso/minisat), and\n[PicoSAT](http://fmv.jku.at/picosat).\nTo build and setup these solvers you can use the scripts\n`setup-{cadical,cms,lingeling,minisat,picosat}.sh` in the `contrib` directory.\nOptionally, you can place any of these solvers in a directory on the same level\nas the Boolector source directory or provide a path to `configure.sh`.\nYou can build Boolector with support for\nmultiple SAT solvers.\nNote that using MiniSAT will force `libboolector.a` to depend not only on\n`libz.so` but also on `libstdc++.so`. Thus, if you want to link\n`libboolector.a` with MiniSAT backend against your own programs,\nyou need to use `-lz -lstdc++` as linking options.\n\nBoolector has one other external dependency,\nthe [BTOR2 format tools package](https://github.com/boolector/btor2tools).\nAs with the SAT solvers, you can either use the provided script\n`setup-btor2tools.sh` in `contrib` or clone the BTOR2Tools repository into\ndirectory `btor2tools` on the same level as the Boolector repository or\nprovide a path to `configure.sh`.\n\n### Linux and Unix-like OS\n\nAssume that we build Boolector with support for Lingeling:\n```\n# Download and build Boolector\ngit clone https://github.com/boolector/boolector\ncd boolector\n\n# Download and build Lingeling\n./contrib/setup-lingeling.sh\n\n# Download and build BTOR2Tools\n./contrib/setup-btor2tools.sh\n\n# Build Boolector\n./configure.sh \u0026\u0026 cd build \u0026\u0026 make\n```\n\nAll binaries (boolector, btormc, btormbt, btoruntrace) are generated into\ndirectory `boolector/build/bin`,\nand all libraries (libboolector.a, libboolector.so) are generated into\ndirectory `boolector/build/lib`.\n\nFor more build configuration options of Boolector, see `configure.sh -h`.\n\nTo build Boolector with Python bindings you need to install\n[Cython](http://cython.org/),\nand `btor2tools` and SAT solvers must be compiled with flag `-fPIC`\n(see build instructions of these tools for more details on how to build as\nshared library). The provided setup-\\*.sh scripts automatically compile all\ndependencies with `-fPIC`.\nThen, from Boolector's root directory configure and build Boolector as follows:\n```\n./configure.sh --python\ncd build\nmake\n```\n\nTo build the API documentation of Boolector, it is required to install\n[Sphinx](http://www.sphinx-doc.org) (\u003e= version 1.2).\nThen build Boolector and issue:\n```\ncd doc\nmake html\n```\nThe documentation is then generated into `doc/_build/html`.\nMake sure to build Boolector with Python bindings, else the documentation of\nits Python API will not be included.\n\n### Linking against Boolector in CMake projects\n\nBoolector's build system provides a CMake package configuration, which can be\nused by the `find_package()` command to provide information about Boolector's\ninclude directories, libraries and it's dependencies.\n\nAfter installing Boolector you can issue the following commands in your CMake\nproject to link against Boolector.\n```\nfind_package(Boolector)\ntarget_link_libraries(\u003cyour_target\u003e Boolector::boolector)\n```\n\n### Windows\n\nFor building and usage of Boolector on Windows, please see \n[COMPILING_WINDOWS.md](https://github.com/Boolector/boolector/blob/master/COMPILING_WINDOWS.md).\n\n## Usage\n\nFor a list of command line options, refer to `boolector -h`.\n\nFor examples and instructions on how to use Boolector's C API, refer to\n`examples/api/c` and the [API documentation](https://boolector.github.io/docs).\nTo build all examples in `examples/api/c` issue:\n```\ncd build\nmake examples\n```\n\nFor examples and instructions on how to use Boolector's Python API, refer to\n`examples/api/python/api_usage_examples.py`\nand the [API documentation](https://boolector.github.io/docs).  \nTo run `api_usage_examples.py`, from Boolector's root directory issue:\n```\nPYTHONPATH=\"build/lib\" python examples/api/python/api_usage_examples.py\n```\n\n## Contributing\n\nBoolector is distributed under the MIT license\n(see [COPYING](https://github.com/Boolector/boolector/blob/master/COPYING)\nfile).\nBy submitting a contribution you automatically accept the conditions described\nin [COPYING](https://github.com/Boolector/boolector/blob/master/COPYING).\nAdditionally, we ask you to certify that you have the right to submit such\ncontributions.\nTo manage this process we use a mechanism known as\n[Developer Certificate of Origin](https://developercertificate.org), which\ncan be acknowledged by signing-off your commits with `git commit -s`.\nWe require all pull requests to be squashed into a single commit and\nsigned-off.\n\n\n```\nDeveloper Certificate of Origin\nVersion 1.1\n\nCopyright (C) 2004, 2006 The Linux Foundation and its contributors.\n1 Letterman Drive\nSuite D4700\nSan Francisco, CA, 94129\n\nEveryone is permitted to copy and distribute verbatim copies of this\nlicense document, but changing it is not allowed.\n\n\nDeveloper's Certificate of Origin 1.1\n\nBy making a contribution to this project, I certify that:\n\n(a) The contribution was created in whole or in part by me and I\n    have the right to submit it under the open source license\n    indicated in the file; or\n\n(b) The contribution is based upon previous work that, to the best\n    of my knowledge, is covered under an appropriate open source\n    license and I have the right under that license to submit that\n    work with modifications, whether created in whole or in part\n    by me, under the same open source license (unless I am\n    permitted to submit under a different license), as indicated\n    in the file; or\n\n(c) The contribution was provided directly to me by some other\n    person who certified (a), (b) or (c) and I have not modified\n    it.\n\n(d) I understand and agree that this project and the contribution\n    are public and that a record of the contribution (including all\n    personal information I submit with it, including my sign-off) is\n    maintained indefinitely and may be redistributed consistent with\n    this project or the open source license(s) involved.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboolector%2Fboolector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fboolector%2Fboolector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboolector%2Fboolector/lists"}