PySMT 0.9.1.dev166__tar.gz → 0.9.6__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.1.dev166 → PySMT-0.9.6}/MANIFEST.in +2 -0
- {PySMT-0.9.1.dev166/PySMT.egg-info → PySMT-0.9.6}/PKG-INFO +2 -2
- {PySMT-0.9.1.dev166 → PySMT-0.9.6/PySMT.egg-info}/PKG-INFO +2 -2
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/PySMT.egg-info/SOURCES.txt +7 -3
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/README.rst +5 -5
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/docs/CHANGES.rst +83 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/docs/getting_started.rst +2 -2
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/__init__.py +1 -1
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/check_version.py +7 -5
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/install.py +9 -9
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/installers/__init__.py +4 -3
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/installers/base.py +14 -14
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/installers/bdd.py +2 -2
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/installers/btor.py +3 -2
- PySMT-0.9.6/pysmt/cmd/installers/cvcfive.py +42 -0
- PySMT-0.9.1.dev166/pysmt/cmd/installers/cvc4.py → PySMT-0.9.6/pysmt/cmd/installers/cvcfour.py +2 -2
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/installers/msat.py +20 -17
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/installers/yices.py +18 -25
- PySMT-0.9.6/pysmt/cmd/installers/z3.py +38 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/shell.py +1 -1
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/configuration.py +1 -1
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/constants.py +9 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/decorators.py +1 -1
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/exceptions.py +1 -1
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/factory.py +10 -4
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/fnode.py +3 -10
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/formula.py +11 -14
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/logics.py +63 -43
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/oracles.py +1 -1
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/printers.py +2 -2
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/rewritings.py +1 -1
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/shortcuts.py +1 -1
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/smtlib/parser/__init__.py +26 -5
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/smtlib/parser/parser.py +2 -2
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/smtlib/utils.py +1 -1
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/bdd.py +1 -1
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/btor.py +69 -32
- PySMT-0.9.6/pysmt/solvers/cvcfive.py +548 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/interpolation.py +2 -2
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/portfolio.py +3 -1
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/qelim.py +1 -1
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/smtlib.py +2 -2
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/solver.py +2 -2
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/yices.py +130 -113
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/substituter.py +4 -4
- PySMT-0.9.6/pysmt/test/configs/config1.ini +12 -0
- PySMT-0.9.6/pysmt/test/configs/config_bad.ini +5 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/examples.py +10 -4
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/parser_utils.py +5 -2
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_examples.py +16 -12
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_array.py +16 -7
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_back.py +5 -5
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_bv_simplification.py +4 -2
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_cnf.py +2 -1
- PySMT-0.9.1.dev166/pysmt/test/test_cvc4_quantifiers.py → PySMT-0.9.6/pysmt/test/test_cvc_quantifiers.py +7 -7
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_logics.py +7 -2
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_nia.py +10 -10
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_nlira.py +15 -5
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_portfolio.py +11 -11
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_qe.py +2 -2
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_rewritings.py +1 -1
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_simplify.py +2 -2
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_solving.py +18 -17
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/type_checker.py +6 -7
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/setup.py +1 -1
- PySMT-0.9.1.dev166/pysmt/cmd/installers/z3.py +0 -85
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/LICENSE +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/NOTICE +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/PySMT.egg-info/dependency_links.txt +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/PySMT.egg-info/entry_points.txt +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/PySMT.egg-info/top_level.txt +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/docs/api_ref.rst +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/docs/development.rst +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/docs/index.rst +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/docs/tutorials/boolean_logic.rst +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/docs/tutorials.rst +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/__main__.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/__init__.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/installers/pico.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/environment.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/operators.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/parsing.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/simplifier.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/smtlib/__init__.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/smtlib/annotations.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/smtlib/commands.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/smtlib/printers.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/smtlib/script.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/smtlib/solver.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/__init__.py +0 -0
- /PySMT-0.9.1.dev166/pysmt/solvers/cvc4.py → /PySMT-0.9.6/pysmt/solvers/cvcfour.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/eager.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/msat.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/options.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/pico.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/z3.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/__init__.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/__init__.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_annotations.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_fuzzed.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_generic_wrapper.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_griggio.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_model_validation.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_extensibility.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_lra.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_qf_arrays.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_qf_lia.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_qf_lira.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_qf_lra.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_qf_nia.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_qf_nra.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_qf_uf.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_qf_ufbv.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_type_error.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_smtlibscript.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_bdd.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_bv.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_configuration.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_constants.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_dwf.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_eager_model.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_env.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_euf.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_formula.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_hr_parsing.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_imports.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_int.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_interpolation.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_lira.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_models.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_native_qe.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_oracles.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_printing.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_regressions.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_shannon_expansion.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_size.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_sorts.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_string.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_typechecker.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_unsat_cores.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_walker_ext.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_walkers.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/typing.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/utils.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/walkers/__init__.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/walkers/dag.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/walkers/generic.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/walkers/identitydag.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/walkers/tree.py +0 -0
- {PySMT-0.9.1.dev166 → PySMT-0.9.6}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 1.0
|
|
2
2
|
Name: PySMT
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.6
|
|
4
4
|
Summary: A solver-agnostic library for SMT Formulae manipulation and solving
|
|
5
5
|
Home-page: http://www.pysmt.org
|
|
6
6
|
Author: PySMT Team
|
|
@@ -30,7 +30,7 @@ Description: ============================================================
|
|
|
30
30
|
|
|
31
31
|
* MathSAT (http://mathsat.fbk.eu/)
|
|
32
32
|
* Z3 (https://github.com/Z3Prover/z3/)
|
|
33
|
-
*
|
|
33
|
+
* cvc5 (https://cvc5.github.io/)
|
|
34
34
|
* Yices 2 (http://yices.csl.sri.com/)
|
|
35
35
|
* CUDD (http://vlsi.colorado.edu/~fabio/CUDD/)
|
|
36
36
|
* PicoSAT (http://fmv.jku.at/picosat/)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 1.0
|
|
2
2
|
Name: PySMT
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.6
|
|
4
4
|
Summary: A solver-agnostic library for SMT Formulae manipulation and solving
|
|
5
5
|
Home-page: http://www.pysmt.org
|
|
6
6
|
Author: PySMT Team
|
|
@@ -30,7 +30,7 @@ Description: ============================================================
|
|
|
30
30
|
|
|
31
31
|
* MathSAT (http://mathsat.fbk.eu/)
|
|
32
32
|
* Z3 (https://github.com/Z3Prover/z3/)
|
|
33
|
-
*
|
|
33
|
+
* cvc5 (https://cvc5.github.io/)
|
|
34
34
|
* Yices 2 (http://yices.csl.sri.com/)
|
|
35
35
|
* CUDD (http://vlsi.colorado.edu/~fabio/CUDD/)
|
|
36
36
|
* PicoSAT (http://fmv.jku.at/picosat/)
|
|
@@ -45,7 +45,8 @@ pysmt/cmd/installers/__init__.py
|
|
|
45
45
|
pysmt/cmd/installers/base.py
|
|
46
46
|
pysmt/cmd/installers/bdd.py
|
|
47
47
|
pysmt/cmd/installers/btor.py
|
|
48
|
-
pysmt/cmd/installers/
|
|
48
|
+
pysmt/cmd/installers/cvcfive.py
|
|
49
|
+
pysmt/cmd/installers/cvcfour.py
|
|
49
50
|
pysmt/cmd/installers/msat.py
|
|
50
51
|
pysmt/cmd/installers/pico.py
|
|
51
52
|
pysmt/cmd/installers/yices.py
|
|
@@ -62,7 +63,8 @@ pysmt/smtlib/parser/parser.py
|
|
|
62
63
|
pysmt/solvers/__init__.py
|
|
63
64
|
pysmt/solvers/bdd.py
|
|
64
65
|
pysmt/solvers/btor.py
|
|
65
|
-
pysmt/solvers/
|
|
66
|
+
pysmt/solvers/cvcfive.py
|
|
67
|
+
pysmt/solvers/cvcfour.py
|
|
66
68
|
pysmt/solvers/eager.py
|
|
67
69
|
pysmt/solvers/interpolation.py
|
|
68
70
|
pysmt/solvers/msat.py
|
|
@@ -84,7 +86,7 @@ pysmt/test/test_bv_simplification.py
|
|
|
84
86
|
pysmt/test/test_cnf.py
|
|
85
87
|
pysmt/test/test_configuration.py
|
|
86
88
|
pysmt/test/test_constants.py
|
|
87
|
-
pysmt/test/
|
|
89
|
+
pysmt/test/test_cvc_quantifiers.py
|
|
88
90
|
pysmt/test/test_dwf.py
|
|
89
91
|
pysmt/test/test_eager_model.py
|
|
90
92
|
pysmt/test/test_env.py
|
|
@@ -116,6 +118,8 @@ pysmt/test/test_typechecker.py
|
|
|
116
118
|
pysmt/test/test_unsat_cores.py
|
|
117
119
|
pysmt/test/test_walker_ext.py
|
|
118
120
|
pysmt/test/test_walkers.py
|
|
121
|
+
pysmt/test/configs/config1.ini
|
|
122
|
+
pysmt/test/configs/config_bad.ini
|
|
119
123
|
pysmt/test/smtlib/__init__.py
|
|
120
124
|
pysmt/test/smtlib/parser_utils.py
|
|
121
125
|
pysmt/test/smtlib/test_annotations.py
|
|
@@ -105,7 +105,7 @@ solving using multiple solvers and multiple solver configurations.
|
|
|
105
105
|
x, y = Symbol("x"), Symbol("y")
|
|
106
106
|
f = x.Implies(y)
|
|
107
107
|
|
|
108
|
-
with Portfolio(["
|
|
108
|
+
with Portfolio(["cvc5",
|
|
109
109
|
"yices",
|
|
110
110
|
("msat", {"random_seed": 1}),
|
|
111
111
|
("msat", {"random_seed": 17}),
|
|
@@ -167,7 +167,7 @@ combinations. The following solvers are supported through native APIs:
|
|
|
167
167
|
|
|
168
168
|
* MathSAT (http://mathsat.fbk.eu/)
|
|
169
169
|
* Z3 (https://github.com/Z3Prover/z3/)
|
|
170
|
-
*
|
|
170
|
+
* cvc5 (https://cvc5.github.io/)
|
|
171
171
|
* Yices 2 (http://yices.csl.sri.com/)
|
|
172
172
|
* CUDD (http://vlsi.colorado.edu/~fabio/CUDD/)
|
|
173
173
|
* PicoSAT (http://fmv.jku.at/picosat/)
|
|
@@ -182,7 +182,7 @@ Installation
|
|
|
182
182
|
============
|
|
183
183
|
You can install the latest stable release of pySMT from PyPI::
|
|
184
184
|
|
|
185
|
-
|
|
185
|
+
$ pip install pysmt
|
|
186
186
|
|
|
187
187
|
this will additionally install the *pysmt-install* command, that can
|
|
188
188
|
be used to install the solvers: e.g., ::
|
|
@@ -237,9 +237,9 @@ each of the available solvers.
|
|
|
237
237
|
+==================+===========+================================+=============+========================+============+==============+
|
|
238
238
|
| MathSAT | msat | UF, LIA, LRA, BV, AX | No | msat-fm, msat-lw | Yes | Yes |
|
|
239
239
|
+------------------+-----------+--------------------------------+-------------+------------------------+------------+--------------+
|
|
240
|
-
| Z3 | z3 | UF, LIA, LRA, BV, AX, NRA, NIA |
|
|
240
|
+
| Z3 | z3 | UF, LIA, LRA, BV, AX, NRA, NIA | Yes | z3 | Yes | No |
|
|
241
241
|
+------------------+-----------+--------------------------------+-------------+------------------------+------------+--------------+
|
|
242
|
-
|
|
|
242
|
+
| cvc5 | cvc5 | UF, LIA, LRA, BV, AX, S | Yes | No | No | No |
|
|
243
243
|
+------------------+-----------+--------------------------------+-------------+------------------------+------------+--------------+
|
|
244
244
|
| Yices | yices | UF, LIA, LRA, BV | No | No | No | No |
|
|
245
245
|
+------------------+-----------+--------------------------------+-------------+------------------------+------------+--------------+
|
|
@@ -1,6 +1,89 @@
|
|
|
1
1
|
Change Log
|
|
2
2
|
==========
|
|
3
3
|
|
|
4
|
+
0.9.6: 2022-06-24 -- CVC5 and upgraded solvers
|
|
5
|
+
----------------------------------------------
|
|
6
|
+
|
|
7
|
+
## What's Changed
|
|
8
|
+
* Fixed issue #613 by @mikand in https://github.com/pysmt/pysmt/pull/710 - Thanks @ekiwi for reporting
|
|
9
|
+
* Fix missing file in Manifest by @marcogario in https://github.com/pysmt/pysmt/pull/718
|
|
10
|
+
* Upgrade MathSAT to 5.6.6 by @marcogario in https://github.com/pysmt/pysmt/pull/720
|
|
11
|
+
* CI: Avoid running on PR branch push by @marcogario in https://github.com/pysmt/pysmt/pull/721
|
|
12
|
+
* Upgrade MathSAT to 5.6.7 by @marcogario in https://github.com/pysmt/pysmt/pull/719
|
|
13
|
+
* Fix misspellings by @jayvdb in https://github.com/pysmt/pysmt/pull/724
|
|
14
|
+
* Upgrade Z3 to 4.8.17 by @marcogario in https://github.com/pysmt/pysmt/pull/723
|
|
15
|
+
* make FormulaContextualizer singleton in FormulaManager. by @enmag in https://github.com/pysmt/pysmt/pull/698
|
|
16
|
+
* README: Remove interpolants from Z3 by @marcogario in https://github.com/pysmt/pysmt/pull/727
|
|
17
|
+
* Parse logic str in Portfolio by @marcogario in https://github.com/pysmt/pysmt/pull/726
|
|
18
|
+
* Make sudoku.py Python3 compatible by @akumm2k in https://github.com/pysmt/pysmt/pull/734
|
|
19
|
+
* Fix the definition of BVXnor by @YikeZhou in https://github.com/pysmt/pysmt/pull/748
|
|
20
|
+
* Deterministic get_closer_logic by @marcogario in https://github.com/pysmt/pysmt/pull/733
|
|
21
|
+
* Grammar correction by @quantik-git in https://github.com/pysmt/pysmt/pull/750
|
|
22
|
+
* example/parallel.py: typo fix by @tias in https://github.com/pysmt/pysmt/pull/755
|
|
23
|
+
* Fix for pyximport by @marcogario in https://github.com/pysmt/pysmt/pull/766
|
|
24
|
+
* Remove deprecated distutils by @marcogario in https://github.com/pysmt/pysmt/pull/765
|
|
25
|
+
* Fixed removed imp module in Python 3.12 by @cybaol in https://github.com/pysmt/pysmt/pull/770
|
|
26
|
+
* [Boolector] Add support for const arrays and boolean indices/elements by @nbailluet in https://github.com/pysmt/pysmt/pull/771
|
|
27
|
+
* Update of all solvers by @mikand in https://github.com/pysmt/pysmt/pull/761
|
|
28
|
+
|
|
29
|
+
## New Contributors
|
|
30
|
+
* @jayvdb made their first contribution in https://github.com/pysmt/pysmt/pull/724
|
|
31
|
+
* @akumm2k made their first contribution in https://github.com/pysmt/pysmt/pull/734
|
|
32
|
+
* @YikeZhou made their first contribution in https://github.com/pysmt/pysmt/pull/748
|
|
33
|
+
* @quantik-git made their first contribution in https://github.com/pysmt/pysmt/pull/750
|
|
34
|
+
* @tias made their first contribution in https://github.com/pysmt/pysmt/pull/755
|
|
35
|
+
* @cybaol made their first contribution in https://github.com/pysmt/pysmt/pull/770
|
|
36
|
+
* @nbailluet made their first contribution in https://github.com/pysmt/pysmt/pull/771
|
|
37
|
+
|
|
38
|
+
**Full Changelog**: https://github.com/pysmt/pysmt/compare/v0.9.5...v0.9.6
|
|
39
|
+
|
|
40
|
+
0.9.5: 2022-05-28 -- 2 years of bugfixes
|
|
41
|
+
----------------------------------------
|
|
42
|
+
|
|
43
|
+
Intermediate release that collects 2 years of bugfixes and improvements.
|
|
44
|
+
|
|
45
|
+
Python 2 was deprecated in version 0.9.0, and this version removes the use of compatible code for that version.
|
|
46
|
+
|
|
47
|
+
## What's Changed
|
|
48
|
+
|
|
49
|
+
* Add support for boolean-typed array in the AtomsOracle by @mikand in https://github.com/pysmt/pysmt/pull/644
|
|
50
|
+
* Switched from nosetests to pytest by @mikand in https://github.com/pysmt/pysmt/pull/662
|
|
51
|
+
* Fixed a bug in yices quantifier support and added regression test by @mikand in https://github.com/pysmt/pysmt/pull/657
|
|
52
|
+
* Fix Boolector install script by @4tXJ7f in https://github.com/pysmt/pysmt/pull/656
|
|
53
|
+
* BUG: define UFNIA as logic with integer arithmetic by @johnyf in https://github.com/pysmt/pysmt/pull/659
|
|
54
|
+
* Handling of algebraic constants in simplify by @EnricoMagnago in https://github.com/pysmt/pysmt/pull/658
|
|
55
|
+
* Integer div by @EnricoMagnago in https://github.com/pysmt/pysmt/pull/667
|
|
56
|
+
* Fix CVC4 installation on macOS by @kammoh in https://github.com/pysmt/pysmt/pull/666
|
|
57
|
+
* Bug in times distributor by @EnricoMagnago in https://github.com/pysmt/pysmt/pull/671
|
|
58
|
+
* Fixed reset_assertion method for incremental-tracking solvers by @mikand in https://github.com/pysmt/pysmt/pull/672
|
|
59
|
+
* Minor Corrections by @mfarif in https://github.com/pysmt/pysmt/pull/673
|
|
60
|
+
* implement add_assertions method for solver. by @EnricoMagnago in https://github.com/pysmt/pysmt/pull/679
|
|
61
|
+
* Fix "get_model" when called from a generic solver (Fix #674) by @btwael in https://github.com/pysmt/pysmt/pull/675
|
|
62
|
+
* Remove six and python 2 compatibility code by @marcogario in https://github.com/pysmt/pysmt/pull/684
|
|
63
|
+
* Added fallback to Swig3 to address as much as possible issue #682 by @mikand in https://github.com/pysmt/pysmt/pull/685
|
|
64
|
+
* Fix to correctly pass logic to solvers started by Portfolio by @ekilmer in https://github.com/pysmt/pysmt/pull/683
|
|
65
|
+
* SmtLib model validation support by @mikand in https://github.com/pysmt/pysmt/pull/681
|
|
66
|
+
* Fix iss694 by @EnricoMagnago in https://github.com/pysmt/pysmt/pull/695
|
|
67
|
+
* Fixed CVC4 installer after upstream repository renaming by @mikand in https://github.com/pysmt/pysmt/pull/697
|
|
68
|
+
* Remove call to `FNode.substitute` in SmtLibExecutionCache by @EnricoMagnago in https://github.com/pysmt/pysmt/pull/699
|
|
69
|
+
* Added printing of annotations to smt lib printers by @agirardi-fbk in https://github.com/pysmt/pysmt/pull/703
|
|
70
|
+
* Integer div by @EnricoMagnago in https://github.com/pysmt/pysmt/pull/705
|
|
71
|
+
* Updated docker images to solve deprecation issue on azure pipelines by @mikand in https://github.com/pysmt/pysmt/pull/706
|
|
72
|
+
* Workaround to fix Z3 segfault by @mikand in https://github.com/pysmt/pysmt/pull/713
|
|
73
|
+
* Add possibility to use several BV operators as left associative by @agirardi-fbk in https://github.com/pysmt/pysmt/pull/714
|
|
74
|
+
* Fixed issue #613 by @mikand in https://github.com/pysmt/pysmt/pull/710
|
|
75
|
+
|
|
76
|
+
## New Contributors
|
|
77
|
+
* @4tXJ7f made their first contribution in https://github.com/pysmt/pysmt/pull/656
|
|
78
|
+
* @johnyf made their first contribution in https://github.com/pysmt/pysmt/pull/659
|
|
79
|
+
* @kammoh made their first contribution in https://github.com/pysmt/pysmt/pull/666
|
|
80
|
+
* @mfarif made their first contribution in https://github.com/pysmt/pysmt/pull/673
|
|
81
|
+
* @btwael made their first contribution in https://github.com/pysmt/pysmt/pull/675
|
|
82
|
+
* @ekilmer made their first contribution in https://github.com/pysmt/pysmt/pull/683
|
|
83
|
+
* @agirardi-fbk made their first contribution in https://github.com/pysmt/pysmt/pull/703
|
|
84
|
+
|
|
85
|
+
**Full Changelog**: https://github.com/pysmt/pysmt/compare/v0.9.0...v0.9.5
|
|
86
|
+
|
|
4
87
|
0.9.0: 2020-04-26 -- PySMT as module
|
|
5
88
|
------------------------------------
|
|
6
89
|
|
|
@@ -18,7 +18,7 @@ solver. Moreover, pySMT can leverage the API of the following solvers:
|
|
|
18
18
|
|
|
19
19
|
* MathSAT (http://mathsat.fbk.eu/)
|
|
20
20
|
* Z3 (https://github.com/Z3Prover/z3/)
|
|
21
|
-
*
|
|
21
|
+
* cvc5 (https://cvc5.github.io/)
|
|
22
22
|
* Yices 2 (http://yices.csl.sri.com/)
|
|
23
23
|
* CUDD (http://vlsi.colorado.edu/~fabio/CUDD/)
|
|
24
24
|
* PicoSAT (http://fmv.jku.at/picosat/)
|
|
@@ -204,7 +204,7 @@ Solver pySMT name
|
|
|
204
204
|
========= ==========
|
|
205
205
|
MathSAT msat
|
|
206
206
|
Z3 z3
|
|
207
|
-
|
|
207
|
+
cvc5 cvc5
|
|
208
208
|
Yices yices
|
|
209
209
|
Boolector btor
|
|
210
210
|
Picosat picosat
|
|
@@ -41,6 +41,11 @@ def check_version(module):
|
|
|
41
41
|
import pyboolector
|
|
42
42
|
version = "OK" # Just checking if import succeeds
|
|
43
43
|
|
|
44
|
+
elif module == "cvc5":
|
|
45
|
+
import cvc5
|
|
46
|
+
solver = cvc5.Solver()
|
|
47
|
+
version = solver.getVersion().decode('ascii')
|
|
48
|
+
|
|
44
49
|
elif module == "cvc4":
|
|
45
50
|
import CVC4
|
|
46
51
|
version = CVC4.Configuration_getVersionString()
|
|
@@ -50,11 +55,8 @@ def check_version(module):
|
|
|
50
55
|
version = picosat.picosat_version()
|
|
51
56
|
|
|
52
57
|
elif module == "yices":
|
|
53
|
-
import
|
|
54
|
-
|
|
55
|
-
m = yicespy.__dict__['__YICES_VERSION_MAJOR']
|
|
56
|
-
p = yicespy.__dict__['__YICES_VERSION_PATCHLEVEL']
|
|
57
|
-
version = "%d.%d.%d" % (v, m, p)
|
|
58
|
+
import yices_api
|
|
59
|
+
version = yices_api.yices_python_version
|
|
58
60
|
else:
|
|
59
61
|
print("Invalid argument '%s'" % module)
|
|
60
62
|
exit(-2)
|
|
@@ -20,8 +20,8 @@ import platform
|
|
|
20
20
|
from collections import namedtuple
|
|
21
21
|
|
|
22
22
|
from pysmt.cmd.installers import MSatInstaller, Z3Installer, PicoSATInstaller
|
|
23
|
-
from pysmt.cmd.installers import
|
|
24
|
-
from pysmt.cmd.installers import CuddInstaller
|
|
23
|
+
from pysmt.cmd.installers import CVC5Installer, YicesInstaller, BtorInstaller
|
|
24
|
+
from pysmt.cmd.installers import CuddInstaller, CVC4Installer
|
|
25
25
|
from pysmt.cmd.installers.base import solver_install_site
|
|
26
26
|
|
|
27
27
|
from pysmt.environment import get_env
|
|
@@ -32,13 +32,13 @@ 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.
|
|
35
|
+
Installer(MSatInstaller, "5.6.10", {}),
|
|
36
|
+
Installer(CVC5Installer, "1.1.2", {}),
|
|
36
37
|
Installer(CVC4Installer, "1.7-prerelease",
|
|
37
38
|
{"git_version" : "391ab9df6c3fd9a3771864900c1718534c1e4666"}),
|
|
38
|
-
Installer(Z3Installer, "4.
|
|
39
|
-
Installer(YicesInstaller, "2.6.
|
|
40
|
-
|
|
41
|
-
Installer(BtorInstaller, "3.2.1", {}),
|
|
39
|
+
Installer(Z3Installer, "4.13.0", {}),
|
|
40
|
+
Installer(YicesInstaller, "2.6.4", {"yices_api_version": "1.1.5"}),
|
|
41
|
+
Installer(BtorInstaller, "3.2.3", {}),
|
|
42
42
|
Installer(PicoSATInstaller, "965",
|
|
43
43
|
{"pypicosat_minor_version" : "1708010052"}),
|
|
44
44
|
Installer(CuddInstaller, "2.0.3",
|
|
@@ -56,7 +56,7 @@ def get_requested_solvers():
|
|
|
56
56
|
keys = requested_solvers_str.split(",")
|
|
57
57
|
requested_solvers = [x.lower().strip() for x in keys]
|
|
58
58
|
if "all" in requested_solvers:
|
|
59
|
-
requested_solvers = [x.InstallerClass.SOLVER for x in INSTALLERS]
|
|
59
|
+
requested_solvers = [x.InstallerClass.SOLVER for x in INSTALLERS if x != "cvc4"]
|
|
60
60
|
return requested_solvers
|
|
61
61
|
|
|
62
62
|
|
|
@@ -206,7 +206,7 @@ def main():
|
|
|
206
206
|
all_solvers = options.all_solvers
|
|
207
207
|
for i in INSTALLERS:
|
|
208
208
|
name = i.InstallerClass.SOLVER
|
|
209
|
-
if all_solvers or getattr(options, name):
|
|
209
|
+
if (all_solvers and name != "cvc4") or getattr(options, name):
|
|
210
210
|
solvers_to_install.append(i)
|
|
211
211
|
|
|
212
212
|
# Env variable controlling the solvers to be installed or checked
|
|
@@ -14,11 +14,12 @@
|
|
|
14
14
|
|
|
15
15
|
from pysmt.cmd.installers.msat import MSatInstaller
|
|
16
16
|
from pysmt.cmd.installers.z3 import Z3Installer
|
|
17
|
-
from pysmt.cmd.installers.
|
|
17
|
+
from pysmt.cmd.installers.cvcfive import CVC5Installer
|
|
18
|
+
from pysmt.cmd.installers.cvcfour import CVC4Installer
|
|
18
19
|
from pysmt.cmd.installers.yices import YicesInstaller
|
|
19
20
|
from pysmt.cmd.installers.btor import BtorInstaller
|
|
20
21
|
from pysmt.cmd.installers.pico import PicoSATInstaller
|
|
21
22
|
from pysmt.cmd.installers.bdd import CuddInstaller
|
|
22
23
|
|
|
23
|
-
assert MSatInstaller and Z3Installer and
|
|
24
|
-
assert BtorInstaller and PicoSATInstaller and CuddInstaller
|
|
24
|
+
assert MSatInstaller and Z3Installer and CVC5Installer and YicesInstaller
|
|
25
|
+
assert BtorInstaller and PicoSATInstaller and CuddInstaller and CVC4Installer
|
|
@@ -22,8 +22,7 @@ import subprocess
|
|
|
22
22
|
import urllib.request
|
|
23
23
|
|
|
24
24
|
from contextlib import contextmanager
|
|
25
|
-
from
|
|
26
|
-
from distutils.dist import Distribution
|
|
25
|
+
from setuptools import Distribution
|
|
27
26
|
|
|
28
27
|
from urllib.error import HTTPError, URLError
|
|
29
28
|
|
|
@@ -99,7 +98,7 @@ class SolverInstaller(object):
|
|
|
99
98
|
|
|
100
99
|
def download(self):
|
|
101
100
|
"""Downloads the archive from one of the mirrors"""
|
|
102
|
-
if not os.path.exists(self.archive_path):
|
|
101
|
+
if self.archive_path and not os.path.exists(self.archive_path):
|
|
103
102
|
for turn in range(self.trials_404):
|
|
104
103
|
for i, link in enumerate(self.download_links()):
|
|
105
104
|
try:
|
|
@@ -116,15 +115,16 @@ class SolverInstaller(object):
|
|
|
116
115
|
|
|
117
116
|
def unpack(self):
|
|
118
117
|
"""Unpacks the archive"""
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
118
|
+
if self.archive_path:
|
|
119
|
+
path = self.archive_path
|
|
120
|
+
if path.endswith(".zip"):
|
|
121
|
+
SolverInstaller.unzip(path, directory=self.base_dir)
|
|
122
|
+
elif path.endswith(".tar.bz2"):
|
|
123
|
+
SolverInstaller.untar(path, directory=self.base_dir, mode='r:bz2')
|
|
124
|
+
elif path.endswith(".tar.gz"):
|
|
125
|
+
SolverInstaller.untar(path, directory=self.base_dir)
|
|
126
|
+
else:
|
|
127
|
+
raise ValueError("Unsupported archive for extraction: %s" % path)
|
|
128
128
|
|
|
129
129
|
def compile(self):
|
|
130
130
|
"""Performs the compilation if needed"""
|
|
@@ -304,14 +304,14 @@ class SolverInstaller(object):
|
|
|
304
304
|
command = None
|
|
305
305
|
for alt in alternatives:
|
|
306
306
|
name = command_tplate % alt
|
|
307
|
-
command =
|
|
307
|
+
command = shutil.which(name)
|
|
308
308
|
if command is not None:
|
|
309
309
|
break
|
|
310
310
|
return command
|
|
311
311
|
|
|
312
312
|
|
|
313
313
|
def package_install_site(name='', user=False, plat_specific=False):
|
|
314
|
-
"""pip-inspired
|
|
314
|
+
"""pip-inspired method for fetching the
|
|
315
315
|
default install location (site-packages path).
|
|
316
316
|
|
|
317
317
|
Returns virtual environment or system site-packages, unless
|
|
@@ -45,8 +45,8 @@ class CuddInstaller(SolverInstaller):
|
|
|
45
45
|
print("WARNING: the BDD solver does not work with Swig4 < 4.0.2. Fallback to Swig3")
|
|
46
46
|
swig = "swig3.0" # This is the Ubuntu naming of the executable
|
|
47
47
|
|
|
48
|
-
import
|
|
49
|
-
PYTHON_INCLUDE_DIR = sysconfig.
|
|
48
|
+
import sysconfig
|
|
49
|
+
PYTHON_INCLUDE_DIR = sysconfig.get_path("include")
|
|
50
50
|
SolverInstaller.run("make -C %s -f %s PYTHON_INCL=-I%s SWIG=%s" %
|
|
51
51
|
(self.extract_path, makefile, PYTHON_INCLUDE_DIR, swig))
|
|
52
52
|
|
|
@@ -44,10 +44,11 @@ class BtorInstaller(SolverInstaller):
|
|
|
44
44
|
# path into Boolector's CMake because CMake can get confused
|
|
45
45
|
# if multiple interpreters are available, especially python 2
|
|
46
46
|
# vs python 3.
|
|
47
|
-
import
|
|
47
|
+
import sysconfig
|
|
48
48
|
import sys
|
|
49
49
|
PYTHON_LIBRARY = os.environ.get('PYSMT_PYTHON_LIBDIR')
|
|
50
|
-
PYTHON_INCLUDE_DIR = sysconfig.
|
|
50
|
+
PYTHON_INCLUDE_DIR = sysconfig.get_path("include")
|
|
51
|
+
|
|
51
52
|
PYTHON_EXECUTABLE = sys.executable
|
|
52
53
|
CMAKE_OPTS = ' -DPYTHON_INCLUDE_DIR=' + PYTHON_INCLUDE_DIR
|
|
53
54
|
CMAKE_OPTS += ' -DPYTHON_EXECUTABLE=' + PYTHON_EXECUTABLE
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Copyright 2014 Andrea Micheli and Marco Gario
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
from __future__ import absolute_import
|
|
15
|
+
|
|
16
|
+
import os
|
|
17
|
+
import sys
|
|
18
|
+
import multiprocessing
|
|
19
|
+
|
|
20
|
+
from pysmt.cmd.installers.base import SolverInstaller
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class CVC5Installer(SolverInstaller):
|
|
24
|
+
|
|
25
|
+
SOLVER = "cvc5"
|
|
26
|
+
|
|
27
|
+
def __init__(self, install_dir, bindings_dir, solver_version,
|
|
28
|
+
mirror_link=None, git_tag='master'):
|
|
29
|
+
SolverInstaller.__init__(self, install_dir=install_dir,
|
|
30
|
+
bindings_dir=bindings_dir,
|
|
31
|
+
solver_version=solver_version,
|
|
32
|
+
mirror_link=mirror_link)
|
|
33
|
+
|
|
34
|
+
def move(self):
|
|
35
|
+
pass
|
|
36
|
+
|
|
37
|
+
def compile(self):
|
|
38
|
+
print(self.bindings_dir)
|
|
39
|
+
SolverInstaller.run_python("-m pip install --upgrade --target=%s cvc5==%s" % (self.bindings_dir, self.solver_version))
|
|
40
|
+
|
|
41
|
+
def get_installed_version(self):
|
|
42
|
+
return self.get_installed_version_script(self.bindings_dir, "cvc5")
|
PySMT-0.9.1.dev166/pysmt/cmd/installers/cvc4.py → PySMT-0.9.6/pysmt/cmd/installers/cvcfour.py
RENAMED
|
@@ -58,9 +58,9 @@ class CVC4Installer(SolverInstaller):
|
|
|
58
58
|
|
|
59
59
|
# Inject Python library and include paths into CMake because CVC4 search
|
|
60
60
|
# system can be fooled in some systems
|
|
61
|
-
import
|
|
61
|
+
import sysconfig
|
|
62
62
|
PYTHON_LIBRARY = os.environ.get('PYSMT_PYTHON_LIBDIR')
|
|
63
|
-
PYTHON_INCLUDE_DIR = sysconfig.
|
|
63
|
+
PYTHON_INCLUDE_DIR = sysconfig.get_path("include")
|
|
64
64
|
PYTHON_EXECUTABLE = sys.executable
|
|
65
65
|
|
|
66
66
|
CMAKE_OPTS = '-DPYTHON_INCLUDE_DIR=' + PYTHON_INCLUDE_DIR
|
|
@@ -26,21 +26,24 @@ class MSatInstaller(SolverInstaller):
|
|
|
26
26
|
mirror_link=None):
|
|
27
27
|
|
|
28
28
|
# Getting the right archive name
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
29
|
+
archive_name_template = "mathsat-{version}-{os}-{arch}.{ext}"
|
|
30
|
+
format = {
|
|
31
|
+
"version": solver_version,
|
|
32
|
+
"os" : self.os_name,
|
|
33
|
+
"arch": self.architecture,
|
|
34
|
+
"ext": "tar.gz"
|
|
35
|
+
}
|
|
36
|
+
if self.os_name == "windows":
|
|
37
|
+
format["ext"] = "zip"
|
|
38
|
+
format["arch"] = "msvc"
|
|
39
|
+
format["os"] = "win64" if self.architecture == "x86_64" else "win32"
|
|
40
|
+
elif self.os_name == "darwin":
|
|
41
|
+
# Since version 5.6.7 the architecture is not included in the
|
|
42
|
+
# pkg name for the OSX release as it is considered a "univeral binary"
|
|
43
|
+
archive_name_template = "mathsat-{version}-{os}.{ext}"
|
|
44
|
+
format["os"] = "osx"
|
|
45
|
+
|
|
46
|
+
archive_name = archive_name_template.format(**format)
|
|
44
47
|
|
|
45
48
|
native_link = "http://mathsat.fbk.eu/download.php?file={archive_name}"
|
|
46
49
|
|
|
@@ -100,10 +103,10 @@ class MSatInstaller(SolverInstaller):
|
|
|
100
103
|
if f.endswith(".so") or f.endswith(".dll") or f.endswith(".dylib"):
|
|
101
104
|
SolverInstaller.mv(os.path.join(libdir, f), self.bindings_dir)
|
|
102
105
|
|
|
103
|
-
# Fix issue in MathSAT 5.
|
|
106
|
+
# Fix issue in MathSAT 5.6.10 linking to incorrect directory on OSX
|
|
104
107
|
if self.os_name == "darwin":
|
|
105
108
|
soname = glob.glob(self.bindings_dir + "/_mathsat*.so")[0]
|
|
106
|
-
old_path = "/Users/
|
|
109
|
+
old_path = "/Users/alb/src/release/build/libmathsat.dylib"
|
|
107
110
|
new_path = "%s/libmathsat.dylib" % self.bindings_dir
|
|
108
111
|
SolverInstaller.run("install_name_tool -change %s %s %s" %
|
|
109
112
|
(old_path, new_path, soname))
|
|
@@ -23,7 +23,7 @@ class YicesInstaller(SolverInstaller):
|
|
|
23
23
|
SOLVER = "yices"
|
|
24
24
|
|
|
25
25
|
def __init__(self, install_dir, bindings_dir, solver_version,
|
|
26
|
-
mirror_link=None,
|
|
26
|
+
mirror_link=None, yices_api_version=None):
|
|
27
27
|
|
|
28
28
|
archive_name = "Yices-%s.tar.gz" % (solver_version)
|
|
29
29
|
native_link = "https://github.com/SRI-CSL/yices2/archive/{archive_name}"
|
|
@@ -34,29 +34,9 @@ class YicesInstaller(SolverInstaller):
|
|
|
34
34
|
native_link=native_link,
|
|
35
35
|
mirror_link=mirror_link)
|
|
36
36
|
|
|
37
|
+
self.yices_api_version = yices_api_version
|
|
37
38
|
self.extract_path = os.path.join(self.base_dir, "yices2-Yices-%s" % self.solver_version)
|
|
38
|
-
self.yices_path = os.path.join(self.
|
|
39
|
-
self.yicespy_git_version = yicespy_version
|
|
40
|
-
|
|
41
|
-
def install_yicespy(self):
|
|
42
|
-
yicespy_git_version = self.yicespy_git_version
|
|
43
|
-
yicespy_base_name = "yicespy"
|
|
44
|
-
yicespy_archive_name = "%s.tar.gz" % yicespy_base_name
|
|
45
|
-
yicespy_archive = os.path.join(self.base_dir, yicespy_archive_name)
|
|
46
|
-
yicespy_dir_path = os.path.join(self.base_dir,
|
|
47
|
-
yicespy_base_name + "-" + yicespy_git_version)
|
|
48
|
-
|
|
49
|
-
yicespy_download_link = "https://codeload.github.com/pysmt/yicespy/tar.gz/%s" % (yicespy_git_version)
|
|
50
|
-
SolverInstaller.do_download(yicespy_download_link, yicespy_archive)
|
|
51
|
-
|
|
52
|
-
SolverInstaller.clean_dir(yicespy_dir_path)
|
|
53
|
-
|
|
54
|
-
SolverInstaller.untar(yicespy_archive, self.base_dir)
|
|
55
|
-
# Build yicespy
|
|
56
|
-
SolverInstaller.run_python("setup.py --yices-dir=%s -- build_ext bdist_wheel --dist-dir=%s " % (self.yices_path, self.base_dir),
|
|
57
|
-
directory=yicespy_dir_path)
|
|
58
|
-
wheel_file = glob.glob(os.path.join(self.base_dir, "yicespy") + "*.whl")[0]
|
|
59
|
-
SolverInstaller.unzip(wheel_file, self.bindings_dir)
|
|
39
|
+
self.yices_path = os.path.join(self.base_dir, "yices_bin")
|
|
60
40
|
|
|
61
41
|
def compile(self):
|
|
62
42
|
# Prepare an empty folder for installing yices
|
|
@@ -69,8 +49,21 @@ class YicesInstaller(SolverInstaller):
|
|
|
69
49
|
SolverInstaller.run("make", directory=self.extract_path)
|
|
70
50
|
SolverInstaller.run("make install", directory=self.extract_path)
|
|
71
51
|
|
|
72
|
-
self.
|
|
73
|
-
|
|
52
|
+
if self.yices_api_version is None:
|
|
53
|
+
SolverInstaller.run_python("-m pip install --upgrade --target=%s yices" % self.bindings_dir)
|
|
54
|
+
else:
|
|
55
|
+
SolverInstaller.run_python("-m pip install --upgrade --target=%s yices==%s" % (self.bindings_dir, self.yices_api_version))
|
|
56
|
+
|
|
57
|
+
libdir = os.path.join(self.yices_path, "lib")
|
|
58
|
+
yices_api_file = os.path.join(self.bindings_dir, "yices_api.py")
|
|
59
|
+
with open(yices_api_file, 'r') as f:
|
|
60
|
+
lines = f.readlines()
|
|
61
|
+
if "sys.stderr.write" in lines[215]:
|
|
62
|
+
lines.pop(215)
|
|
63
|
+
if "else" in lines[226]:
|
|
64
|
+
lines.insert(226, " if _loadYicesFromPath('%s', libyicespath):\n return\n" % libdir)
|
|
65
|
+
with open(yices_api_file, 'w') as f:
|
|
66
|
+
f.write("".join(lines))
|
|
74
67
|
|
|
75
68
|
def get_installed_version(self):
|
|
76
69
|
return self.get_installed_version_script(self.bindings_dir, "yices")
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Copyright 2014 Andrea Micheli and Marco Gario
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
from __future__ import absolute_import
|
|
15
|
+
|
|
16
|
+
import os
|
|
17
|
+
import glob
|
|
18
|
+
|
|
19
|
+
from pysmt.cmd.installers.base import SolverInstaller
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class Z3Installer(SolverInstaller):
|
|
23
|
+
|
|
24
|
+
SOLVER = "z3"
|
|
25
|
+
|
|
26
|
+
def __init__(self, install_dir, bindings_dir, solver_version,
|
|
27
|
+
mirror_link=None):
|
|
28
|
+
|
|
29
|
+
SolverInstaller.__init__(self, install_dir=install_dir,
|
|
30
|
+
bindings_dir=bindings_dir,
|
|
31
|
+
solver_version=solver_version,
|
|
32
|
+
mirror_link=mirror_link)
|
|
33
|
+
|
|
34
|
+
def compile(self):
|
|
35
|
+
SolverInstaller.run_python("-m pip install --upgrade --target=%s z3-solver==%s" % (self.bindings_dir, self.solver_version))
|
|
36
|
+
|
|
37
|
+
def get_installed_version(self):
|
|
38
|
+
return self.get_installed_version_script(self.bindings_dir, "z3")
|
|
@@ -32,7 +32,7 @@ from pysmt.smtlib.commands import CHECK_SAT, GET_VALUE
|
|
|
32
32
|
welcome_msg = \
|
|
33
33
|
"""Welcome to pySMT!!!
|
|
34
34
|
|
|
35
|
-
You are within a Python shell
|
|
35
|
+
You are within a Python shell enhanced with pySMT functionalities.
|
|
36
36
|
|
|
37
37
|
First time here? Try:
|
|
38
38
|
|