PySMT 0.9.7.dev333__tar.gz → 0.9.7.dev346__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pysmt-0.9.7.dev346/PKG-INFO +58 -0
- pysmt-0.9.7.dev346/PySMT.egg-info/PKG-INFO +58 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/PySMT.egg-info/entry_points.txt +0 -1
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/__init__.py +1 -1
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/cmd/install.py +2 -2
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/base.py +10 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/msat.py +24 -18
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/optimsat.py +1 -1
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/pico.py +3 -4
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/factory.py +10 -5
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/solvers/cvcfive.py +127 -119
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/parser_utils.py +12 -12
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_bdd.py +1 -1
- PySMT-0.9.7.dev333/PKG-INFO +0 -50
- PySMT-0.9.7.dev333/PySMT.egg-info/PKG-INFO +0 -50
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/LICENSE +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/MANIFEST.in +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/NOTICE +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/PySMT.egg-info/SOURCES.txt +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/PySMT.egg-info/dependency_links.txt +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/PySMT.egg-info/top_level.txt +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/README.rst +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/docs/CHANGES.rst +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/docs/api_ref.rst +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/docs/development.rst +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/docs/getting_started.rst +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/docs/index.rst +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/docs/tutorials/boolean_logic.rst +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/docs/tutorials.rst +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/__main__.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/cmd/__init__.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/cmd/check_version.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/__init__.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/bdd.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/btor.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/cvcfive.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/cvcfour.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/yices.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/z3.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/cmd/shell.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/configuration.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/constants.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/decorators.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/environment.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/exceptions.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/fnode.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/formula.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/logics.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/operators.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/optimization/__init__.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/optimization/goal.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/optimization/msat.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/optimization/optimizer.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/optimization/optimsat.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/optimization/yices.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/optimization/z3.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/oracles.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/parsing.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/printers.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/rewritings.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/shortcuts.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/simplifier.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/smtlib/__init__.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/smtlib/annotations.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/smtlib/commands.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/smtlib/parser/__init__.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/smtlib/parser/parser.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/smtlib/printers.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/smtlib/script.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/smtlib/solver.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/smtlib/utils.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/solvers/__init__.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/solvers/bdd.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/solvers/btor.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/solvers/cvcfour.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/solvers/dynmsat.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/solvers/eager.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/solvers/interpolation.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/solvers/msat.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/solvers/options.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/solvers/pico.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/solvers/portfolio.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/solvers/qelim.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/solvers/smtlib.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/solvers/solver.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/solvers/yices.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/solvers/z3.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/substituter.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/__init__.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/configs/config1.ini +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/configs/config_bad.ini +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/examples.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/omt_examples.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/optimization_utils.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/__init__.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_annotations.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_fuzzed.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_generic_wrapper.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_griggio.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_model_validation.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_omt_lib_solver.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_examples.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_extensibility.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_lra.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_omt.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_qf_arrays.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_qf_lia.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_qf_lira.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_qf_lra.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_qf_nia.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_qf_nra.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_qf_uf.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_qf_ufbv.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_type_error.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_smtlibscript.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_array.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_back.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_bv.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_bv_simplification.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_cnf.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_configuration.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_constants.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_cvc_quantifiers.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_dwf.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_eager_model.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_env.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_euf.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_formula.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_hr_parsing.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_imports.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_int.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_interpolation.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_lira.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_logics.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_models.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_native_qe.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_nia.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_nlira.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_optimization.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_optimizing.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_oracles.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_portfolio.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_printing.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_qe.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_regressions.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_rewritings.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_shannon_expansion.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_simplify.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_size.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_solving.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_sorts.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_string.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_typechecker.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_unsat_cores.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_walker_ext.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/test/test_walkers.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/type_checker.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/typing.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/utils.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/walkers/__init__.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/walkers/dag.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/walkers/generic.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/walkers/identitydag.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/pysmt/walkers/tree.py +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/setup.cfg +0 -0
- {PySMT-0.9.7.dev333 → pysmt-0.9.7.dev346}/setup.py +0 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: PySMT
|
|
3
|
+
Version: 0.9.7.dev346
|
|
4
|
+
Summary: A solver-agnostic library for SMT Formulae manipulation and solving
|
|
5
|
+
Home-page: http://www.pysmt.org
|
|
6
|
+
Author: PySMT Team
|
|
7
|
+
Author-email: info@pysmt.org
|
|
8
|
+
License: APACHE
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
License-File: NOTICE
|
|
11
|
+
Dynamic: author
|
|
12
|
+
Dynamic: author-email
|
|
13
|
+
Dynamic: description
|
|
14
|
+
Dynamic: home-page
|
|
15
|
+
Dynamic: license
|
|
16
|
+
Dynamic: license-file
|
|
17
|
+
Dynamic: summary
|
|
18
|
+
|
|
19
|
+
============================================================
|
|
20
|
+
pySMT: A library for SMT formulae manipulation and solving
|
|
21
|
+
============================================================
|
|
22
|
+
|
|
23
|
+
pySMT makes working with Satisfiability Modulo Theory simple.
|
|
24
|
+
|
|
25
|
+
Among others, you can:
|
|
26
|
+
|
|
27
|
+
* Define formulae in a solver independent way in a simple and
|
|
28
|
+
inutitive way,
|
|
29
|
+
* Write ad-hoc simplifiers and operators,
|
|
30
|
+
* Dump your problems in the SMT-Lib format,
|
|
31
|
+
* Solve them using one of the native solvers, or by wrapping any
|
|
32
|
+
SMT-Lib complaint solver.
|
|
33
|
+
|
|
34
|
+
Supported Theories and Solvers
|
|
35
|
+
==============================
|
|
36
|
+
pySMT provides methods to define a formula in Linear Real Arithmetic (LRA),
|
|
37
|
+
Real Difference Logic (RDL), their combination (LIRA),
|
|
38
|
+
Equalities and Uninterpreted Functions (EUF), Bit-Vectors (BV), and Arrays (A).
|
|
39
|
+
The following solvers are supported through native APIs:
|
|
40
|
+
|
|
41
|
+
* MathSAT (http://mathsat.fbk.eu/)
|
|
42
|
+
* Z3 (https://github.com/Z3Prover/z3/)
|
|
43
|
+
* cvc5 (https://cvc5.github.io/)
|
|
44
|
+
* Yices 2 (http://yices.csl.sri.com/)
|
|
45
|
+
* CUDD (http://vlsi.colorado.edu/~fabio/CUDD/)
|
|
46
|
+
* PicoSAT (http://fmv.jku.at/picosat/)
|
|
47
|
+
* Boolector (http://fmv.jku.at/boolector/)
|
|
48
|
+
|
|
49
|
+
Additionally, you can use any SMT-LIB 2 compliant solver.
|
|
50
|
+
|
|
51
|
+
PySMT assumes that the python bindings for the SMT Solver are installed and
|
|
52
|
+
accessible from your PYTHONPATH.
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
Wanna know more?
|
|
56
|
+
================
|
|
57
|
+
|
|
58
|
+
Visit http://www.pysmt.org
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: PySMT
|
|
3
|
+
Version: 0.9.7.dev346
|
|
4
|
+
Summary: A solver-agnostic library for SMT Formulae manipulation and solving
|
|
5
|
+
Home-page: http://www.pysmt.org
|
|
6
|
+
Author: PySMT Team
|
|
7
|
+
Author-email: info@pysmt.org
|
|
8
|
+
License: APACHE
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
License-File: NOTICE
|
|
11
|
+
Dynamic: author
|
|
12
|
+
Dynamic: author-email
|
|
13
|
+
Dynamic: description
|
|
14
|
+
Dynamic: home-page
|
|
15
|
+
Dynamic: license
|
|
16
|
+
Dynamic: license-file
|
|
17
|
+
Dynamic: summary
|
|
18
|
+
|
|
19
|
+
============================================================
|
|
20
|
+
pySMT: A library for SMT formulae manipulation and solving
|
|
21
|
+
============================================================
|
|
22
|
+
|
|
23
|
+
pySMT makes working with Satisfiability Modulo Theory simple.
|
|
24
|
+
|
|
25
|
+
Among others, you can:
|
|
26
|
+
|
|
27
|
+
* Define formulae in a solver independent way in a simple and
|
|
28
|
+
inutitive way,
|
|
29
|
+
* Write ad-hoc simplifiers and operators,
|
|
30
|
+
* Dump your problems in the SMT-Lib format,
|
|
31
|
+
* Solve them using one of the native solvers, or by wrapping any
|
|
32
|
+
SMT-Lib complaint solver.
|
|
33
|
+
|
|
34
|
+
Supported Theories and Solvers
|
|
35
|
+
==============================
|
|
36
|
+
pySMT provides methods to define a formula in Linear Real Arithmetic (LRA),
|
|
37
|
+
Real Difference Logic (RDL), their combination (LIRA),
|
|
38
|
+
Equalities and Uninterpreted Functions (EUF), Bit-Vectors (BV), and Arrays (A).
|
|
39
|
+
The following solvers are supported through native APIs:
|
|
40
|
+
|
|
41
|
+
* MathSAT (http://mathsat.fbk.eu/)
|
|
42
|
+
* Z3 (https://github.com/Z3Prover/z3/)
|
|
43
|
+
* cvc5 (https://cvc5.github.io/)
|
|
44
|
+
* Yices 2 (http://yices.csl.sri.com/)
|
|
45
|
+
* CUDD (http://vlsi.colorado.edu/~fabio/CUDD/)
|
|
46
|
+
* PicoSAT (http://fmv.jku.at/picosat/)
|
|
47
|
+
* Boolector (http://fmv.jku.at/boolector/)
|
|
48
|
+
|
|
49
|
+
Additionally, you can use any SMT-LIB 2 compliant solver.
|
|
50
|
+
|
|
51
|
+
PySMT assumes that the python bindings for the SMT Solver are installed and
|
|
52
|
+
accessible from your PYTHONPATH.
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
Wanna know more?
|
|
56
|
+
================
|
|
57
|
+
|
|
58
|
+
Visit http://www.pysmt.org
|
|
@@ -32,8 +32,8 @@ from pysmt import __version__ as pysmt_version
|
|
|
32
32
|
Installer = namedtuple("Installer",
|
|
33
33
|
["InstallerClass", "version", "extra_params"])
|
|
34
34
|
INSTALLERS = [
|
|
35
|
-
Installer(MSatInstaller, "5.6.
|
|
36
|
-
Installer(CVC5Installer, "1.
|
|
35
|
+
Installer(MSatInstaller, "5.6.16", {}),
|
|
36
|
+
Installer(CVC5Installer, "1.3.3", {}),
|
|
37
37
|
Installer(CVC4Installer, "1.7-prerelease",
|
|
38
38
|
{"git_version" : "391ab9df6c3fd9a3771864900c1718534c1e4666"}),
|
|
39
39
|
Installer(Z3Installer, "4.15.0", {}),
|
|
@@ -231,6 +231,16 @@ class SolverInstaller(object):
|
|
|
231
231
|
stderr.close()
|
|
232
232
|
|
|
233
233
|
|
|
234
|
+
@staticmethod
|
|
235
|
+
def replace_in_file(file_path, old_str, new_str):
|
|
236
|
+
"""Replaces all occurrences of old_str with new_str in the given file"""
|
|
237
|
+
with open(file_path, "r") as f:
|
|
238
|
+
content = f.read()
|
|
239
|
+
content = content.replace(old_str, new_str)
|
|
240
|
+
with open(file_path, "w") as f:
|
|
241
|
+
f.write(content)
|
|
242
|
+
|
|
243
|
+
|
|
234
244
|
@staticmethod
|
|
235
245
|
def clean_dir(path):
|
|
236
246
|
"""Empties a (possibly non-existent) directory"""
|
|
@@ -34,14 +34,14 @@ class MSatInstaller(SolverInstaller):
|
|
|
34
34
|
"ext": "tar.gz"
|
|
35
35
|
}
|
|
36
36
|
if self.os_name == "windows":
|
|
37
|
+
archive_name_template = "mathsat-{version}-{os}.{ext}"
|
|
37
38
|
format["ext"] = "zip"
|
|
38
|
-
format["
|
|
39
|
-
format["os"] = "win64" if self.architecture == "x86_64" else "win32"
|
|
39
|
+
format["os"] = "win64"
|
|
40
40
|
elif self.os_name == "darwin":
|
|
41
41
|
# Since version 5.6.7 the architecture is not included in the
|
|
42
42
|
# pkg name for the OSX release as it is considered a "univeral binary"
|
|
43
43
|
archive_name_template = "mathsat-{version}-{os}.{ext}"
|
|
44
|
-
format["os"] = "
|
|
44
|
+
format["os"] = "macos"
|
|
45
45
|
|
|
46
46
|
archive_name = archive_name_template.format(**format)
|
|
47
47
|
|
|
@@ -61,19 +61,25 @@ class MSatInstaller(SolverInstaller):
|
|
|
61
61
|
if self.os_name == "windows":
|
|
62
62
|
libdir = os.path.join(self.python_bindings_dir, "../lib")
|
|
63
63
|
incdir = os.path.join(self.python_bindings_dir, "../include")
|
|
64
|
-
gmp_h_url = "https://github.com/mikand/tamer-windows-deps/raw/master/gmp/include/gmp.h"
|
|
65
|
-
mpir_dll_url = "https://github.com/Legrandin/mpir-windows-builds/blob/master/mpir-2.6.0_VS2015_%s/mpir.dll?raw=true" % self.bits
|
|
66
|
-
mpir_lib_url = "https://github.com/Legrandin/mpir-windows-builds/blob/master/mpir-2.6.0_VS2015_%s/mpir.lib?raw=true" % self.bits
|
|
67
|
-
setup_py_win_url = "https://github.com/pysmt/solvers_patches/raw/master/mathsat/setup-win.py"
|
|
68
|
-
|
|
69
|
-
SolverInstaller.do_download(gmp_h_url, os.path.join(incdir, "gmp.h"))
|
|
70
|
-
SolverInstaller.do_download(mpir_dll_url, os.path.join(libdir, "mpir.dll"))
|
|
71
|
-
SolverInstaller.do_download(mpir_lib_url, os.path.join(libdir, "mpir.lib"))
|
|
72
64
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
SolverInstaller.
|
|
65
|
+
gmp_win_url = "https://github.com/apotocki/gmp-win/releases/download/6.3.0/gmp-6.3.0.zip"
|
|
66
|
+
gmp_archive = os.path.join(self.base_dir, "gmp-6.3.0.zip")
|
|
67
|
+
gmp_dir = os.path.join(self.base_dir, "gmp-6.3.0")
|
|
68
|
+
SolverInstaller.clean_dir(gmp_dir)
|
|
69
|
+
SolverInstaller.do_download(url=gmp_win_url, file_name=gmp_archive)
|
|
70
|
+
SolverInstaller.unzip(gmp_archive, gmp_dir)
|
|
71
|
+
|
|
72
|
+
gmp_include_dir = os.path.join(self.base_dir, "gmp-6.3.0", "include")
|
|
73
|
+
gmp_lib_dir = os.path.join(self.base_dir, "gmp-6.3.0", "lib")
|
|
74
|
+
# gmp_dll_dir = os.path.join(self.base_dir, "gmp-6.3.0", "bin")
|
|
75
|
+
SolverInstaller.mv(os.path.join(gmp_include_dir, "gmp.h"), incdir)
|
|
76
|
+
SolverInstaller.mv(source=os.path.join(gmp_lib_dir, "gmpdll.lib"),
|
|
77
|
+
dest=os.path.join(libdir, "gmp.lib"))
|
|
78
|
+
|
|
79
|
+
# The MathSAT setup.py expects to link against "mpir" on Windows,
|
|
80
|
+
# but we link against "gmp", so we need to patch the setup.py
|
|
81
|
+
setup_py_path = os.path.join(self.python_bindings_dir, "setup.py")
|
|
82
|
+
SolverInstaller.replace_in_file(setup_py_path, "mpir", "gmp")
|
|
77
83
|
|
|
78
84
|
# Run setup.py to compile the bindings
|
|
79
85
|
if self.os_name in {"windows", "darwin"}:
|
|
@@ -89,11 +95,11 @@ class MSatInstaller(SolverInstaller):
|
|
|
89
95
|
pdir = self.python_bindings_dir
|
|
90
96
|
bdir = os.path.join(pdir, "build")
|
|
91
97
|
sodir = glob.glob(bdir + "/lib.*")[0]
|
|
92
|
-
libdir = os.path.join(self.python_bindings_dir, "../
|
|
98
|
+
libdir = os.path.join(self.python_bindings_dir, "../bin")
|
|
93
99
|
|
|
94
100
|
# First, we need the SWIG-generated wrapper
|
|
95
101
|
for f in os.listdir(sodir):
|
|
96
|
-
if
|
|
102
|
+
if "_mathsat" in f:
|
|
97
103
|
SolverInstaller.mv(os.path.join(sodir, f), self.bindings_dir)
|
|
98
104
|
SolverInstaller.mv(os.path.join(pdir, "mathsat.py"), self.bindings_dir)
|
|
99
105
|
|
|
@@ -103,7 +109,7 @@ class MSatInstaller(SolverInstaller):
|
|
|
103
109
|
if f.endswith(".so") or f.endswith(".dll") or f.endswith(".dylib"):
|
|
104
110
|
SolverInstaller.mv(os.path.join(libdir, f), self.bindings_dir)
|
|
105
111
|
|
|
106
|
-
# Fix issue in MathSAT 5.6.10 linking to incorrect directory on
|
|
112
|
+
# Fix issue in MathSAT 5.6.10 linking to incorrect directory on MacOS
|
|
107
113
|
if self.os_name == "darwin":
|
|
108
114
|
soname = glob.glob(self.bindings_dir + "/_mathsat*.so")[0]
|
|
109
115
|
old_path = "/Users/alb/src/release/build/libmathsat.dylib"
|
|
@@ -37,7 +37,7 @@ class OptiMSatInstaller(SolverInstaller):
|
|
|
37
37
|
archive_name = "optimathsat-%s-%s-%s.%s" % (solver_version, os_name,
|
|
38
38
|
arch, ext)
|
|
39
39
|
|
|
40
|
-
native_link = "
|
|
40
|
+
native_link = "https://optimathsat.disi.unitn.it/releases/optimathsat-%s/{archive_name}" % solver_version
|
|
41
41
|
|
|
42
42
|
SolverInstaller.__init__(self, install_dir=install_dir,
|
|
43
43
|
bindings_dir=bindings_dir,
|
|
@@ -11,9 +11,10 @@
|
|
|
11
11
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
|
-
import
|
|
14
|
+
import os
|
|
15
15
|
import json
|
|
16
16
|
import codecs
|
|
17
|
+
import glob
|
|
17
18
|
|
|
18
19
|
import urllib.request
|
|
19
20
|
|
|
@@ -59,10 +60,8 @@ class PicoSATInstaller(SolverInstaller):
|
|
|
59
60
|
SolverInstaller.run_python("setup.py build", directory=self.extract_path)
|
|
60
61
|
|
|
61
62
|
def move(self):
|
|
62
|
-
libdir = "lib.%s-%s-%s" % (self.os_name, self.architecture,
|
|
63
|
-
self.python_version)
|
|
64
63
|
bdir = os.path.join(self.extract_path, "build")
|
|
65
|
-
sodir =
|
|
64
|
+
sodir = glob.glob(bdir + "/lib.*")[0]
|
|
66
65
|
|
|
67
66
|
for f in os.listdir(sodir):
|
|
68
67
|
if f.endswith(".so"):
|
|
@@ -321,10 +321,11 @@ class Factory(object):
|
|
|
321
321
|
from pysmt.solvers.msat import (MSatFMQuantifierEliminator,
|
|
322
322
|
MSatLWQuantifierEliminator)
|
|
323
323
|
try:
|
|
324
|
-
MSatFMQuantifierEliminator()
|
|
325
|
-
MSatLWQuantifierEliminator()
|
|
326
|
-
except:
|
|
324
|
+
MSatFMQuantifierEliminator(self.environment)
|
|
325
|
+
MSatLWQuantifierEliminator(self.environment)
|
|
326
|
+
except NotImplementedError:
|
|
327
327
|
raise SolverAPINotFound
|
|
328
|
+
|
|
328
329
|
self._all_qelims['msat_fm'] = MSatFMQuantifierEliminator
|
|
329
330
|
self._all_qelims['msat_lw'] = MSatLWQuantifierEliminator
|
|
330
331
|
except SolverAPINotFound:
|
|
@@ -335,6 +336,12 @@ class Factory(object):
|
|
|
335
336
|
MSATLibLoader("optimathsat")
|
|
336
337
|
from pysmt.optimization.optimsat import (OptiMSATFMQuantifierEliminator,
|
|
337
338
|
OptiMSATLWQuantifierEliminator)
|
|
339
|
+
try:
|
|
340
|
+
OptiMSATFMQuantifierEliminator(self.environment)
|
|
341
|
+
OptiMSATLWQuantifierEliminator(self.environment)
|
|
342
|
+
except NotImplementedError:
|
|
343
|
+
raise SolverAPINotFound
|
|
344
|
+
|
|
338
345
|
self._all_qelims['optimsat_fm'] = OptiMSATFMQuantifierEliminator
|
|
339
346
|
self._all_qelims['optimsat_lw'] = OptiMSATLWQuantifierEliminator
|
|
340
347
|
except SolverAPINotFound:
|
|
@@ -397,8 +404,6 @@ class Factory(object):
|
|
|
397
404
|
self._all_optimizers['optimsat'] = OptiMSATSolver
|
|
398
405
|
except SolverAPINotFound:
|
|
399
406
|
pass
|
|
400
|
-
except SolverAPINotFound:
|
|
401
|
-
pass
|
|
402
407
|
|
|
403
408
|
try:
|
|
404
409
|
from pysmt.optimization.yices import YicesSUAOptimizer, YicesIncrementalOptimizer
|