{"id":13648845,"url":"https://github.com/SRI-CSL/yices2","last_synced_at":"2025-04-22T11:33:30.163Z","repository":{"id":23103235,"uuid":"26457461","full_name":"SRI-CSL/yices2","owner":"SRI-CSL","description":"The Yices SMT Solver","archived":false,"fork":false,"pushed_at":"2025-03-27T05:51:13.000Z","size":27134,"stargazers_count":395,"open_issues_count":56,"forks_count":55,"subscribers_count":25,"default_branch":"master","last_synced_at":"2025-04-13T14:51:06.177Z","etag":null,"topics":["sat-solver","satisfiability","satisfiability-modulo-theories","smt-solver","theorem-prover"],"latest_commit_sha":null,"homepage":"https://yices.csl.sri.com/","language":"SMT","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SRI-CSL.png","metadata":{"files":{"readme":"README.md","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":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-11-10T21:47:40.000Z","updated_at":"2025-04-03T00:32:00.000Z","dependencies_parsed_at":"2023-10-04T04:33:30.701Z","dependency_job_id":"0c5bddc4-55a0-4a95-8dc8-cec174517ca0","html_url":"https://github.com/SRI-CSL/yices2","commit_stats":{"total_commits":4821,"total_committers":34,"mean_commits":141.7941176470588,"dds":"0.35366106616884463","last_synced_commit":"30dd2c1ddb316b2aef5a0217318a284bbbf2a11d"},"previous_names":[],"tags_count":46,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRI-CSL%2Fyices2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRI-CSL%2Fyices2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRI-CSL%2Fyices2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRI-CSL%2Fyices2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SRI-CSL","download_url":"https://codeload.github.com/SRI-CSL/yices2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250232587,"owners_count":21396665,"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":["sat-solver","satisfiability","satisfiability-modulo-theories","smt-solver","theorem-prover"],"created_at":"2024-08-02T01:04:36.272Z","updated_at":"2025-04-22T11:33:25.084Z","avatar_url":"https://github.com/SRI-CSL.png","language":"SMT","funding_links":[],"categories":["SMT"],"sub_categories":[],"readme":"[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![CI](https://github.com/SRI-CSL/yices2/actions/workflows/ci.yml/badge.svg)](https://github.com/SRI-CSL/yices2/actions/workflows/ci.yml)\n[![Coverity Scan Build Status](https://scan.coverity.com/projects/12768/badge.svg)](https://scan.coverity.com/projects/sri-csl-yices2)\n[![Coverage Status](https://coveralls.io/repos/github/SRI-CSL/yices2/badge.svg?branch=master)](https://coveralls.io/github/SRI-CSL/yices2?branch=master)\n\n# Yices 2\n\nYices 2 is a solver for [Satisfiability Modulo\nTheories](https://en.wikipedia.org/wiki/Satisfiability_modulo_theories)\n(SMT) problems. Yices 2 can process input written in the SMT-LIB language, or in Yices' own specification language.\nWe also provide a [C API](https://github.com/SRI-CSL/yices2/blob/master/src/include/yices.h) \nand bindings for [Java](https://github.com/SRI-CSL/yices2_java_bindings), [Python](https://github.com/SRI-CSL/yices2_python_bindings), [Go](https://github.com/SRI-CSL/yices2_go_bindings), and [OCaml](https://github.com/SRI-CSL/yices2_ocaml_bindings).\n\nThis repository includes the source of Yices 2, documentation, tests,\nand examples.\n\nYices 2 is developed by Bruno Dutertre, Dejan Jovanovic, Stéphane Graham-Lengrand, and Ian A. Mason\nat the Computer Science Laboratory, SRI International. To contact us,\nor to get more information about Yices, please visit our\n[website](https://yices.csl.sri.com).\n\n## Simple Examples\n\nHere are a few typical small examples that illustrate \nthe use of Yices using the [SMT2 language](http://smtlib.cs.uiowa.edu/language.shtml).\n\n#### Linear Real Arithmetic\n\n```smt2\n;; QF_LRA = Quantifier-Free Linear Real Arithmetic\n(set-logic QF_LRA)\n;; Declare variables x, y\n(declare-fun x () Real)\n(declare-fun y () Real)\n;; Find solution to (x + y \u003e 0), ((x \u003c 0) || (y \u003c 0))\n(assert (\u003e (+ x y) 0))\n(assert (or (\u003c x 0) (\u003c y 0)))\n;; Run a satisfiability check\n(check-sat)\n;; Print the model\n(get-model)\n```\n\nRunning Yices on the above problem gives a solution\n```\n\u003e yices-smt2 lra.smt2\nsat\n(model\n  (define-fun x () Real 2.0)\n  (define-fun y () Real (- 1.0)))\n```\n\n#### Bit-Vectors\n\n```smt2\n;; QF_BV = Quantifier-Free Bit-Vectors\n(set-logic QF_BV)\n;; Declare variables\n(declare-fun x () (_ BitVec 32))\n(declare-fun y () (_ BitVec 32))\n;; Find solution to (signed) x \u003e 0, y \u003e 0, x + y \u003c x\n(assert (bvsgt x #x00000000))\n(assert (bvsgt y #x00000000))\n(assert (bvslt (bvadd x y) x))\n;; Check\n(check-sat)\n;; Get the model\n(get-model)\n```\n\nRunning Yices on the above problem gives\n\n```\n\u003e yices-smt2 bv.smt2\nsat\n(model\n  (define-fun x () (_ BitVec 32) #b01000000000000000000000000000000)\n  (define-fun y () (_ BitVec 32) #b01000000000000000000000000000000))\n```\n\n#### Non-Linear Arithmetic\n\n```smt2\n;; QF_NRA = Quantifier-Free Nonlinear Real Arithmetic\n(set-logic QF_NRA)\n;; Declare variables\n(declare-fun x () Real)\n(declare-fun y () Real)\n;; Find solution to x^2 + y^2 = 1, x = 2*y, x \u003e 0\n(assert (= (+ (* x x) (* y y)) 1))\n(assert (= x (* 2 y)))\n(assert (\u003e x 0))\n;; Check\n(check-sat)\n;; Get the model\n(get-model)\n```\n\nRunning Yices on the above problem gives\n\n```\nsat\n(model\n  (define-fun x () Real 0.894427)\n  (define-fun y () Real 0.447214))\n```\n\n## Installing Prebuilt Binaries\n\nCurrently you can install Yices either using Homebrew or Apt.\n\n#### Homebrew\n\nInstalling on Darwin using homebrew can be achieved via:\n```\nbrew install SRI-CSL/sri-csl/yices2\n```\nThis will install the full mcsat-enabled version of Yices, including dynamic library and header files.\n\n\n#### Apt\n\nTo install Yices on Ubuntu or Debian, do the following:\n```\nsudo add-apt-repository ppa:sri-csl/formal-methods\nsudo apt-get update\nsudo apt-get install yices2\n```\nThis will install the executables. If you also need the Yices library and header files, replace\nthe last step with:\n```\nsudo apt-get install yices2-dev\n```\n\n\n## Building From Source\n\n#### Prerequisites\n\nTo build Yices from the source, you need:\n\n- GCC version 4.0.x or newer (or clang 3.0 or newer)\n- gperf version 3.0 or newer\n- the GMP library version 4.1 or newer\n\n+ other standard tools: make (gnumake is required), sed, etc.\n\n\nTo build the manual, you also need:\n\n- a latex installation\n- the latexmk tool\n\nTo build the on-line documentation, you need to install the Sphinx\npython package. The simplest method is:\n\n```\nsudo pip install sphinx\n```\n\nSphinx 1.4.x or better is needed.\n\n\n#### Quick Installation\n\nDo this:\n\n```\nautoconf\n./configure\nmake\nsudo make install\n```\n\nThis will install binaries and libraries in `/usr/local/`. You can\nchange the installation location by giving option `--prefix=...` to\nthe `./configure` script.\n\nFor more explanations, please check `doc/COMPILING`.\n\n#### Support for Non-Linear Arithmetic and MC-SAT\n\nYices supports non-linear real and integer arithmetic using a method\nknown as *Model-Constructing Satisfiability* (MC-SAT), but this is not\nenabled by default. The MC-SAT solver also supports other theories and\ntheory combination. We are currently extending it to handle bit-vector\nconstraints.\n\nIf you want the MC-SAT solver, follow these instructions:\n\n1. Install SRI's library for polynomial manipulation. It's available\n   on [github](https://github.com/SRI-CSL/libpoly).\n\n2. Install the CUDD library for binary-decision diagrams. We recommend\n   using the github distribution: https://github.com/ivmai/cudd.\n\n3. After you've installed libpoly and CUDD, add option\n   `--enable-mcsat` to the configure command. In details, type this in\n   the toplevel Yices directory:\n\n```\nautoconf\n./configure --enable-mcsat\nmake\nsudo make install\n```\n\n3. You may need to provide `LDFLAGS/CPPFLAGS` if `./configure` fails to\n  find the libpoly or CUDD libraries. Other options may be useful too.  Try\n  `./configure --help` to see what's there.\n\n\n#### Support for Thread Safety\n\nThe Yices library is not thread safe by default, if you need a re-entrant version:\n```\nautoconf\n./configure --enable-thread-safety\nmake\nsudo make install\n```\n\nIf configured with `--enable-thread-safety` the Yices library will be thread\nsafe in the following sense: as long as the creation and manipulation of\neach context and each model is restricted to a single thread, there should be no races.\nIn particular separate threads can create their own contexts, and manipulate and check\nthem without impeding another thread's progress.\n\nNOTE: `--enable-mcsat` and `--enable-thread-safety` are currently incompatible.\n\n#### Windows Builds\n\nWe recommend compiling using Cygwin. If you want a version that works\nnatively on Windows (i.e., does not depend on the Cygwin DLLs), you\ncan compile from Cygwin using the MinGW cross-compilers. This is\nexplained in doc/COMPILING.\n\n\n#### Documentation\n\nTo build the manual from the source, type\n```\nmake doc\n```\nThis will build `./doc/manual/manual.pdf`.\n\nOther documentation is in the `./doc` directory:\n\n- `doc/COMPILING` explains the compilation process and options in detail.\n- `doc/NOTES` gives an overview of the source code.\n- `doc/YICES-LANGUAGE` explains the syntax of the Yices language, and\n  describes commands, functions, and heuristic parameters.\n\nTo build the Sphinx documentation:\n```\ncd doc/sphinx\nmake html\n```\n\nThis will build the documentation in build/html (within directory\ndoc/sphinx). You can also do:\n```\nmake epub\n```\nand you'll have the doc in `build/epub/Yices.epub`.\n\n## Getting Help and Reporting bugs\n\nFor further questions about Yices, please contact us via the Yices\nmailing lists yices-help@csl.sri.com. This mailing list is moderated,\nbut you do not need to register to post to it. You can register to\nthis mailing list if you are interested in helping others.\n\nPlease submit bug reports through GitHub issues. Please include enough\ninformation in your bug report to enable us to reproduce and fix the\nproblem. This is an example of a good report:\n\n\u003e I am experiencing a segmentation fault from Yices. The following\n\u003e is a small test case that causes the crash. I am using Yices 2.4.1 on\n\u003e x86_64 statically linked against GMP on Ubuntu 12.04.\n\nThis is an example of a poor bug report:\n\n\u003e I have just downloaded Yices. After I compile my code and link it\n\u003e with Yices, there is a segmentation fault when I run the executable.\n\u003e Can you help?\n\nPlease try to include answers to the following questions:\n* Which version of Yices are you using?\n* On which hardware and OS?\n* How can we reproduce the bug? If possible, include an input file or program fragment.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSRI-CSL%2Fyices2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSRI-CSL%2Fyices2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSRI-CSL%2Fyices2/lists"}