PySMT 0.9.7.dev112__tar.gz → 0.9.7.dev120__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 (149) hide show
  1. {PySMT-0.9.7.dev112/PySMT.egg-info → PySMT-0.9.7.dev120}/PKG-INFO +1 -1
  2. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120/PySMT.egg-info}/PKG-INFO +1 -1
  3. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/__init__.py +1 -1
  4. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/formula.py +3 -1
  5. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/smtlib/parser/parser.py +3 -1
  6. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_smtlibscript.py +29 -1
  7. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_regressions.py +8 -1
  8. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_typechecker.py +9 -0
  9. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/LICENSE +0 -0
  10. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/MANIFEST.in +0 -0
  11. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/NOTICE +0 -0
  12. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/PySMT.egg-info/SOURCES.txt +0 -0
  13. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/PySMT.egg-info/dependency_links.txt +0 -0
  14. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/PySMT.egg-info/entry_points.txt +0 -0
  15. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/PySMT.egg-info/top_level.txt +0 -0
  16. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/README.rst +0 -0
  17. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/docs/CHANGES.rst +0 -0
  18. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/docs/api_ref.rst +0 -0
  19. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/docs/development.rst +0 -0
  20. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/docs/getting_started.rst +0 -0
  21. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/docs/index.rst +0 -0
  22. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/docs/tutorials/boolean_logic.rst +0 -0
  23. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/docs/tutorials.rst +0 -0
  24. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/__main__.py +0 -0
  25. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/__init__.py +0 -0
  26. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/check_version.py +0 -0
  27. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/install.py +0 -0
  28. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/__init__.py +0 -0
  29. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/base.py +0 -0
  30. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/bdd.py +0 -0
  31. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/btor.py +0 -0
  32. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/cvcfive.py +0 -0
  33. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/cvcfour.py +0 -0
  34. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/msat.py +0 -0
  35. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/pico.py +0 -0
  36. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/yices.py +0 -0
  37. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/z3.py +0 -0
  38. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/shell.py +0 -0
  39. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/configuration.py +0 -0
  40. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/constants.py +0 -0
  41. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/decorators.py +0 -0
  42. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/environment.py +0 -0
  43. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/exceptions.py +0 -0
  44. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/factory.py +0 -0
  45. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/fnode.py +0 -0
  46. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/logics.py +0 -0
  47. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/operators.py +0 -0
  48. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/oracles.py +0 -0
  49. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/parsing.py +0 -0
  50. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/printers.py +0 -0
  51. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/rewritings.py +0 -0
  52. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/shortcuts.py +0 -0
  53. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/simplifier.py +0 -0
  54. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/smtlib/__init__.py +0 -0
  55. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/smtlib/annotations.py +0 -0
  56. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/smtlib/commands.py +0 -0
  57. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/smtlib/parser/__init__.py +0 -0
  58. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/smtlib/printers.py +0 -0
  59. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/smtlib/script.py +0 -0
  60. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/smtlib/solver.py +0 -0
  61. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/smtlib/utils.py +0 -0
  62. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/__init__.py +0 -0
  63. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/bdd.py +0 -0
  64. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/btor.py +0 -0
  65. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/cvcfive.py +0 -0
  66. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/cvcfour.py +0 -0
  67. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/eager.py +0 -0
  68. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/interpolation.py +0 -0
  69. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/msat.py +0 -0
  70. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/options.py +0 -0
  71. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/pico.py +0 -0
  72. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/portfolio.py +0 -0
  73. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/qelim.py +0 -0
  74. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/smtlib.py +0 -0
  75. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/solver.py +0 -0
  76. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/yices.py +0 -0
  77. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/z3.py +0 -0
  78. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/substituter.py +0 -0
  79. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/__init__.py +0 -0
  80. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/configs/config1.ini +0 -0
  81. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/configs/config_bad.ini +0 -0
  82. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/examples.py +0 -0
  83. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/__init__.py +0 -0
  84. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/parser_utils.py +0 -0
  85. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_annotations.py +0 -0
  86. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_fuzzed.py +0 -0
  87. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_generic_wrapper.py +0 -0
  88. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_griggio.py +0 -0
  89. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_model_validation.py +0 -0
  90. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_examples.py +0 -0
  91. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_extensibility.py +0 -0
  92. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_lra.py +0 -0
  93. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_qf_arrays.py +0 -0
  94. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_qf_lia.py +0 -0
  95. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_qf_lira.py +0 -0
  96. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_qf_lra.py +0 -0
  97. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_qf_nia.py +0 -0
  98. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_qf_nra.py +0 -0
  99. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_qf_uf.py +0 -0
  100. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_qf_ufbv.py +0 -0
  101. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_type_error.py +0 -0
  102. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_array.py +0 -0
  103. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_back.py +0 -0
  104. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_bdd.py +0 -0
  105. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_bv.py +0 -0
  106. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_bv_simplification.py +0 -0
  107. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_cnf.py +0 -0
  108. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_configuration.py +0 -0
  109. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_constants.py +0 -0
  110. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_cvc_quantifiers.py +0 -0
  111. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_dwf.py +0 -0
  112. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_eager_model.py +0 -0
  113. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_env.py +0 -0
  114. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_euf.py +0 -0
  115. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_formula.py +0 -0
  116. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_hr_parsing.py +0 -0
  117. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_imports.py +0 -0
  118. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_int.py +0 -0
  119. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_interpolation.py +0 -0
  120. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_lira.py +0 -0
  121. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_logics.py +0 -0
  122. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_models.py +0 -0
  123. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_native_qe.py +0 -0
  124. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_nia.py +0 -0
  125. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_nlira.py +0 -0
  126. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_oracles.py +0 -0
  127. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_portfolio.py +0 -0
  128. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_printing.py +0 -0
  129. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_qe.py +0 -0
  130. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_rewritings.py +0 -0
  131. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_shannon_expansion.py +0 -0
  132. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_simplify.py +0 -0
  133. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_size.py +0 -0
  134. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_solving.py +0 -0
  135. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_sorts.py +0 -0
  136. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_string.py +0 -0
  137. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_unsat_cores.py +0 -0
  138. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_walker_ext.py +0 -0
  139. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_walkers.py +0 -0
  140. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/type_checker.py +0 -0
  141. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/typing.py +0 -0
  142. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/utils.py +0 -0
  143. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/walkers/__init__.py +0 -0
  144. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/walkers/dag.py +0 -0
  145. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/walkers/generic.py +0 -0
  146. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/walkers/identitydag.py +0 -0
  147. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/walkers/tree.py +0 -0
  148. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/setup.cfg +0 -0
  149. {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.0
2
2
  Name: PySMT
3
- Version: 0.9.7.dev112
3
+ Version: 0.9.7.dev120
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: 1.0
2
2
  Name: PySMT
3
- Version: 0.9.7.dev112
3
+ Version: 0.9.7.dev120
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", 112)
19
+ VERSION = (0, 9, 7, "dev", 120)
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
@@ -89,7 +89,9 @@ class FormulaManager(object):
89
89
  def create_node(self, node_type, args, payload=None):
90
90
  content = FNodeContent(node_type, args, payload)
91
91
  if content in self.formulae:
92
- return self.formulae[content]
92
+ n = self.formulae[content]
93
+ self._do_type_check(n)
94
+ return n
93
95
  else:
94
96
  n = FNode(content, self._next_free_id)
95
97
  self._next_free_id += 1
@@ -344,13 +344,15 @@ class SmtLibParser(object):
344
344
  get_type = self.env.stc.get_type
345
345
  get_free_variables = self.env.fvo.get_free_variables
346
346
  new_args = []
347
+ changed = False
347
348
  for x in args:
348
349
  if get_type(x).is_int_type() and\
349
350
  len(get_free_variables(x)) == 0:
350
351
  new_args.append(mgr.ToReal(x))
352
+ changed = True
351
353
  else:
352
354
  new_args.append(x)
353
- if args == new_args:
355
+ if not changed:
354
356
  raise
355
357
  return op(*new_args)
356
358
 
@@ -27,7 +27,7 @@ from pysmt.smtlib.script import smtlibscript_from_formula, evaluate_command
27
27
  from pysmt.smtlib.parser import get_formula_strict, get_formula, SmtLibParser
28
28
  from pysmt.solvers.smtlib import SmtLibIgnoreMixin
29
29
  from pysmt.logics import QF_UFLIRA
30
- from pysmt.exceptions import UndefinedLogicError, PysmtValueError
30
+ from pysmt.exceptions import UndefinedLogicError, PysmtValueError, PysmtTypeError
31
31
 
32
32
 
33
33
 
@@ -175,6 +175,29 @@ class TestSmtLibScript(TestCase):
175
175
  # No exceptions are thrown
176
176
  self.assertEqual(smtlib_script.replace('var', '__var0'), script.commands[0].serialize_to_string())
177
177
 
178
+ def test_twice_fix_real(self):
179
+ smtlib_script = "\n".join([
180
+ '(declare-fun r () Real)',
181
+ '(assert (< (* 1 r) 0))',
182
+ '(assert (< 2 (* 1 r)))'
183
+ ])
184
+ stream = StringIO(smtlib_script)
185
+ parser = SmtLibParser()
186
+ _ = parser.get_script(stream)
187
+ # No exceptions are thrown
188
+ self.assertTrue(True)
189
+
190
+ def test_type_error(self):
191
+ smtlib_script = "\n".join([
192
+ "(declare-sort B 0)",
193
+ "(declare-const e B)",
194
+ "(declare-const x Bool)",
195
+ "(assert (= e x))",
196
+ ])
197
+ stream = StringIO(smtlib_script)
198
+ parser = SmtLibParser()
199
+ with self.assertRaises(PysmtTypeError):
200
+ _ = parser.get_script(stream)
178
201
 
179
202
  def test_evaluate_command(self):
180
203
  class SmtLibIgnore(SmtLibIgnoreMixin):
@@ -233,14 +256,19 @@ class TestSmtLibScript(TestCase):
233
256
  # Create a small file that tests all commands of smt-lib 2
234
257
  parser = SmtLibParser()
235
258
 
259
+ te = 0
236
260
  nie = 0
237
261
  for cmd in DEMO_SMTSCRIPT:
238
262
  try:
239
263
  next(parser.get_command_generator(StringIO(cmd)))
240
264
  except NotImplementedError:
241
265
  nie += 1
266
+ except PysmtTypeError:
267
+ te += 1
242
268
  # There are currently 3 not-implemented commands
243
269
  self.assertEqual(nie, 3)
270
+ # There is currently 1 type error
271
+ self.assertEqual(te, 1)
244
272
 
245
273
  DEMO_SMTSCRIPT = [ "(declare-fun a () Bool)",
246
274
  "(declare-fun b () Bool)",
@@ -456,13 +456,20 @@ class TestRegressions(TestCase):
456
456
  self.assertEqual(ex.pos_info[1], 19)
457
457
 
458
458
  def test_parse_bvconst_width(self):
459
- smtlib_input = "(assert (> #x10 #x10))"
459
+ smtlib_input = "(assert (bvugt #x10 #x10))"
460
460
  parser = SmtLibParser()
461
461
  buffer_ = StringIO(smtlib_input)
462
462
  expr = parser.get_script(buffer_).get_last_formula()
463
463
  const = expr.args()[0]
464
464
  self.assertEqual(const.bv_width(), 8, const.bv_width())
465
465
 
466
+ def test_parse_bvconst_type_check(self):
467
+ smtlib_input = "(assert (> #x10 #x10))"
468
+ parser = SmtLibParser()
469
+ buffer_ = StringIO(smtlib_input)
470
+ with self.assertRaises(PysmtTypeError):
471
+ _ = parser.get_script(buffer_).get_last_formula()
472
+
466
473
  def test_equality_typing(self):
467
474
  x = Symbol('x', BOOL)
468
475
  y = Symbol('y', BOOL)
@@ -212,6 +212,15 @@ class TestSimpleTypeChecker(TestCase):
212
212
  with self.assertRaises(PysmtTypeError):
213
213
  super_bad_function()
214
214
 
215
+ def test_multiple_creations(self):
216
+ def bad_formula():
217
+ return Times(self.p, self.r)
218
+ with self.assertRaises(PysmtTypeError):
219
+ bad_formula()
220
+ # When building the same formula a second time, should raise again.
221
+ with self.assertRaises(PysmtTypeError):
222
+ bad_formula()
223
+
215
224
  def test_examples(self):
216
225
  for (f, _, _, _) in get_example_formulae():
217
226
  self.assertIs(f.get_type(), BOOL, f)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes