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.
- {PySMT-0.9.7.dev112/PySMT.egg-info → PySMT-0.9.7.dev120}/PKG-INFO +1 -1
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120/PySMT.egg-info}/PKG-INFO +1 -1
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/__init__.py +1 -1
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/formula.py +3 -1
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/smtlib/parser/parser.py +3 -1
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_smtlibscript.py +29 -1
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_regressions.py +8 -1
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_typechecker.py +9 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/LICENSE +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/MANIFEST.in +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/NOTICE +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/PySMT.egg-info/SOURCES.txt +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/PySMT.egg-info/dependency_links.txt +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/PySMT.egg-info/entry_points.txt +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/PySMT.egg-info/top_level.txt +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/README.rst +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/docs/CHANGES.rst +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/docs/api_ref.rst +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/docs/development.rst +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/docs/getting_started.rst +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/docs/index.rst +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/docs/tutorials/boolean_logic.rst +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/docs/tutorials.rst +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/__main__.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/__init__.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/check_version.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/install.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/__init__.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/base.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/bdd.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/btor.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/cvcfive.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/cvcfour.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/msat.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/pico.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/yices.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/installers/z3.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/cmd/shell.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/configuration.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/constants.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/decorators.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/environment.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/exceptions.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/factory.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/fnode.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/logics.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/operators.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/oracles.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/parsing.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/printers.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/rewritings.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/shortcuts.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/simplifier.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/smtlib/__init__.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/smtlib/annotations.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/smtlib/commands.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/smtlib/parser/__init__.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/smtlib/printers.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/smtlib/script.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/smtlib/solver.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/smtlib/utils.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/__init__.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/bdd.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/btor.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/cvcfive.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/cvcfour.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/eager.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/interpolation.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/msat.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/options.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/pico.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/portfolio.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/qelim.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/smtlib.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/solver.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/yices.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/solvers/z3.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/substituter.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/__init__.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/configs/config1.ini +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/configs/config_bad.ini +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/examples.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/__init__.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/parser_utils.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_annotations.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_fuzzed.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_generic_wrapper.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_griggio.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_model_validation.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_examples.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_extensibility.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_lra.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_qf_arrays.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_qf_lia.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_qf_lira.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_qf_lra.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_qf_nia.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_qf_nra.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_qf_uf.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_qf_ufbv.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/smtlib/test_parser_type_error.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_array.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_back.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_bdd.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_bv.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_bv_simplification.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_cnf.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_configuration.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_constants.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_cvc_quantifiers.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_dwf.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_eager_model.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_env.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_euf.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_formula.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_hr_parsing.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_imports.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_int.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_interpolation.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_lira.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_logics.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_models.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_native_qe.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_nia.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_nlira.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_oracles.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_portfolio.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_printing.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_qe.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_rewritings.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_shannon_expansion.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_simplify.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_size.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_solving.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_sorts.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_string.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_unsat_cores.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_walker_ext.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/test/test_walkers.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/type_checker.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/typing.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/utils.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/walkers/__init__.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/walkers/dag.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/walkers/generic.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/walkers/identitydag.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/pysmt/walkers/tree.py +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/setup.cfg +0 -0
- {PySMT-0.9.7.dev112 → PySMT-0.9.7.dev120}/setup.py +0 -0
|
@@ -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
|
-
|
|
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
|
|
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 (
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|