PySMT 0.9.7.dev337__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.dev337 → pysmt-0.9.7.dev346}/PySMT.egg-info/entry_points.txt +0 -1
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/__init__.py +1 -1
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/cmd/install.py +2 -2
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/base.py +10 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/msat.py +24 -18
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/optimsat.py +1 -1
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/pico.py +3 -4
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/solvers/cvcfive.py +127 -119
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/parser_utils.py +12 -12
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_bdd.py +1 -1
- PySMT-0.9.7.dev337/PKG-INFO +0 -50
- PySMT-0.9.7.dev337/PySMT.egg-info/PKG-INFO +0 -50
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/LICENSE +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/MANIFEST.in +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/NOTICE +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/PySMT.egg-info/SOURCES.txt +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/PySMT.egg-info/dependency_links.txt +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/PySMT.egg-info/top_level.txt +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/README.rst +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/docs/CHANGES.rst +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/docs/api_ref.rst +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/docs/development.rst +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/docs/getting_started.rst +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/docs/index.rst +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/docs/tutorials/boolean_logic.rst +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/docs/tutorials.rst +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/__main__.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/cmd/__init__.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/cmd/check_version.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/__init__.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/bdd.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/btor.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/cvcfive.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/cvcfour.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/yices.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/cmd/installers/z3.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/cmd/shell.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/configuration.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/constants.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/decorators.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/environment.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/exceptions.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/factory.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/fnode.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/formula.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/logics.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/operators.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/optimization/__init__.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/optimization/goal.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/optimization/msat.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/optimization/optimizer.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/optimization/optimsat.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/optimization/yices.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/optimization/z3.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/oracles.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/parsing.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/printers.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/rewritings.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/shortcuts.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/simplifier.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/smtlib/__init__.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/smtlib/annotations.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/smtlib/commands.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/smtlib/parser/__init__.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/smtlib/parser/parser.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/smtlib/printers.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/smtlib/script.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/smtlib/solver.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/smtlib/utils.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/solvers/__init__.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/solvers/bdd.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/solvers/btor.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/solvers/cvcfour.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/solvers/dynmsat.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/solvers/eager.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/solvers/interpolation.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/solvers/msat.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/solvers/options.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/solvers/pico.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/solvers/portfolio.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/solvers/qelim.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/solvers/smtlib.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/solvers/solver.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/solvers/yices.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/solvers/z3.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/substituter.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/__init__.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/configs/config1.ini +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/configs/config_bad.ini +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/examples.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/omt_examples.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/optimization_utils.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/__init__.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_annotations.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_fuzzed.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_generic_wrapper.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_griggio.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_model_validation.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_omt_lib_solver.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_examples.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_extensibility.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_lra.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_omt.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_qf_arrays.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_qf_lia.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_qf_lira.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_qf_lra.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_qf_nia.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_qf_nra.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_qf_uf.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_qf_ufbv.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_parser_type_error.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/smtlib/test_smtlibscript.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_array.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_back.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_bv.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_bv_simplification.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_cnf.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_configuration.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_constants.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_cvc_quantifiers.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_dwf.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_eager_model.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_env.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_euf.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_formula.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_hr_parsing.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_imports.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_int.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_interpolation.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_lira.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_logics.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_models.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_native_qe.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_nia.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_nlira.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_optimization.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_optimizing.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_oracles.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_portfolio.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_printing.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_qe.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_regressions.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_rewritings.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_shannon_expansion.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_simplify.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_size.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_solving.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_sorts.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_string.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_typechecker.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_unsat_cores.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_walker_ext.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/test/test_walkers.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/type_checker.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/typing.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/utils.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/walkers/__init__.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/walkers/dag.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/walkers/generic.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/walkers/identitydag.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/pysmt/walkers/tree.py +0 -0
- {PySMT-0.9.7.dev337 → pysmt-0.9.7.dev346}/setup.cfg +0 -0
- {PySMT-0.9.7.dev337 → 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"):
|