{"id":18422421,"url":"https://github.com/sri-csl/yices2","last_synced_at":"2026-01-26T12:35:02.008Z","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-13T12:57:28.063Z","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}},"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":248717261,"owners_count":21150389,"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-11-06T04:29:39.496Z","updated_at":"2026-01-26T12:35:02.001Z","avatar_url":"https://github.com/SRI-CSL.png","language":"SMT","funding_links":[],"categories":[],"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\u003cimg width=\"100\" style=\"display: block; margin: auto;\" src=\"https://avatars.githubusercontent.com/u/8029212\"/\u003e\n\n# SRI Yices 2\n\nSRI Yices 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((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((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((define-fun x () Real 0.894427)\n (define-fun y () Real 0.447214))\n```\n\n## Parallel Yices Example\n\nYices can be run in parallel using a portfolio approach, which launches several instances of `yices_smt2` with different configurations and returns as soon as one instance finds a solution. This is useful for hard SMT problems where different configurations may solve the problem faster.\n\nA Python script is provided in `utils/yices2_parallel.py` for this purpose. Example usage:\n\n```sh\npython3 utils/yices2_parallel.py --yices /path/to/yices_smt2 -n 4 --verbose path/to/problem.smt2\n```\n\n- `--yices` specifies the path to the `yices_smt2` executable (default: `yices_smt2` in the script directory)\n- `-n` sets the number of parallel threads/configurations (default: 4)\n- `--verbose` enables detailed output\n- The last argument is the path to your SMT2 file\n\nThe script will run several Yices instances in parallel and print the result (`sat`, `unsat`, or `unknown`) as soon as one instance finishes.\n\nFor more options, run:\n\n```sh\npython3 utils/yices2_parallel.py --help\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`","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"}