PySMT 0.9.7.dev461__tar.gz → 0.9.7.dev464__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.dev461/PySMT.egg-info → pysmt-0.9.7.dev464}/PKG-INFO +1 -1
  2. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464/PySMT.egg-info}/PKG-INFO +1 -1
  3. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/__init__.py +1 -1
  4. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/optimization/optimizer.py +5 -2
  5. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/optimization/z3.py +4 -4
  6. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/LICENSE +0 -0
  7. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/MANIFEST.in +0 -0
  8. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/NOTICE +0 -0
  9. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/PySMT.egg-info/SOURCES.txt +0 -0
  10. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/PySMT.egg-info/dependency_links.txt +0 -0
  11. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/PySMT.egg-info/entry_points.txt +0 -0
  12. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/PySMT.egg-info/top_level.txt +0 -0
  13. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/README.rst +0 -0
  14. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/docs/CHANGES.rst +0 -0
  15. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/docs/api_ref.rst +0 -0
  16. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/docs/development.rst +0 -0
  17. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/docs/getting_started.rst +0 -0
  18. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/docs/index.rst +0 -0
  19. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/docs/tutorials/boolean_logic.rst +0 -0
  20. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/docs/tutorials.rst +0 -0
  21. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/__main__.py +0 -0
  22. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/cmd/__init__.py +0 -0
  23. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/cmd/check_version.py +0 -0
  24. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/cmd/install.py +0 -0
  25. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/cmd/installers/__init__.py +0 -0
  26. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/cmd/installers/base.py +0 -0
  27. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/cmd/installers/bdd.py +0 -0
  28. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/cmd/installers/btor.py +0 -0
  29. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/cmd/installers/cvcfive.py +0 -0
  30. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/cmd/installers/cvcfour.py +0 -0
  31. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/cmd/installers/msat.py +0 -0
  32. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/cmd/installers/optimsat.py +0 -0
  33. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/cmd/installers/pico.py +0 -0
  34. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/cmd/installers/yices.py +0 -0
  35. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/cmd/installers/z3.py +0 -0
  36. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/cmd/shell.py +0 -0
  37. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/configuration.py +0 -0
  38. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/constants.py +0 -0
  39. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/decorators.py +0 -0
  40. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/environment.py +0 -0
  41. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/exceptions.py +0 -0
  42. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/factory.py +0 -0
  43. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/fnode.py +0 -0
  44. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/formula.py +0 -0
  45. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/logics.py +0 -0
  46. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/operators.py +0 -0
  47. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/optimization/__init__.py +0 -0
  48. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/optimization/goal.py +0 -0
  49. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/optimization/msat.py +0 -0
  50. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/optimization/optimsat.py +0 -0
  51. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/optimization/yices.py +0 -0
  52. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/oracles.py +0 -0
  53. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/parsing.py +0 -0
  54. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/printers.py +0 -0
  55. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/rewritings.py +0 -0
  56. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/shortcuts.py +0 -0
  57. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/simplifier.py +0 -0
  58. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/smtlib/__init__.py +0 -0
  59. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/smtlib/annotations.py +0 -0
  60. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/smtlib/commands.py +0 -0
  61. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/smtlib/parser/__init__.py +0 -0
  62. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/smtlib/parser/parser.py +0 -0
  63. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/smtlib/printers.py +0 -0
  64. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/smtlib/script.py +0 -0
  65. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/smtlib/solver.py +0 -0
  66. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/smtlib/utils.py +0 -0
  67. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/solvers/__init__.py +0 -0
  68. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/solvers/bdd.py +0 -0
  69. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/solvers/btor.py +0 -0
  70. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/solvers/cvcfive.py +0 -0
  71. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/solvers/cvcfour.py +0 -0
  72. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/solvers/dynmsat.py +0 -0
  73. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/solvers/eager.py +0 -0
  74. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/solvers/interpolation.py +0 -0
  75. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/solvers/msat.py +0 -0
  76. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/solvers/options.py +0 -0
  77. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/solvers/pico.py +0 -0
  78. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/solvers/portfolio.py +0 -0
  79. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/solvers/qelim.py +0 -0
  80. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/solvers/smtlib.py +0 -0
  81. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/solvers/solver.py +0 -0
  82. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/solvers/yices.py +0 -0
  83. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/solvers/z3.py +0 -0
  84. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/substituter.py +0 -0
  85. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/__init__.py +0 -0
  86. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/configs/config1.ini +0 -0
  87. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/configs/config_bad.ini +0 -0
  88. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/examples.py +0 -0
  89. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/omt_examples.py +0 -0
  90. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/optimization_utils.py +0 -0
  91. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/__init__.py +0 -0
  92. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/parser_utils.py +0 -0
  93. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_annotations.py +0 -0
  94. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_fuzzed.py +0 -0
  95. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_generic_wrapper.py +0 -0
  96. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_griggio.py +0 -0
  97. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_model_validation.py +0 -0
  98. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_omt_lib_solver.py +0 -0
  99. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_parser_examples.py +0 -0
  100. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_parser_extensibility.py +0 -0
  101. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_parser_lra.py +0 -0
  102. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_parser_omt.py +0 -0
  103. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_parser_qf_arrays.py +0 -0
  104. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_parser_qf_lia.py +0 -0
  105. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_parser_qf_lira.py +0 -0
  106. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_parser_qf_lra.py +0 -0
  107. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_parser_qf_nia.py +0 -0
  108. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_parser_qf_nra.py +0 -0
  109. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_parser_qf_uf.py +0 -0
  110. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_parser_qf_ufbv.py +0 -0
  111. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_parser_type_error.py +0 -0
  112. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/smtlib/test_smtlibscript.py +0 -0
  113. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_array.py +0 -0
  114. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_back.py +0 -0
  115. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_bdd.py +0 -0
  116. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_bv.py +0 -0
  117. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_bv_simplification.py +0 -0
  118. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_cnf.py +0 -0
  119. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_configuration.py +0 -0
  120. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_constants.py +0 -0
  121. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_cvc_quantifiers.py +0 -0
  122. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_dwf.py +0 -0
  123. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_eager_model.py +0 -0
  124. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_env.py +0 -0
  125. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_euf.py +0 -0
  126. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_formula.py +0 -0
  127. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_hr_parsing.py +0 -0
  128. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_imports.py +0 -0
  129. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_int.py +0 -0
  130. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_interpolation.py +0 -0
  131. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_lira.py +0 -0
  132. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_logics.py +0 -0
  133. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_models.py +0 -0
  134. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_native_qe.py +0 -0
  135. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_nia.py +0 -0
  136. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_nlira.py +0 -0
  137. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_optimization.py +0 -0
  138. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_optimizing.py +0 -0
  139. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_oracles.py +0 -0
  140. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_portfolio.py +0 -0
  141. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_printing.py +0 -0
  142. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_qe.py +0 -0
  143. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_regressions.py +0 -0
  144. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_rewritings.py +0 -0
  145. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_shannon_expansion.py +0 -0
  146. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_simplify.py +0 -0
  147. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_size.py +0 -0
  148. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_solving.py +0 -0
  149. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_sorts.py +0 -0
  150. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_string.py +0 -0
  151. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_typechecker.py +0 -0
  152. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_unsat_cores.py +0 -0
  153. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_walker_ext.py +0 -0
  154. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/test/test_walkers.py +0 -0
  155. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/type_checker.py +0 -0
  156. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/typing.py +0 -0
  157. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/utils.py +0 -0
  158. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/walkers/__init__.py +0 -0
  159. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/walkers/dag.py +0 -0
  160. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/walkers/generic.py +0 -0
  161. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/walkers/identitydag.py +0 -0
  162. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/pysmt/walkers/tree.py +0 -0
  163. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/setup.cfg +0 -0
  164. {pysmt-0.9.7.dev461 → pysmt-0.9.7.dev464}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PySMT
3
- Version: 0.9.7.dev461
3
+ Version: 0.9.7.dev464
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.dev461
3
+ Version: 0.9.7.dev464
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", 461)
22
+ VERSION: Union[Tuple[int, int, int], Tuple[int, int, int, str, int]] = (0, 9, 7, "dev", 464)
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
@@ -16,6 +16,8 @@
16
16
  # limitations under the License.
17
17
  #
18
18
  from fractions import Fraction
19
+
20
+ from pysmt.constants import is_pysmt_integer, is_pysmt_fraction
19
21
  import warnings
20
22
 
21
23
  from pysmt.solvers.solver import Solver
@@ -371,8 +373,9 @@ class OptSearchInterval(OptComparationFunctions):
371
373
  model_value: Union[Fraction, int] = obj_value.bv_signed_value()
372
374
  else:
373
375
  v = obj_value.constant_value()
374
- assert isinstance(v, (int, Fraction))
375
- model_value = v
376
+ # backend-aware: v may be a gmpy2 mpz/mpq, not a python int/Fraction
377
+ assert is_pysmt_integer(v) or is_pysmt_fraction(v)
378
+ model_value = cast(Union[Fraction, int], v)
376
379
  if self._obj.is_minimization_goal():
377
380
  if self._upper is None or self._upper > model_value:
378
381
  self._upper = model_value
@@ -18,7 +18,6 @@
18
18
 
19
19
  from __future__ import absolute_import
20
20
 
21
- from fractions import Fraction
22
21
  from warnings import warn
23
22
 
24
23
  from pysmt.decorators import clear_pending_pop
@@ -63,9 +62,10 @@ class Z3NativeOptimizer(Optimizer, Z3Solver):
63
62
  assert isinstance(goal, MaxSMTGoal)
64
63
  for soft, weight_exp in goal.soft:
65
64
  obj_soft = self.converter.convert(soft)
66
- w: Union[float, int, Fraction, str] = weight_exp.constant_value()
67
- if isinstance(w, Fraction):
68
- w = float(w)
65
+ # str() yields an exact rational numeral ("1/3", "8") for every
66
+ # backend (int/Fraction and gmpy2 mpz/mpq); z3 add_soft parses it,
67
+ # avoiding the precision loss of float() on fractional weights.
68
+ w = str(weight_exp.constant_value())
69
69
  h = self.z3.add_soft(obj_soft, w, "__pysmt_" + str(goal_id))
70
70
  else:
71
71
  term = goal.term()
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes