PySMT 0.9.7.dev426__tar.gz → 0.9.7.dev431__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 (164) hide show
  1. {pysmt-0.9.7.dev426/PySMT.egg-info → pysmt-0.9.7.dev431}/PKG-INFO +1 -1
  2. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431/PySMT.egg-info}/PKG-INFO +1 -1
  3. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/__init__.py +1 -1
  4. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/solvers/msat.py +1 -6
  5. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_regressions.py +34 -0
  6. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/LICENSE +0 -0
  7. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/MANIFEST.in +0 -0
  8. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/NOTICE +0 -0
  9. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/PySMT.egg-info/SOURCES.txt +0 -0
  10. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/PySMT.egg-info/dependency_links.txt +0 -0
  11. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/PySMT.egg-info/entry_points.txt +0 -0
  12. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/PySMT.egg-info/top_level.txt +0 -0
  13. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/README.rst +0 -0
  14. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/docs/CHANGES.rst +0 -0
  15. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/docs/api_ref.rst +0 -0
  16. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/docs/development.rst +0 -0
  17. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/docs/getting_started.rst +0 -0
  18. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/docs/index.rst +0 -0
  19. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/docs/tutorials/boolean_logic.rst +0 -0
  20. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/docs/tutorials.rst +0 -0
  21. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/__main__.py +0 -0
  22. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/cmd/__init__.py +0 -0
  23. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/cmd/check_version.py +0 -0
  24. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/cmd/install.py +0 -0
  25. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/cmd/installers/__init__.py +0 -0
  26. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/cmd/installers/base.py +0 -0
  27. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/cmd/installers/bdd.py +0 -0
  28. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/cmd/installers/btor.py +0 -0
  29. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/cmd/installers/cvcfive.py +0 -0
  30. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/cmd/installers/cvcfour.py +0 -0
  31. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/cmd/installers/msat.py +0 -0
  32. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/cmd/installers/optimsat.py +0 -0
  33. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/cmd/installers/pico.py +0 -0
  34. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/cmd/installers/yices.py +0 -0
  35. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/cmd/installers/z3.py +0 -0
  36. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/cmd/shell.py +0 -0
  37. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/configuration.py +0 -0
  38. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/constants.py +0 -0
  39. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/decorators.py +0 -0
  40. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/environment.py +0 -0
  41. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/exceptions.py +0 -0
  42. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/factory.py +0 -0
  43. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/fnode.py +0 -0
  44. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/formula.py +0 -0
  45. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/logics.py +0 -0
  46. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/operators.py +0 -0
  47. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/optimization/__init__.py +0 -0
  48. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/optimization/goal.py +0 -0
  49. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/optimization/msat.py +0 -0
  50. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/optimization/optimizer.py +0 -0
  51. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/optimization/optimsat.py +0 -0
  52. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/optimization/yices.py +0 -0
  53. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/optimization/z3.py +0 -0
  54. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/oracles.py +0 -0
  55. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/parsing.py +0 -0
  56. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/printers.py +0 -0
  57. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/rewritings.py +0 -0
  58. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/shortcuts.py +0 -0
  59. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/simplifier.py +0 -0
  60. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/smtlib/__init__.py +0 -0
  61. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/smtlib/annotations.py +0 -0
  62. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/smtlib/commands.py +0 -0
  63. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/smtlib/parser/__init__.py +0 -0
  64. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/smtlib/parser/parser.py +0 -0
  65. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/smtlib/printers.py +0 -0
  66. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/smtlib/script.py +0 -0
  67. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/smtlib/solver.py +0 -0
  68. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/smtlib/utils.py +0 -0
  69. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/solvers/__init__.py +0 -0
  70. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/solvers/bdd.py +0 -0
  71. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/solvers/btor.py +0 -0
  72. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/solvers/cvcfive.py +0 -0
  73. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/solvers/cvcfour.py +0 -0
  74. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/solvers/dynmsat.py +0 -0
  75. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/solvers/eager.py +0 -0
  76. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/solvers/interpolation.py +0 -0
  77. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/solvers/options.py +0 -0
  78. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/solvers/pico.py +0 -0
  79. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/solvers/portfolio.py +0 -0
  80. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/solvers/qelim.py +0 -0
  81. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/solvers/smtlib.py +0 -0
  82. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/solvers/solver.py +0 -0
  83. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/solvers/yices.py +0 -0
  84. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/solvers/z3.py +0 -0
  85. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/substituter.py +0 -0
  86. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/__init__.py +0 -0
  87. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/configs/config1.ini +0 -0
  88. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/configs/config_bad.ini +0 -0
  89. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/examples.py +0 -0
  90. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/omt_examples.py +0 -0
  91. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/optimization_utils.py +0 -0
  92. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/__init__.py +0 -0
  93. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/parser_utils.py +0 -0
  94. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_annotations.py +0 -0
  95. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_fuzzed.py +0 -0
  96. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_generic_wrapper.py +0 -0
  97. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_griggio.py +0 -0
  98. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_model_validation.py +0 -0
  99. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_omt_lib_solver.py +0 -0
  100. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_parser_examples.py +0 -0
  101. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_parser_extensibility.py +0 -0
  102. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_parser_lra.py +0 -0
  103. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_parser_omt.py +0 -0
  104. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_parser_qf_arrays.py +0 -0
  105. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_parser_qf_lia.py +0 -0
  106. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_parser_qf_lira.py +0 -0
  107. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_parser_qf_lra.py +0 -0
  108. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_parser_qf_nia.py +0 -0
  109. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_parser_qf_nra.py +0 -0
  110. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_parser_qf_uf.py +0 -0
  111. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_parser_qf_ufbv.py +0 -0
  112. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_parser_type_error.py +0 -0
  113. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/smtlib/test_smtlibscript.py +0 -0
  114. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_array.py +0 -0
  115. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_back.py +0 -0
  116. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_bdd.py +0 -0
  117. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_bv.py +0 -0
  118. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_bv_simplification.py +0 -0
  119. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_cnf.py +0 -0
  120. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_configuration.py +0 -0
  121. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_constants.py +0 -0
  122. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_cvc_quantifiers.py +0 -0
  123. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_dwf.py +0 -0
  124. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_eager_model.py +0 -0
  125. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_env.py +0 -0
  126. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_euf.py +0 -0
  127. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_formula.py +0 -0
  128. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_hr_parsing.py +0 -0
  129. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_imports.py +0 -0
  130. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_int.py +0 -0
  131. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_interpolation.py +0 -0
  132. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_lira.py +0 -0
  133. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_logics.py +0 -0
  134. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_models.py +0 -0
  135. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_native_qe.py +0 -0
  136. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_nia.py +0 -0
  137. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_nlira.py +0 -0
  138. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_optimization.py +0 -0
  139. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_optimizing.py +0 -0
  140. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_oracles.py +0 -0
  141. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_portfolio.py +0 -0
  142. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_printing.py +0 -0
  143. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_qe.py +0 -0
  144. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_rewritings.py +0 -0
  145. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_shannon_expansion.py +0 -0
  146. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_simplify.py +0 -0
  147. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_size.py +0 -0
  148. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_solving.py +0 -0
  149. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_sorts.py +0 -0
  150. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_string.py +0 -0
  151. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_typechecker.py +0 -0
  152. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_unsat_cores.py +0 -0
  153. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_walker_ext.py +0 -0
  154. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/test/test_walkers.py +0 -0
  155. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/type_checker.py +0 -0
  156. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/typing.py +0 -0
  157. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/utils.py +0 -0
  158. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/walkers/__init__.py +0 -0
  159. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/walkers/dag.py +0 -0
  160. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/walkers/generic.py +0 -0
  161. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/walkers/identitydag.py +0 -0
  162. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/pysmt/walkers/tree.py +0 -0
  163. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/setup.cfg +0 -0
  164. {pysmt-0.9.7.dev426 → pysmt-0.9.7.dev431}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PySMT
3
- Version: 0.9.7.dev426
3
+ Version: 0.9.7.dev431
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PySMT
3
- Version: 0.9.7.dev426
3
+ Version: 0.9.7.dev431
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
@@ -19,7 +19,7 @@
19
19
  from typing import Tuple, Union
20
20
 
21
21
 
22
- VERSION: Union[Tuple[int, int, int], Tuple[int, int, int, str, int]] = (0, 9, 7, "dev", 426)
22
+ VERSION: Union[Tuple[int, int, int], Tuple[int, int, int, str, int]] = (0, 9, 7, "dev", 431)
23
23
 
24
24
  # Try to provide human-readable version of latest commit for dev versions
25
25
  # E.g. v0.5.1-4-g49a49f2-wip
@@ -322,7 +322,7 @@ class MathSAT5Solver(IncrementalTrackingSolver, UnsatCoreSolver, SmtLibBasicSolv
322
322
  def all_sat(self, important, callback):
323
323
  self.push()
324
324
  self._msat_lib.msat_all_sat(self.msat_env(),
325
- [self._var2term(x) for x in important],
325
+ [self.converter.convert(x) for x in important],
326
326
  callback)
327
327
  self.pop()
328
328
 
@@ -336,11 +336,6 @@ class MathSAT5Solver(IncrementalTrackingSolver, UnsatCoreSolver, SmtLibBasicSolv
336
336
  for _ in range(levels):
337
337
  self._msat_lib.msat_pop_backtrack_point(self.msat_env())
338
338
 
339
- def _var2term(self, var):
340
- decl = self._msat_lib.msat_find_decl(self.msat_env(), var.symbol_name())
341
- titem = self._msat_lib.msat_make_term(self.msat_env(), decl, [])
342
- return titem
343
-
344
339
  def set_preferred_var(self, var, val=None):
345
340
  tvar = self.converter.convert(var)
346
341
  mval = self._msat_lib.MSAT_UNDEF
@@ -574,6 +574,40 @@ class TestRegressions(TestCase):
574
574
  s.add_assertion(f)
575
575
  self.assertFalse(s.solve())
576
576
 
577
+ @skipIfSolverNotAvailable("msat")
578
+ def test_msat_all_sat_theory_atoms(self):
579
+ # Regression test: MathSAT5Solver.all_sat must accept arbitrary
580
+ # SMT-atoms as "important" terms, not only Boolean symbols.
581
+ # Previously the "important" terms were converted with a helper
582
+ # (_var2term) that assumed each term was a declared symbol, so
583
+ # passing a theory atom raised an AssertionError.
584
+ x = Symbol("x", INT)
585
+ f = And(LE(Int(0), x), LE(x, Int(5)))
586
+ atom = LE(x, Int(2)) # a theory atom, not a Boolean symbol
587
+
588
+ result = []
589
+
590
+ def callback(model, converter, res):
591
+ res.append(And(converter.back(v) for v in model))
592
+ return 1 # continue enumeration
593
+
594
+ with Solver(name="msat",
595
+ solver_options={
596
+ "dpll.allsat_minimize_model": "false",
597
+ "dpll.allsat_allow_duplicates": "false",
598
+ "preprocessor.toplevel_propagation": "false",
599
+ "preprocessor.simplification": "0",
600
+ }) as msat:
601
+ msat.add_assertion(f)
602
+ # This call used to raise AssertionError on a theory atom.
603
+ msat.all_sat([atom], lambda m: callback(m, msat.converter, result))
604
+
605
+ # The atom can be both true (x in [0,2]) and false (x in [3,5]),
606
+ # so we expect exactly the two disjoint total assignments.
607
+ self.assertEqual(len(result), 2, result)
608
+ self.assertIn(atom, result)
609
+ self.assertIn(Not(atom), result)
610
+
577
611
 
578
612
  if __name__ == "__main__":
579
613
  main()
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes