PySMT 0.9.7.dev408__tar.gz → 0.9.7.dev414__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.dev408/PySMT.egg-info → pysmt-0.9.7.dev414}/PKG-INFO +1 -1
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414/PySMT.egg-info}/PKG-INFO +1 -1
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/__init__.py +1 -1
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/substituter.py +5 -3
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_walkers.py +16 -1
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/LICENSE +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/MANIFEST.in +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/NOTICE +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/PySMT.egg-info/SOURCES.txt +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/PySMT.egg-info/dependency_links.txt +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/PySMT.egg-info/entry_points.txt +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/PySMT.egg-info/top_level.txt +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/README.rst +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/docs/CHANGES.rst +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/docs/api_ref.rst +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/docs/development.rst +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/docs/getting_started.rst +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/docs/index.rst +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/docs/tutorials/boolean_logic.rst +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/docs/tutorials.rst +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/__main__.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/cmd/__init__.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/cmd/check_version.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/cmd/install.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/cmd/installers/__init__.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/cmd/installers/base.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/cmd/installers/bdd.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/cmd/installers/btor.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/cmd/installers/cvcfive.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/cmd/installers/cvcfour.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/cmd/installers/msat.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/cmd/installers/optimsat.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/cmd/installers/pico.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/cmd/installers/yices.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/cmd/installers/z3.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/cmd/shell.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/configuration.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/constants.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/decorators.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/environment.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/exceptions.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/factory.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/fnode.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/formula.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/logics.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/operators.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/optimization/__init__.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/optimization/goal.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/optimization/msat.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/optimization/optimizer.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/optimization/optimsat.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/optimization/yices.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/optimization/z3.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/oracles.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/parsing.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/printers.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/rewritings.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/shortcuts.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/simplifier.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/smtlib/__init__.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/smtlib/annotations.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/smtlib/commands.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/smtlib/parser/__init__.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/smtlib/parser/parser.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/smtlib/printers.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/smtlib/script.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/smtlib/solver.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/smtlib/utils.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/solvers/__init__.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/solvers/bdd.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/solvers/btor.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/solvers/cvcfive.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/solvers/cvcfour.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/solvers/dynmsat.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/solvers/eager.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/solvers/interpolation.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/solvers/msat.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/solvers/options.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/solvers/pico.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/solvers/portfolio.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/solvers/qelim.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/solvers/smtlib.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/solvers/solver.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/solvers/yices.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/solvers/z3.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/__init__.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/configs/config1.ini +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/configs/config_bad.ini +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/examples.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/omt_examples.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/optimization_utils.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/__init__.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/parser_utils.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_annotations.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_fuzzed.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_generic_wrapper.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_griggio.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_model_validation.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_omt_lib_solver.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_parser_examples.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_parser_extensibility.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_parser_lra.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_parser_omt.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_parser_qf_arrays.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_parser_qf_lia.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_parser_qf_lira.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_parser_qf_lra.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_parser_qf_nia.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_parser_qf_nra.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_parser_qf_uf.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_parser_qf_ufbv.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_parser_type_error.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/smtlib/test_smtlibscript.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_array.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_back.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_bdd.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_bv.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_bv_simplification.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_cnf.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_configuration.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_constants.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_cvc_quantifiers.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_dwf.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_eager_model.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_env.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_euf.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_formula.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_hr_parsing.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_imports.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_int.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_interpolation.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_lira.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_logics.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_models.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_native_qe.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_nia.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_nlira.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_optimization.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_optimizing.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_oracles.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_portfolio.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_printing.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_qe.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_regressions.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_rewritings.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_shannon_expansion.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_simplify.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_size.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_solving.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_sorts.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_string.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_typechecker.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_unsat_cores.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/test/test_walker_ext.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/type_checker.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/typing.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/utils.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/walkers/__init__.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/walkers/dag.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/walkers/generic.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/walkers/identitydag.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/pysmt/walkers/tree.py +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/setup.cfg +0 -0
- {pysmt-0.9.7.dev408 → pysmt-0.9.7.dev414}/setup.py +0 -0
|
@@ -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",
|
|
22
|
+
VERSION: Union[Tuple[int, int, int], Tuple[int, int, int, str, int]] = (0, 9, 7, "dev", 414)
|
|
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
|
|
@@ -151,7 +151,8 @@ class Substituter(pysmt.walkers.IdentityDagWalker):
|
|
|
151
151
|
# 2. We apply the substitution on the quantifier body with
|
|
152
152
|
# the new 'reduced' map
|
|
153
153
|
sub = self.__class__(self.env)
|
|
154
|
-
res_formula = sub.substitute(formula.arg(0), new_subs
|
|
154
|
+
res_formula = sub.substitute(formula.arg(0), subs=new_subs,
|
|
155
|
+
interpretations=kwargs.get('interpretations', None))
|
|
155
156
|
|
|
156
157
|
# 3. We invoke the relevant function (walk_exists or
|
|
157
158
|
# walk_forall) to compute the substitution
|
|
@@ -304,8 +305,9 @@ class MSSubstituter(Substituter):
|
|
|
304
305
|
def __init__(self, env):
|
|
305
306
|
Substituter.__init__(self, env=env)
|
|
306
307
|
|
|
307
|
-
def substitute(self, formula, subs):
|
|
308
|
-
return Substituter.substitute(self, formula, subs
|
|
308
|
+
def substitute(self, formula, subs=None, interpretations=None):
|
|
309
|
+
return Substituter.substitute(self, formula, subs,
|
|
310
|
+
interpretations=interpretations)
|
|
309
311
|
|
|
310
312
|
def _substitute(self, formula, substitutions):
|
|
311
313
|
"""Returns the substitution for formula, if one is defined, otherwise
|
|
@@ -26,7 +26,7 @@ from pysmt.test import TestCase, main
|
|
|
26
26
|
from pysmt.formula import FormulaManager
|
|
27
27
|
from pysmt.test.examples import get_example_formulae
|
|
28
28
|
from pysmt.exceptions import UnsupportedOperatorError, PysmtTypeError
|
|
29
|
-
from pysmt.substituter import MSSubstituter, MGSubstituter
|
|
29
|
+
from pysmt.substituter import FunctionInterpretation, MSSubstituter, MGSubstituter
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
class TestWalkers(TestCase):
|
|
@@ -78,6 +78,21 @@ class TestWalkers(TestCase):
|
|
|
78
78
|
with self.assertRaisesRegex(PysmtTypeError, "substitute()"):
|
|
79
79
|
substitute(f, {x:x})
|
|
80
80
|
|
|
81
|
+
def test_substituter_interpretations_in_quantifiers(self):
|
|
82
|
+
x = Symbol("x", INT)
|
|
83
|
+
UF_XOR = Symbol('uf_xor', FunctionType(INT, [INT, INT]))
|
|
84
|
+
f = ForAll([x], Equals(Function(UF_XOR, [x, x]), Int(0)))
|
|
85
|
+
|
|
86
|
+
class XORInterpreter(FunctionInterpretation):
|
|
87
|
+
def __init__(self): pass
|
|
88
|
+
def interpret(self, env, args):
|
|
89
|
+
if args[0] == args[1]: return Int(0)
|
|
90
|
+
return Function(UF_XOR, args)
|
|
91
|
+
|
|
92
|
+
subs = f.substitute({}, interpretations={UF_XOR: XORInterpreter()})
|
|
93
|
+
|
|
94
|
+
self.assertEqual(subs, ForAll([x], Equals(Int(0), Int(0))))
|
|
95
|
+
|
|
81
96
|
def test_undefined_node(self):
|
|
82
97
|
varA = Symbol("At", INT)
|
|
83
98
|
|
|
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
|
|
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
|