PySMT 0.9.6.dev34__tar.gz → 0.9.6.dev40__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 (147) hide show
  1. {PySMT-0.9.6.dev34/PySMT.egg-info → PySMT-0.9.6.dev40}/PKG-INFO +1 -1
  2. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40/PySMT.egg-info}/PKG-INFO +1 -1
  3. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/__init__.py +1 -1
  4. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/formula.py +1 -1
  5. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/logics.py +19 -4
  6. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_logics.py +7 -2
  7. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/LICENSE +0 -0
  8. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/MANIFEST.in +0 -0
  9. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/NOTICE +0 -0
  10. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/PySMT.egg-info/SOURCES.txt +0 -0
  11. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/PySMT.egg-info/dependency_links.txt +0 -0
  12. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/PySMT.egg-info/entry_points.txt +0 -0
  13. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/PySMT.egg-info/top_level.txt +0 -0
  14. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/README.rst +0 -0
  15. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/docs/CHANGES.rst +0 -0
  16. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/docs/api_ref.rst +0 -0
  17. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/docs/development.rst +0 -0
  18. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/docs/getting_started.rst +0 -0
  19. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/docs/index.rst +0 -0
  20. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/docs/tutorials/boolean_logic.rst +0 -0
  21. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/docs/tutorials.rst +0 -0
  22. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/__main__.py +0 -0
  23. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/cmd/__init__.py +0 -0
  24. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/cmd/check_version.py +0 -0
  25. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/cmd/install.py +0 -0
  26. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/cmd/installers/__init__.py +0 -0
  27. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/cmd/installers/base.py +0 -0
  28. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/cmd/installers/bdd.py +0 -0
  29. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/cmd/installers/btor.py +0 -0
  30. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/cmd/installers/cvc4.py +0 -0
  31. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/cmd/installers/msat.py +0 -0
  32. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/cmd/installers/pico.py +0 -0
  33. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/cmd/installers/yices.py +0 -0
  34. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/cmd/installers/z3.py +0 -0
  35. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/cmd/shell.py +0 -0
  36. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/configuration.py +0 -0
  37. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/constants.py +0 -0
  38. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/decorators.py +0 -0
  39. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/environment.py +0 -0
  40. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/exceptions.py +0 -0
  41. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/factory.py +0 -0
  42. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/fnode.py +0 -0
  43. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/operators.py +0 -0
  44. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/oracles.py +0 -0
  45. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/parsing.py +0 -0
  46. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/printers.py +0 -0
  47. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/rewritings.py +0 -0
  48. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/shortcuts.py +0 -0
  49. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/simplifier.py +0 -0
  50. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/smtlib/__init__.py +0 -0
  51. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/smtlib/annotations.py +0 -0
  52. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/smtlib/commands.py +0 -0
  53. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/smtlib/parser/__init__.py +0 -0
  54. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/smtlib/parser/parser.py +0 -0
  55. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/smtlib/printers.py +0 -0
  56. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/smtlib/script.py +0 -0
  57. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/smtlib/solver.py +0 -0
  58. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/smtlib/utils.py +0 -0
  59. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/solvers/__init__.py +0 -0
  60. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/solvers/bdd.py +0 -0
  61. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/solvers/btor.py +0 -0
  62. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/solvers/cvc4.py +0 -0
  63. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/solvers/eager.py +0 -0
  64. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/solvers/interpolation.py +0 -0
  65. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/solvers/msat.py +0 -0
  66. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/solvers/options.py +0 -0
  67. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/solvers/pico.py +0 -0
  68. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/solvers/portfolio.py +0 -0
  69. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/solvers/qelim.py +0 -0
  70. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/solvers/smtlib.py +0 -0
  71. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/solvers/solver.py +0 -0
  72. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/solvers/yices.py +0 -0
  73. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/solvers/z3.py +0 -0
  74. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/substituter.py +0 -0
  75. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/__init__.py +0 -0
  76. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/configs/config1.ini +0 -0
  77. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/configs/config_bad.ini +0 -0
  78. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/examples.py +0 -0
  79. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/__init__.py +0 -0
  80. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/parser_utils.py +0 -0
  81. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/test_annotations.py +0 -0
  82. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/test_fuzzed.py +0 -0
  83. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/test_generic_wrapper.py +0 -0
  84. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/test_griggio.py +0 -0
  85. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/test_model_validation.py +0 -0
  86. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/test_parser_examples.py +0 -0
  87. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/test_parser_extensibility.py +0 -0
  88. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/test_parser_lra.py +0 -0
  89. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/test_parser_qf_arrays.py +0 -0
  90. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/test_parser_qf_lia.py +0 -0
  91. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/test_parser_qf_lira.py +0 -0
  92. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/test_parser_qf_lra.py +0 -0
  93. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/test_parser_qf_nia.py +0 -0
  94. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/test_parser_qf_nra.py +0 -0
  95. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/test_parser_qf_uf.py +0 -0
  96. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/test_parser_qf_ufbv.py +0 -0
  97. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/test_parser_type_error.py +0 -0
  98. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/smtlib/test_smtlibscript.py +0 -0
  99. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_array.py +0 -0
  100. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_back.py +0 -0
  101. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_bdd.py +0 -0
  102. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_bv.py +0 -0
  103. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_bv_simplification.py +0 -0
  104. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_cnf.py +0 -0
  105. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_configuration.py +0 -0
  106. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_constants.py +0 -0
  107. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_cvc4_quantifiers.py +0 -0
  108. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_dwf.py +0 -0
  109. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_eager_model.py +0 -0
  110. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_env.py +0 -0
  111. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_euf.py +0 -0
  112. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_formula.py +0 -0
  113. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_hr_parsing.py +0 -0
  114. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_imports.py +0 -0
  115. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_int.py +0 -0
  116. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_interpolation.py +0 -0
  117. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_lira.py +0 -0
  118. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_models.py +0 -0
  119. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_native_qe.py +0 -0
  120. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_nia.py +0 -0
  121. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_nlira.py +0 -0
  122. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_oracles.py +0 -0
  123. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_portfolio.py +0 -0
  124. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_printing.py +0 -0
  125. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_qe.py +0 -0
  126. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_regressions.py +0 -0
  127. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_rewritings.py +0 -0
  128. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_shannon_expansion.py +0 -0
  129. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_simplify.py +0 -0
  130. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_size.py +0 -0
  131. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_solving.py +0 -0
  132. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_sorts.py +0 -0
  133. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_string.py +0 -0
  134. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_typechecker.py +0 -0
  135. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_unsat_cores.py +0 -0
  136. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_walker_ext.py +0 -0
  137. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/test/test_walkers.py +0 -0
  138. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/type_checker.py +0 -0
  139. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/typing.py +0 -0
  140. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/utils.py +0 -0
  141. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/walkers/__init__.py +0 -0
  142. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/walkers/dag.py +0 -0
  143. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/walkers/generic.py +0 -0
  144. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/walkers/identitydag.py +0 -0
  145. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/pysmt/walkers/tree.py +0 -0
  146. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/setup.cfg +0 -0
  147. {PySMT-0.9.6.dev34 → PySMT-0.9.6.dev40}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.0
2
2
  Name: PySMT
3
- Version: 0.9.6.dev34
3
+ Version: 0.9.6.dev40
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.6.dev34
3
+ Version: 0.9.6.dev40
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, 6, "dev", 34)
19
+ VERSION = (0, 9, 6, "dev", 40)
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
@@ -780,7 +780,7 @@ class FormulaManager(object):
780
780
  payload=(left.bv_width(),))
781
781
 
782
782
  def BVURem(self, left, right):
783
- """Returns the reminder of the two BV."""
783
+ """Returns the remainder of the two BV."""
784
784
  return self.create_node(node_type=op.BV_UREM,
785
785
  args=(left, right),
786
786
  payload=(left.bv_width(),))
@@ -480,6 +480,14 @@ variables.""",
480
480
  quantifier_free=True,
481
481
  real_arithmetic=True)
482
482
 
483
+ QF_LIRA = Logic(name="QF_LIRA",
484
+ description=\
485
+ """Unquantified linear integer and real arithmetic""",
486
+ integer_arithmetic=True,
487
+ real_arithmetic=True,
488
+ linear=True,
489
+ quantifier_free=True)
490
+
483
491
  QF_NIA = Logic(name="QF_NIA",
484
492
  description=\
485
493
  """Quantifier-free integer arithmetic.""",
@@ -667,7 +675,7 @@ QF_LOGICS = frozenset(_l for _l in LOGICS if _l.quantifier_free)
667
675
  # This is the set of logics supported by the current version of pySMT
668
676
  #
669
677
  PYSMT_LOGICS = frozenset([QF_BOOL, QF_IDL, QF_LIA, QF_LRA, QF_RDL, QF_UF, QF_UFIDL,
670
- QF_UFLIA, QF_UFLRA, QF_UFLIRA,
678
+ QF_UFLIA, QF_UFLRA, QF_UFLIRA, QF_LIRA,
671
679
  BOOL, LRA, LIA, UFLIRA, UFLRA,
672
680
  QF_BV, QF_UFBV,
673
681
  QF_SLIA,
@@ -795,10 +803,17 @@ def get_closer_logic(supported_logics, logic):
795
803
  does not support the given logic.
796
804
 
797
805
  """
798
- res = [l for l in supported_logics if logic <= l]
799
- if len(res) == 0:
806
+ candidates = [l for l in supported_logics if logic <= l]
807
+ if len(candidates) == 0:
800
808
  raise NoLogicAvailableError("Logic %s is not supported" % logic)
801
- return min(res)
809
+
810
+ # We remove from the candidates, the logics that subsume another candidate
811
+ # (i.e. that are more general) because we are looking for the closer logic
812
+ res = [l for l in candidates if not any(l != k and k <= l for k in candidates)]
813
+
814
+ # There might be multiple incomparable logics that are closer, we
815
+ # deterministically select the one having a lexicographically smaller name
816
+ return sorted(res, key=lambda x:str(x))[0]
802
817
 
803
818
 
804
819
  def get_closer_pysmt_logic(target_logic):
@@ -16,9 +16,9 @@
16
16
  # limitations under the License.
17
17
  #
18
18
  import pysmt.logics
19
- from pysmt.logics import get_logic_by_name, get_logic, most_generic_logic
19
+ from pysmt.logics import get_closer_logic, get_logic_by_name, get_logic, most_generic_logic
20
20
  from pysmt.logics import PYSMT_LOGICS
21
- from pysmt.logics import QF_LIA, LIA, UFLIRA, LRA, QF_UFLIRA, QF_BV, NRA, QF_IDL, QF_BOOL
21
+ from pysmt.logics import QF_LIA, LIA, UFLIRA, LRA, QF_UFLIRA, QF_BV, NRA, QF_IDL, QF_BOOL, QF_NIRA, QF_LIRA
22
22
  from pysmt.logics import Theory
23
23
  from pysmt.exceptions import (UndefinedLogicError, NoSolverAvailableError,
24
24
  NoLogicAvailableError)
@@ -142,5 +142,10 @@ class TestLogic(TestCase):
142
142
  integer_arithmetic=True)
143
143
  self.assertIsNotNone(t)
144
144
 
145
+ def test_get_closer_logic_is_deterministic(self):
146
+ l1 = get_closer_logic([QF_UFLIRA, QF_NIRA], QF_LIRA)
147
+ l2 = get_closer_logic([QF_NIRA, QF_UFLIRA], QF_LIRA)
148
+ self.assertEqual(l1, l2)
149
+
145
150
  if __name__ == "__main__":
146
151
  main()
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes