PySMT 0.9.7.dev346__tar.gz → 0.9.7.dev354__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.dev346/PySMT.egg-info → pysmt-0.9.7.dev354}/PKG-INFO +1 -1
  2. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354/PySMT.egg-info}/PKG-INFO +1 -1
  3. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/__init__.py +1 -1
  4. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/solvers/cvcfive.py +36 -3
  5. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/solvers/z3.py +5 -2
  6. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_logics.py +0 -3
  7. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/LICENSE +0 -0
  8. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/MANIFEST.in +0 -0
  9. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/NOTICE +0 -0
  10. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/PySMT.egg-info/SOURCES.txt +0 -0
  11. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/PySMT.egg-info/dependency_links.txt +0 -0
  12. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/PySMT.egg-info/entry_points.txt +0 -0
  13. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/PySMT.egg-info/top_level.txt +0 -0
  14. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/README.rst +0 -0
  15. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/docs/CHANGES.rst +0 -0
  16. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/docs/api_ref.rst +0 -0
  17. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/docs/development.rst +0 -0
  18. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/docs/getting_started.rst +0 -0
  19. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/docs/index.rst +0 -0
  20. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/docs/tutorials/boolean_logic.rst +0 -0
  21. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/docs/tutorials.rst +0 -0
  22. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/__main__.py +0 -0
  23. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/cmd/__init__.py +0 -0
  24. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/cmd/check_version.py +0 -0
  25. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/cmd/install.py +0 -0
  26. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/cmd/installers/__init__.py +0 -0
  27. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/cmd/installers/base.py +0 -0
  28. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/cmd/installers/bdd.py +0 -0
  29. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/cmd/installers/btor.py +0 -0
  30. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/cmd/installers/cvcfive.py +0 -0
  31. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/cmd/installers/cvcfour.py +0 -0
  32. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/cmd/installers/msat.py +0 -0
  33. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/cmd/installers/optimsat.py +0 -0
  34. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/cmd/installers/pico.py +0 -0
  35. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/cmd/installers/yices.py +0 -0
  36. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/cmd/installers/z3.py +0 -0
  37. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/cmd/shell.py +0 -0
  38. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/configuration.py +0 -0
  39. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/constants.py +0 -0
  40. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/decorators.py +0 -0
  41. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/environment.py +0 -0
  42. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/exceptions.py +0 -0
  43. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/factory.py +0 -0
  44. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/fnode.py +0 -0
  45. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/formula.py +0 -0
  46. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/logics.py +0 -0
  47. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/operators.py +0 -0
  48. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/optimization/__init__.py +0 -0
  49. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/optimization/goal.py +0 -0
  50. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/optimization/msat.py +0 -0
  51. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/optimization/optimizer.py +0 -0
  52. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/optimization/optimsat.py +0 -0
  53. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/optimization/yices.py +0 -0
  54. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/optimization/z3.py +0 -0
  55. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/oracles.py +0 -0
  56. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/parsing.py +0 -0
  57. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/printers.py +0 -0
  58. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/rewritings.py +0 -0
  59. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/shortcuts.py +0 -0
  60. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/simplifier.py +0 -0
  61. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/smtlib/__init__.py +0 -0
  62. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/smtlib/annotations.py +0 -0
  63. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/smtlib/commands.py +0 -0
  64. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/smtlib/parser/__init__.py +0 -0
  65. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/smtlib/parser/parser.py +0 -0
  66. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/smtlib/printers.py +0 -0
  67. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/smtlib/script.py +0 -0
  68. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/smtlib/solver.py +0 -0
  69. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/smtlib/utils.py +0 -0
  70. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/solvers/__init__.py +0 -0
  71. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/solvers/bdd.py +0 -0
  72. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/solvers/btor.py +0 -0
  73. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/solvers/cvcfour.py +0 -0
  74. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/solvers/dynmsat.py +0 -0
  75. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/solvers/eager.py +0 -0
  76. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/solvers/interpolation.py +0 -0
  77. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/solvers/msat.py +0 -0
  78. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/solvers/options.py +0 -0
  79. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/solvers/pico.py +0 -0
  80. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/solvers/portfolio.py +0 -0
  81. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/solvers/qelim.py +0 -0
  82. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/solvers/smtlib.py +0 -0
  83. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/solvers/solver.py +0 -0
  84. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/solvers/yices.py +0 -0
  85. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/substituter.py +0 -0
  86. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/__init__.py +0 -0
  87. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/configs/config1.ini +0 -0
  88. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/configs/config_bad.ini +0 -0
  89. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/examples.py +0 -0
  90. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/omt_examples.py +0 -0
  91. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/optimization_utils.py +0 -0
  92. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/__init__.py +0 -0
  93. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/parser_utils.py +0 -0
  94. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_annotations.py +0 -0
  95. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_fuzzed.py +0 -0
  96. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_generic_wrapper.py +0 -0
  97. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_griggio.py +0 -0
  98. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_model_validation.py +0 -0
  99. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_omt_lib_solver.py +0 -0
  100. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_parser_examples.py +0 -0
  101. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_parser_extensibility.py +0 -0
  102. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_parser_lra.py +0 -0
  103. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_parser_omt.py +0 -0
  104. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_parser_qf_arrays.py +0 -0
  105. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_parser_qf_lia.py +0 -0
  106. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_parser_qf_lira.py +0 -0
  107. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_parser_qf_lra.py +0 -0
  108. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_parser_qf_nia.py +0 -0
  109. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_parser_qf_nra.py +0 -0
  110. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_parser_qf_uf.py +0 -0
  111. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_parser_qf_ufbv.py +0 -0
  112. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_parser_type_error.py +0 -0
  113. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/smtlib/test_smtlibscript.py +0 -0
  114. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_array.py +0 -0
  115. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_back.py +0 -0
  116. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_bdd.py +0 -0
  117. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_bv.py +0 -0
  118. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_bv_simplification.py +0 -0
  119. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_cnf.py +0 -0
  120. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_configuration.py +0 -0
  121. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_constants.py +0 -0
  122. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_cvc_quantifiers.py +0 -0
  123. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_dwf.py +0 -0
  124. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_eager_model.py +0 -0
  125. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_env.py +0 -0
  126. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_euf.py +0 -0
  127. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_formula.py +0 -0
  128. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_hr_parsing.py +0 -0
  129. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_imports.py +0 -0
  130. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_int.py +0 -0
  131. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_interpolation.py +0 -0
  132. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_lira.py +0 -0
  133. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_models.py +0 -0
  134. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_native_qe.py +0 -0
  135. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_nia.py +0 -0
  136. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_nlira.py +0 -0
  137. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_optimization.py +0 -0
  138. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_optimizing.py +0 -0
  139. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_oracles.py +0 -0
  140. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_portfolio.py +0 -0
  141. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_printing.py +0 -0
  142. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_qe.py +0 -0
  143. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_regressions.py +0 -0
  144. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_rewritings.py +0 -0
  145. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_shannon_expansion.py +0 -0
  146. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_simplify.py +0 -0
  147. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_size.py +0 -0
  148. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_solving.py +0 -0
  149. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_sorts.py +0 -0
  150. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_string.py +0 -0
  151. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_typechecker.py +0 -0
  152. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_unsat_cores.py +0 -0
  153. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_walker_ext.py +0 -0
  154. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/test/test_walkers.py +0 -0
  155. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/type_checker.py +0 -0
  156. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/typing.py +0 -0
  157. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/utils.py +0 -0
  158. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/walkers/__init__.py +0 -0
  159. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/walkers/dag.py +0 -0
  160. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/walkers/generic.py +0 -0
  161. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/walkers/identitydag.py +0 -0
  162. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/pysmt/walkers/tree.py +0 -0
  163. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/setup.cfg +0 -0
  164. {pysmt-0.9.7.dev346 → pysmt-0.9.7.dev354}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PySMT
3
- Version: 0.9.7.dev346
3
+ Version: 0.9.7.dev354
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.dev346
3
+ Version: 0.9.7.dev354
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
@@ -16,7 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- VERSION = (0, 9, 7, "dev", 346)
19
+ VERSION = (0, 9, 7, "dev", 354)
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
@@ -25,7 +25,7 @@ except ImportError:
25
25
  from cvc5 import Kind
26
26
 
27
27
  import pysmt.typing as types
28
- from pysmt.logics import PYSMT_LOGICS, ARRAYS_CONST_LOGICS
28
+ from pysmt.logics import PYSMT_LOGICS, AUFLIRA, AUFLIA, AUFNIRA, ALIA
29
29
 
30
30
  from pysmt.solvers.solver import Solver, Converter, SolverOptions
31
31
  from pysmt.exceptions import (SolverReturnedUnknownResultError,
@@ -92,8 +92,14 @@ class CVC5Options(SolverOptions):
92
92
 
93
93
  class CVC5Solver(Solver, SmtLibBasicSolver, SmtLibIgnoreMixin):
94
94
 
95
- LOGICS = PYSMT_LOGICS -\
96
- ARRAYS_CONST_LOGICS
95
+ # Exclude const-array logics that mix BV with integer/real arithmetic:
96
+ # cvc5 rejects arrays indexed by array types (e.g. QF_AUFBVLIRA*).
97
+ LOGICS = (PYSMT_LOGICS | {AUFLIRA, AUFLIA, AUFNIRA, ALIA}) - \
98
+ frozenset(l for l in PYSMT_LOGICS
99
+ if l.theory.arrays_const
100
+ and l.theory.bit_vectors
101
+ and (l.theory.integer_arithmetic
102
+ or l.theory.real_arithmetic))
97
103
 
98
104
  OptionsClass = CVC5Options
99
105
 
@@ -105,6 +111,9 @@ class CVC5Solver(Solver, SmtLibBasicSolver, SmtLibIgnoreMixin):
105
111
  self.cvc5_solver = cvc5.Solver()
106
112
  self.declarations = None
107
113
  self.logic_name = str(logic)
114
+ if self.logic_name.endswith("*"):
115
+ # Const-array extension (pySMT-internal suffix)
116
+ self.logic_name = self.logic_name[:-1]
108
117
  if "t" in self.logic_name:
109
118
  # Custom Type extension
110
119
  self.logic_name = self.logic_name.replace("t","")
@@ -114,6 +123,15 @@ class CVC5Solver(Solver, SmtLibBasicSolver, SmtLibIgnoreMixin):
114
123
  self.logic_name = "LRA"
115
124
  self.cvc5_solver.setLogic(self.logic_name)
116
125
 
126
+ # Enable constant-array support (STORE_ALL / mkConstArray).
127
+ # Without this, cvc5 rejects assertions containing constant
128
+ # arrays with "Cannot handle assertion with term of kind
129
+ # STORE_ALL in this configuration."
130
+ try:
131
+ self.cvc5_solver.setOption("arrays-exp", "true")
132
+ except Exception:
133
+ pass # older cvc5 versions may not have this option
134
+
117
135
  self.options(self)
118
136
 
119
137
  self.converter = CVC5Converter(environment, parent_solver=self)
@@ -257,6 +275,11 @@ class CVC5Converter(Converter, DagWalker):
257
275
  array_type = self._cvc5_type_to_type(expr.getSort())
258
276
  base_value = self.back(const_)
259
277
  res = self.mgr.Array(array_type.index_type, base_value)
278
+ elif expr.getKind() == Kind.STORE:
279
+ base = self.back(expr[0])
280
+ index = self.back(expr[1])
281
+ value = self.back(expr[2])
282
+ res = self.mgr.Store(base, index, value)
260
283
  else:
261
284
  raise PysmtTypeError("Unsupported expression:", str(expr))
262
285
 
@@ -335,6 +358,16 @@ class CVC5Converter(Converter, DagWalker):
335
358
  def walk_array_select(self, formula, args, **kwargs):
336
359
  return self.cvc5_solver.mkTerm(Kind.SELECT, args[0], args[1])
337
360
 
361
+ def walk_array_value(self, formula, args, **kwargs):
362
+ arr_sort = self._type_to_cvc5(formula.get_type())
363
+ # args[0] is the converted default value
364
+ const_arr = self.cvc5_solver.mkConstArray(arr_sort, args[0])
365
+ # Remaining args are (index, value) pairs for point overrides
366
+ result = const_arr
367
+ for i in range(1, len(args), 2):
368
+ result = self.cvc5_solver.mkTerm(Kind.STORE, result, args[i], args[i + 1])
369
+ return result
370
+
338
371
  def walk_minus(self, formula, args, **kwargs):
339
372
  return self.cvc5_solver.mkTerm(Kind.SUB, args[0], args[1])
340
373
 
@@ -45,7 +45,8 @@ from pysmt.exceptions import (SolverReturnedUnknownResultError,
45
45
  UndefinedSymbolError, PysmtValueError,
46
46
  PysmtInfinityError, PysmtInfinitesimalError)
47
47
  from pysmt.decorators import clear_pending_pop, catch_conversion_error
48
- from pysmt.logics import LRA, LIA, QF_UFLRA, QF_UFLIA, PYSMT_LOGICS
48
+ from pysmt.logics import LRA, LIA, QF_UFLRA, QF_UFLIA, PYSMT_LOGICS, \
49
+ AUFLIRA, AUFLIA, AUFNIRA, ALIA
49
50
  from pysmt.oracles import get_logic
50
51
  from pysmt.constants import Fraction, Numeral, is_pysmt_integer
51
52
 
@@ -141,7 +142,9 @@ class Z3Options(SolverOptions):
141
142
  class Z3Solver(IncrementalTrackingSolver, UnsatCoreSolver,
142
143
  SmtLibBasicSolver, SmtLibIgnoreMixin):
143
144
 
144
- LOGICS = PYSMT_LOGICS - set(x for x in PYSMT_LOGICS if x.theory.strings)
145
+ LOGICS = (PYSMT_LOGICS |
146
+ {AUFLIRA, AUFLIA, AUFNIRA, ALIA}) -\
147
+ set(x for x in PYSMT_LOGICS if x.theory.strings)
145
148
  OptionsClass = Z3Options
146
149
 
147
150
  SOLVERFOR_LOGIC_NAMES=['AUFLIA', 'ALIA', 'AUFLIRA', 'AUFNIRA', 'LRA', 'LIA', 'NIA',
@@ -114,9 +114,6 @@ class TestLogic(TestCase):
114
114
  with self.assertRaises(NoSolverAvailableError):
115
115
  Solver(logic=pysmt.logics.QF_BOOL)
116
116
 
117
- with self.assertRaises(NoSolverAvailableError):
118
- Solver(logic=NRA)
119
-
120
117
  with self.assertRaises(NoSolverAvailableError):
121
118
  Solver(name='picosat', logic=pysmt.logics.QF_BV)
122
119
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes