{"id":13419045,"url":"https://github.com/msoos/cryptominisat","last_synced_at":"2026-04-03T16:03:35.695Z","repository":{"id":2715023,"uuid":"3709502","full_name":"msoos/cryptominisat","owner":"msoos","description":"An advanced SAT solver","archived":false,"fork":false,"pushed_at":"2026-02-07T21:26:21.000Z","size":61280,"stargazers_count":917,"open_issues_count":6,"forks_count":199,"subscribers_count":29,"default_branch":"master","last_synced_at":"2026-02-07T23:49:42.581Z","etag":null,"topics":["cdcl-algorithm","cnf","cryptography","dpll","proof","sat-solver","verification","xor"],"latest_commit_sha":null,"homepage":"https://www.msoos.org","language":"C++","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/msoos.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2012-03-13T17:56:05.000Z","updated_at":"2026-02-05T02:55:07.000Z","dependencies_parsed_at":"2026-02-07T17:01:21.532Z","dependency_job_id":null,"html_url":"https://github.com/msoos/cryptominisat","commit_stats":{"total_commits":16272,"total_committers":62,"mean_commits":262.4516129032258,"dds":0.1726278269419862,"last_synced_commit":"2a7b9021f0b355c96da89b734b7f452debc5c6ef"},"previous_names":[],"tags_count":233,"template":false,"template_full_name":null,"purl":"pkg:github/msoos/cryptominisat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msoos%2Fcryptominisat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msoos%2Fcryptominisat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msoos%2Fcryptominisat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msoos%2Fcryptominisat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/msoos","download_url":"https://codeload.github.com/msoos/cryptominisat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msoos%2Fcryptominisat/sbom","scorecard":{"id":665996,"data":{"date":"2025-08-11","repo":{"name":"github.com/msoos/cryptominisat","commit":"0ab1e4406edc952a975347e7f3365f28d01f7f67"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.5,"checks":[{"name":"Code-Review","score":0,"reason":"Found 1/29 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":10,"reason":"27 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Warn: no topLevel permission defined: .github/workflows/windows-static-binary.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/msoos/cryptominisat/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/msoos/cryptominisat/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:86: update your workflow using https://app.stepsecurity.io/secureworkflow/msoos/cryptominisat/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:107: update your workflow using https://app.stepsecurity.io/secureworkflow/msoos/cryptominisat/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:117: update your workflow using https://app.stepsecurity.io/secureworkflow/msoos/cryptominisat/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:127: update your workflow using https://app.stepsecurity.io/secureworkflow/msoos/cryptominisat/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:137: update your workflow using https://app.stepsecurity.io/secureworkflow/msoos/cryptominisat/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/windows-static-binary.yaml:7: update your workflow using https://app.stepsecurity.io/secureworkflow/msoos/cryptominisat/windows-static-binary.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/windows-static-binary.yaml:8: update your workflow using https://app.stepsecurity.io/secureworkflow/msoos/cryptominisat/windows-static-binary.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/windows-static-binary.yaml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/msoos/cryptominisat/windows-static-binary.yaml/master?enable=pin","Info:   0 out of   9 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":10,"reason":"project is fuzzed","details":["Info: CppLibFuzzer integration found: src/fuzz.cpp:54"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact release/5.13.0 not signed: https://api.github.com/repos/msoos/cryptominisat/releases/213507376","Warn: release artifact 5.12.1 not signed: https://api.github.com/repos/msoos/cryptominisat/releases/199481462","Warn: release artifact 5.11.22 not signed: https://api.github.com/repos/msoos/cryptominisat/releases/165314920","Warn: release artifact 5.11.21 not signed: https://api.github.com/repos/msoos/cryptominisat/releases/140705805","Warn: release artifact 5.11.20 not signed: https://api.github.com/repos/msoos/cryptominisat/releases/140698042","Warn: release artifact release/5.13.0 does not have provenance: https://api.github.com/repos/msoos/cryptominisat/releases/213507376","Warn: release artifact 5.12.1 does not have provenance: https://api.github.com/repos/msoos/cryptominisat/releases/199481462","Warn: release artifact 5.11.22 does not have provenance: https://api.github.com/repos/msoos/cryptominisat/releases/165314920","Warn: release artifact 5.11.21 does not have provenance: https://api.github.com/repos/msoos/cryptominisat/releases/140705805","Warn: release artifact 5.11.20 does not have provenance: https://api.github.com/repos/msoos/cryptominisat/releases/140698042"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 2 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T18:03:38.090Z","repository_id":2715023,"created_at":"2025-08-21T18:03:38.091Z","updated_at":"2025-08-21T18:03:38.091Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29660035,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T16:33:43.953Z","status":"ssl_error","status_checked_at":"2026-02-20T16:33:43.598Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cdcl-algorithm","cnf","cryptography","dpll","proof","sat-solver","verification","xor"],"created_at":"2024-07-30T22:01:10.580Z","updated_at":"2026-02-20T18:32:13.281Z","avatar_url":"https://github.com/msoos.png","language":"C++","readme":"[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n![build](https://github.com/msoos/cryptominisat/workflows/build/badge.svg)\n\n\n# CryptoMiniSat SAT solver\nThis system provides CryptoMiniSat, an advanced incremental SAT solver. The\nsystem has 3 interfaces: command-line, C++ library and python. The command-line\ninterface takes a [cnf](http://en.wikipedia.org/wiki/Conjunctive_normal_form)\nas an input in the\n[DIMACS](http://www.satcompetition.org/2009/format-benchmarks2009.html) format\nwith the extension of XOR clauses. The C++ and python interface mimics this and\nalso allows for incremental use: assumptions and multiple `solve` calls. A C\nand a Rust compatible wrapper is also provided.\n\nWhen citing, always reference our [SAT 2009 conference\npaper](https://link.springer.com/chapter/10.1007%2F978-3-642-02777-2_24),\nbibtex record is [here](http://dblp.uni-trier.de/rec/bibtex/conf/sat/SoosNC09).\n\n\n## Compiling\nUse of the [release binaries](https://github.com/msoos/cryptominisat/releases) is\n_strongly_ encouraged, as Ganak requires a specific set of libraries to be\ninstalled. The second best thing to use is Nix. Simply [install\nnix](https://nixos.org/download/) and then:\n```shell\nnix shell github:msoos/cryptominisat\n```\n\nThen you will have `cryptominisat` binary available and ready to use.\n\nIf this is somehow not what you want, you can also build it. See the [GitHub\nAction](https://github.com/msoos/cryptominisat/actions/workflows/build.yml) for the\nspecific set of steps.\n\nYou can also run CryptoMiniSat from your web browser, without installing\nanything, [here](https://www.msoos.org/cryptominisat/).\n\n## Command-line usage\nLet's take the file:\n```plain\np cnf 3 3\n1 0\n-2 0\n-1 2 3 0\n```\n\nThe file has 3 variables and 3 clauses, this is reflected in the header `p cnf\n3 3` which gives the number of variables as the first number and the number of\nclauses as the second. Every clause is ended by '0'. The clauses say: 1 must be\nTrue, 2 must be False, and either 1 has to be False, 2 has to be True or 3 has\nto be True. The only solution to this problem is:\n```plain\ncryptominisat5 --verb 0 file.cnf\ns SATISFIABLE\nv 1 -2 3 0\n```\n\nWhich means, that setting variable 1 True, variable 2 False and variable 3 True\nsatisfies the set of constraints (clauses) in the CNF. If the file had\ncontained:\n```plain\np cnf 3 4\n1 0\n-2 0\n-3 0\n-1 2 3 0\n```\n\nThen there is no solution and the solver returns `s UNSATISFIABLE`.\n\n## Incremental Python Usage\nThe python module works with both Python 3. Just execute:\n```shell\npip3 install pycryptosat\n```\n\nYou can then use it in incremental mode as:\n```python\n\u003e\u003e\u003e from pycryptosat import Solver\n\u003e\u003e\u003e s = Solver()\n\u003e\u003e\u003e s.add_clause([1])\n\u003e\u003e\u003e s.add_clause([-2])\n\u003e\u003e\u003e s.add_clause([-1, 2, 3])\n\u003e\u003e\u003e sat, solution = s.solve()\n\u003e\u003e\u003e print sat\nTrue\n\u003e\u003e\u003e print solution\n(None, True, False, True)\n\u003e\u003e\u003e sat, solution = s.solve([-3])\n\u003e\u003e print sat\nFalse\n\u003e\u003e\u003e sat, solution = s.solve()\n\u003e\u003e\u003e print sat\nTrue\n\u003e\u003e\u003e s.add_clause([-3])\n\u003e\u003e\u003e sat, solution = s.solve()\n\u003e\u003e\u003e print sat\nFalse\n```\n\nWe can also try to assume any variable values for a single solver run:\n```python\n\u003e\u003e\u003e sat, solution = s.solve([-3])\n\u003e\u003e\u003e print sat\nFalse\n\u003e\u003e\u003e print solution\nNone\n\u003e\u003e\u003e sat, solution = s.solve()\n\u003e\u003e\u003e print sat\nTrue\n\u003e\u003e\u003e print solution\n(None, True, False, True)\n```\nIf you want to build the python module, you can do this:\n```shell\nsudo apt-get install build-essential\nsudo apt-get install python3-setuptools python3-dev\ngit clone https://github.com/msoos/cryptominisat\npython -m build\npip install dist/pycryptosat-*.whl\n```\n\n### Incremental Library Usage\nThe library uses a variable numbering scheme that starts from 0. Since 0 cannot\nbe negated, the class `Lit` is used as: `Lit(variable_number, is_negated)`. As\nsuch, the 1st CNF above would become:\n```c++\n#include \u003ccryptominisat5/cryptominisat.h\u003e\n#include \u003cassert.h\u003e\n#include \u003cvector\u003e\nusing std::vector;\nusing namespace CMSat;\n\nint main()\n{\n    SATSolver solver;\n    vector\u003cLit\u003e clause;\n\n    //Let's use 4 threads\n    solver.set_num_threads(4);\n\n    //We need 3 variables. They will be: 0,1,2\n    //Variable numbers are always trivially increasing\n    solver.new_vars(3);\n\n    //add \"1 0\"\n    clause.push_back(Lit(0, false));\n    solver.add_clause(clause);\n\n    //add \"-2 0\"\n    clause.clear();\n    clause.push_back(Lit(1, true));\n    solver.add_clause(clause);\n\n    //add \"-1 2 3 0\"\n    clause.clear();\n    clause.push_back(Lit(0, true));\n    clause.push_back(Lit(1, false));\n    clause.push_back(Lit(2, false));\n    solver.add_clause(clause);\n\n    lbool ret = solver.solve();\n    assert(ret == l_True);\n    std::cout\n    \u003c\u003c \"Solution is: \"\n    \u003c\u003c solver.get_model()[0]\n    \u003c\u003c \", \" \u003c\u003c solver.get_model()[1]\n    \u003c\u003c \", \" \u003c\u003c solver.get_model()[2]\n    \u003c\u003c std::endl;\n\n    //assumes 3 = FALSE, no solutions left\n    vector\u003cLit\u003e assumptions;\n    assumptions.push_back(Lit(2, true));\n    ret = solver.solve(\u0026assumptions);\n    assert(ret == l_False);\n\n    //without assumptions we still have a solution\n    ret = solver.solve();\n    assert(ret == l_True);\n\n    //add \"-3 0\"\n    //No solutions left, UNSATISFIABLE returned\n    clause.clear();\n    clause.push_back(Lit(2, true));\n    solver.add_clause(clause);\n    ret = solver.solve();\n    assert(ret == l_False);\n\n    return 0;\n}\n```\n\nThe library usage also allows for assumptions. We can add these lines just\nbefore the `return 0;` above:\n```\nvector\u003cLit\u003e assumptions;\nassumptions.push_back(Lit(2, true));\nlbool ret = solver.solve(\u0026assumptions);\nassert(ret == l_False);\n\nlbool ret = solver.solve();\nassert(ret == l_True);\n```\n\nSince we assume that variable 2 must be false, there is no solution. However,\nif we solve again, without the assumption, we get back the original solution.\nAssumptions allow us to assume certain literal values for a _specific run_ but\nnot all runs -- for all runs, we can simply add these assumptions as 1-long\nclauses.\n\n## Multiple solutions\nTo find multiple solutions to your problem, just run the solver in a loop\nand ban the previous solution found:\n```c\nwhile(true) {\n    lbool ret = solver-\u003esolve();\n    if (ret != l_True) {\n        assert(ret == l_False);\n        //All solutions found.\n        exit(0);\n    }\n\n    //Use solution here. print it, for example.\n\n    //Banning found solution\n    vector\u003cLit\u003e ban_solution;\n    for (uint32_t var = 0; var \u003c solver-\u003enVars(); var++) {\n        if (solver-\u003eget_model()[var] != l_Undef) {\n            ban_solution.push_back(\n                Lit(var, (solver-\u003eget_model()[var] == l_True)? true : false));\n        }\n    }\n    solver-\u003eadd_clause(ban_solution);\n}\n```\n\nThe above loop will run as long as there are solutions. It is __highly__\nsuggested to __only__ add into the new clause(`bad_solutions` above) the\nvariables that are \"important\" or \"main\" to your problem. Variables that were\nonly used to translate the original problem into CNF should not be added.\nThis way, you will not get spurious solutions that don't differ in the main,\nimportant variables.\n\n## Rust bindings\nTo build the Rust bindings:\n```plain\ngit clone https://github.com/msoos/cryptominisat-rs/\ncd cryptominisat-rs\ncargo build --release\ncargo test\n```\n\nYou can use it as per the [README](https://github.com/msoos/cryptominisat-rs/blob/master/README.markdown) in that repository. To include CryptoMiniSat in your Rust project, add the dependency to your `Cargo.toml` file:\n```\ncryptominisat = { git = \"https://github.com/msoos/cryptominisat-rs\", branch= \"master\" }\n```\n\nYou can see an example project using CryptoMiniSat in Rust [here](https://github.com/msoos/caqe/).\n\n## Preprocessing\nIf you wish to use CryptoMiniSat as a preprocessor, we encourage you\nto try out our model counting preprocessor, [Arjun](https://www.github.com/meelgroup/arjun).\n\n## Gauss-Jordan elimination\nSince CryptoMiniSat 5.8, Gauss-Jordan elimination is compiled into the solver\nby default. However, it will turn off automatically in case the solver observes\nGJ not to perform too well. To use Gaussian elimination, provide a CNF with\nxors in it (either in CNF or XOR+CNF form) and either run with default setup,\nor, tune it to your heart's desire:\n```plain\nGauss options:\n  --iterreduce arg (=1)       Reduce iteratively the matrix that is updated.We\n                              effectively are moving the start to the last\n                              column updated\n  --maxmatrixrows arg (=3000) Set maximum no. of rows for gaussian matrix. Too\n                              large matrixes should be discarded for reasons of\n                              efficiency\n  --autodisablegauss arg (=1) Automatically disable gauss when performing badly\n  --minmatrixrows arg (=5)    Set minimum no. of rows for gaussian matrix.\n                              Normally, too small matrixes are discarded for\n                              reasons of efficiency\n  --savematrix arg (=2)       Save matrix every Nth decision level\n  --maxnummatrixes arg (=3)   Maximum number of matrixes to treat.\n```\n\nIn particular, you may want to set `--autodisablegauss 0` in case you are sure it'll help.\n\n## CrystalBall\nBuild and use instructions below. Please see the [associated blog\npost](https://www.msoos.org/2019/06/crystalball-sat-solving-data-gathering-and-machine-learning/)\nfor more information.\n\n```shell\n# prerequisites on a modern Debian/Ubuntu installation\nsudo apt-get install build-essential cmake git\nsudo apt-get install zlib1g-dev libsqlite3-dev\nsudo apt-get install libboost-program-options-dev libboost-serialization-dev\nsudo apt-get install python3-pip\nsudo pip3 install sklearn pandas numpy lit matplotlib\n\n# build and install Louvain Communities\ngit clone https://github.com/meelgroup/louvain-community\ncd louvain-community\nmkdir build \u0026\u0026 cd build\ncmake ..\nmake -j10\nsudo make install\ncd ../..\n\n# build and install LightGBM\ngit clone https://github.com/microsoft/LightGBM\ncd LightGBM\nmkdir build \u0026\u0026 cd build\ncmake ..\nmake -j10\nsudo make install\ncd ../..\n\n# getting the code\ngit clone https://github.com/msoos/cryptominisat\ncd cryptominisat\ngit checkout crystalball\ngit submodule update --init\nmkdir build \u0026\u0026 cd build\nln -s ../scripts/crystal/* .\nln -s ../scripts/build_scripts/* .\n\n# Let's get an unsatisfiable CNF\nwget https://www.msoos.org/largefiles/goldb-heqc-i10mul.cnf.gz\ngunzip goldb-heqc-i10mul.cnf.gz\n\n# Gather the data, denormalize, label,\n# create the classifier, generate C++,\n# and build the final SAT solver\n./ballofcrystal.sh goldb-heqc-i10mul.cnf\n[...compilations and the full data pipeline...]\n\n# let's use our newly built tool\n./cryptominisat5 goldb-heqc-i10mul.cnf\n[ ... ]\ns UNSATISFIABLE\n\n# Let's look at the data\ncd goldb-heqc-i10mul.cnf-dir\nsqlite3 mydata.db\nsqlite\u003e select count() from sum_cl_use;\n94507\n```\n\n## CMake Arguments\nThe following arguments to cmake configure the generated build artifacts. To\nuse, specify options prior to running make in a clean subdirectory: `cmake\n\u003coptions\u003e ..`\n\n- `-DSTATICCOMPILE=\u003cON/OFF\u003e` -- statically linked library and binary.\n- `-DSTATS=\u003cON/OFF\u003e` -- advanced statistics (slower). Needs [louvain\n  communities](https://github.com/meelgroup/louvain-community) installed.\n- `-DENABLE_TESTING=\u003cON/OFF\u003e` -- test suite support\n- `-DLARGEMEM=\u003cON/OFF\u003e` -- more memory available for clauses (but slower on\n  most problems)\n- `-DIPASIR=\u003cON/OFF\u003e` -- Build `libipasircryptominisat.so` for\n  [IPASIR](https://www.cs.utexas.edu/users/moore/acl2/manuals/current/manual/index-seo.php/IPASIR____IPASIR)\n  interface support\n\n## C usage\nSee src/cryptominisat_c.h.in for details. This is an experimental feature.\n\n## License\nEverything that is needed to build by default is MIT licensed. If you\nspecifically instruct the system it can build with Bliss, which are both GPL.\nHowever, by default CryptoMiniSat will not build with these.\n","funding_links":[],"categories":["TODO scan for Android support in followings","C++","SAT Solvers"],"sub_categories":["important solvers"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsoos%2Fcryptominisat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmsoos%2Fcryptominisat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsoos%2Fcryptominisat/lists"}