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.
Files changed (150) hide show
  1. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/MANIFEST.in +2 -0
  2. {PySMT-0.9.1.dev166/PySMT.egg-info → PySMT-0.9.6}/PKG-INFO +2 -2
  3. {PySMT-0.9.1.dev166 → PySMT-0.9.6/PySMT.egg-info}/PKG-INFO +2 -2
  4. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/PySMT.egg-info/SOURCES.txt +7 -3
  5. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/README.rst +5 -5
  6. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/docs/CHANGES.rst +83 -0
  7. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/docs/getting_started.rst +2 -2
  8. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/__init__.py +1 -1
  9. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/check_version.py +7 -5
  10. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/install.py +9 -9
  11. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/installers/__init__.py +4 -3
  12. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/installers/base.py +14 -14
  13. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/installers/bdd.py +2 -2
  14. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/installers/btor.py +3 -2
  15. PySMT-0.9.6/pysmt/cmd/installers/cvcfive.py +42 -0
  16. PySMT-0.9.1.dev166/pysmt/cmd/installers/cvc4.py → PySMT-0.9.6/pysmt/cmd/installers/cvcfour.py +2 -2
  17. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/installers/msat.py +20 -17
  18. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/installers/yices.py +18 -25
  19. PySMT-0.9.6/pysmt/cmd/installers/z3.py +38 -0
  20. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/shell.py +1 -1
  21. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/configuration.py +1 -1
  22. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/constants.py +9 -0
  23. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/decorators.py +1 -1
  24. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/exceptions.py +1 -1
  25. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/factory.py +10 -4
  26. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/fnode.py +3 -10
  27. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/formula.py +11 -14
  28. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/logics.py +63 -43
  29. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/oracles.py +1 -1
  30. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/printers.py +2 -2
  31. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/rewritings.py +1 -1
  32. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/shortcuts.py +1 -1
  33. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/smtlib/parser/__init__.py +26 -5
  34. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/smtlib/parser/parser.py +2 -2
  35. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/smtlib/utils.py +1 -1
  36. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/bdd.py +1 -1
  37. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/btor.py +69 -32
  38. PySMT-0.9.6/pysmt/solvers/cvcfive.py +548 -0
  39. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/interpolation.py +2 -2
  40. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/portfolio.py +3 -1
  41. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/qelim.py +1 -1
  42. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/smtlib.py +2 -2
  43. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/solver.py +2 -2
  44. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/yices.py +130 -113
  45. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/substituter.py +4 -4
  46. PySMT-0.9.6/pysmt/test/configs/config1.ini +12 -0
  47. PySMT-0.9.6/pysmt/test/configs/config_bad.ini +5 -0
  48. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/examples.py +10 -4
  49. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/parser_utils.py +5 -2
  50. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_examples.py +16 -12
  51. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_array.py +16 -7
  52. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_back.py +5 -5
  53. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_bv_simplification.py +4 -2
  54. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_cnf.py +2 -1
  55. PySMT-0.9.1.dev166/pysmt/test/test_cvc4_quantifiers.py → PySMT-0.9.6/pysmt/test/test_cvc_quantifiers.py +7 -7
  56. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_logics.py +7 -2
  57. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_nia.py +10 -10
  58. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_nlira.py +15 -5
  59. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_portfolio.py +11 -11
  60. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_qe.py +2 -2
  61. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_rewritings.py +1 -1
  62. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_simplify.py +2 -2
  63. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_solving.py +18 -17
  64. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/type_checker.py +6 -7
  65. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/setup.py +1 -1
  66. PySMT-0.9.1.dev166/pysmt/cmd/installers/z3.py +0 -85
  67. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/LICENSE +0 -0
  68. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/NOTICE +0 -0
  69. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/PySMT.egg-info/dependency_links.txt +0 -0
  70. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/PySMT.egg-info/entry_points.txt +0 -0
  71. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/PySMT.egg-info/top_level.txt +0 -0
  72. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/docs/api_ref.rst +0 -0
  73. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/docs/development.rst +0 -0
  74. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/docs/index.rst +0 -0
  75. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/docs/tutorials/boolean_logic.rst +0 -0
  76. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/docs/tutorials.rst +0 -0
  77. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/__main__.py +0 -0
  78. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/__init__.py +0 -0
  79. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/cmd/installers/pico.py +0 -0
  80. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/environment.py +0 -0
  81. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/operators.py +0 -0
  82. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/parsing.py +0 -0
  83. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/simplifier.py +0 -0
  84. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/smtlib/__init__.py +0 -0
  85. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/smtlib/annotations.py +0 -0
  86. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/smtlib/commands.py +0 -0
  87. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/smtlib/printers.py +0 -0
  88. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/smtlib/script.py +0 -0
  89. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/smtlib/solver.py +0 -0
  90. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/__init__.py +0 -0
  91. /PySMT-0.9.1.dev166/pysmt/solvers/cvc4.py → /PySMT-0.9.6/pysmt/solvers/cvcfour.py +0 -0
  92. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/eager.py +0 -0
  93. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/msat.py +0 -0
  94. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/options.py +0 -0
  95. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/pico.py +0 -0
  96. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/solvers/z3.py +0 -0
  97. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/__init__.py +0 -0
  98. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/__init__.py +0 -0
  99. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_annotations.py +0 -0
  100. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_fuzzed.py +0 -0
  101. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_generic_wrapper.py +0 -0
  102. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_griggio.py +0 -0
  103. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_model_validation.py +0 -0
  104. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_extensibility.py +0 -0
  105. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_lra.py +0 -0
  106. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_qf_arrays.py +0 -0
  107. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_qf_lia.py +0 -0
  108. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_qf_lira.py +0 -0
  109. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_qf_lra.py +0 -0
  110. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_qf_nia.py +0 -0
  111. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_qf_nra.py +0 -0
  112. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_qf_uf.py +0 -0
  113. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_qf_ufbv.py +0 -0
  114. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_parser_type_error.py +0 -0
  115. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/smtlib/test_smtlibscript.py +0 -0
  116. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_bdd.py +0 -0
  117. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_bv.py +0 -0
  118. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_configuration.py +0 -0
  119. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_constants.py +0 -0
  120. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_dwf.py +0 -0
  121. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_eager_model.py +0 -0
  122. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_env.py +0 -0
  123. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_euf.py +0 -0
  124. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_formula.py +0 -0
  125. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_hr_parsing.py +0 -0
  126. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_imports.py +0 -0
  127. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_int.py +0 -0
  128. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_interpolation.py +0 -0
  129. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_lira.py +0 -0
  130. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_models.py +0 -0
  131. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_native_qe.py +0 -0
  132. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_oracles.py +0 -0
  133. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_printing.py +0 -0
  134. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_regressions.py +0 -0
  135. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_shannon_expansion.py +0 -0
  136. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_size.py +0 -0
  137. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_sorts.py +0 -0
  138. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_string.py +0 -0
  139. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_typechecker.py +0 -0
  140. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_unsat_cores.py +0 -0
  141. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_walker_ext.py +0 -0
  142. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/test/test_walkers.py +0 -0
  143. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/typing.py +0 -0
  144. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/utils.py +0 -0
  145. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/walkers/__init__.py +0 -0
  146. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/walkers/dag.py +0 -0
  147. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/walkers/generic.py +0 -0
  148. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/walkers/identitydag.py +0 -0
  149. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/pysmt/walkers/tree.py +0 -0
  150. {PySMT-0.9.1.dev166 → PySMT-0.9.6}/setup.cfg +0 -0
@@ -1,2 +1,4 @@
1
1
  include LICENSE README.rst
2
2
  recursive-include docs *.rst
3
+ include pysmt/test/configs/*
4
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.0
2
2
  Name: PySMT
3
- Version: 0.9.1.dev166
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
- * CVC4 (http://cvc4.cs.nyu.edu/web/)
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.1.dev166
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
- * CVC4 (http://cvc4.cs.nyu.edu/web/)
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/cvc4.py
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/cvc4.py
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/test_cvc4_quantifiers.py
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(["cvc4",
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
- * CVC4 (http://cvc4.cs.nyu.edu/web/)
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
- # pip install pysmt
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 | z3 | z3 | Yes | Yes |
240
+ | Z3 | z3 | UF, LIA, LRA, BV, AX, NRA, NIA | Yes | z3 | Yes | No |
241
241
  +------------------+-----------+--------------------------------+-------------+------------------------+------------+--------------+
242
- | CVC4 | cvc4 | UF, LIA, LRA, BV, AX, S | Yes | No | No | No |
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
- * CVC4 (http://cvc4.cs.nyu.edu/web/)
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
- CVC4 cvc4
207
+ cvc5 cvc5
208
208
  Yices yices
209
209
  Boolector btor
210
210
  Picosat picosat
@@ -16,7 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- VERSION = (0, 9, 1, "dev", 166)
19
+ VERSION = (0, 9, 6)
20
20
 
21
21
  # Try to provide human-readable version of latest commit for dev versions
22
22
  # E.g. v0.5.1-4-g49a49f2-wip
@@ -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 yicespy
54
- v = yicespy.__dict__['__YICES_VERSION']
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 CVC4Installer, YicesInstaller, BtorInstaller
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.1", {}),
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.8.7", {"osx": "10.14.6"}),
39
- Installer(YicesInstaller, "2.6.2",
40
- {"yicespy_version": "f0768ffeec15ea310f830d10878971c9998454ac"}),
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.cvc4 import CVC4Installer
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 CVC4Installer and YicesInstaller
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 distutils import spawn
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
- 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)
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 = spawn.find_executable(name)
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, distutils-based method for fetching the
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 distutils.sysconfig as sysconfig
49
- PYTHON_INCLUDE_DIR = sysconfig.get_python_inc()
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 distutils.sysconfig as sysconfig
47
+ import sysconfig
48
48
  import sys
49
49
  PYTHON_LIBRARY = os.environ.get('PYSMT_PYTHON_LIBDIR')
50
- PYTHON_INCLUDE_DIR = sysconfig.get_python_inc()
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")
@@ -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 distutils.sysconfig as sysconfig
61
+ import sysconfig
62
62
  PYTHON_LIBRARY = os.environ.get('PYSMT_PYTHON_LIBDIR')
63
- PYTHON_INCLUDE_DIR = sysconfig.get_python_inc()
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
- os_name = self.os_name
30
- arch = self.architecture
31
- ext = "tar.gz"
32
- if os_name == "windows":
33
- ext = "zip"
34
- arch = "msvc"
35
- if self.architecture == "x86_64":
36
- os_name = "win64"
37
- else:
38
- os_name = "win32"
39
- elif os_name == "darwin":
40
- os_name = "darwin-libcxx"
41
-
42
- archive_name = "mathsat-%s-%s-%s.%s" % (solver_version, os_name,
43
- arch, ext)
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.5.1 linking to incorrect directory on OSX
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/griggio/Documents/src/mathsat_release/build/libmathsat.dylib"
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, yicespy_version='HEAD'):
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.bindings_dir, "yices_bin")
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.install_yicespy()
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 enhanched with pySMT functionalities.
35
+ You are within a Python shell enhanced with pySMT functionalities.
36
36
 
37
37
  First time here? Try:
38
38