def test_smtlib_multi_msat(self): from pysmt.test.smtlib.parser_utils import SMTLIB_TEST_FILES, SMTLIB_DIR # On some platforms (Windows x64) the internal pickling process requires # quite a lot of recursion... old_recursion_limit = sys.getrecursionlimit() sys.setrecursionlimit(999999) for (logic, f, expected_result) in SMTLIB_TEST_FILES: smtfile = os.path.join(SMTLIB_DIR, f) if logic <= QF_UFLIRA: env = reset_env() formula = get_formula_fname(smtfile, env) # Simplifying the formula to reduce its depth to avoid errors on some # platforms until issue #455 for details. formula = formula.simplify() with Portfolio([("msat", {"random_seed": 1}), ("msat", {"random_seed": 17}), ("msat", {"random_seed": 42})], logic=logic, environment=env, incremental=False, generate_models=False) as s: res = s.is_sat(formula) self.assertEqual(expected_result, res, smtfile) #reset recursion limit sys.setrecursionlimit(old_recursion_limit)
def test_smtlib_multi_msat(self): from pysmt.test.smtlib.parser_utils import SMTLIB_TEST_FILES, SMTLIB_DIR # On some platforms (Windows x64) the internal pickling process requires # quite a lot of recursion... old_recursion_limit = sys.getrecursionlimit() sys.setrecursionlimit(999999) for (logic, f, expected_result) in SMTLIB_TEST_FILES: smtfile = os.path.join(SMTLIB_DIR, f) if logic <= QF_UFLIRA: env = reset_env() formula = get_formula_fname(smtfile, env) # Simplifying the formula to reduce its depth to avoid errors on some # platforms until issue #455 for details. formula = formula.simplify() with Portfolio([("msat", { "random_seed": 1 }), ("msat", { "random_seed": 17 }), ("msat", { "random_seed": 42 })], logic=logic, environment=env, incremental=False, generate_models=False) as s: res = s.is_sat(formula) self.assertEqual(expected_result, res, smtfile) #reset recursion limit sys.setrecursionlimit(old_recursion_limit)
def run_smtlib(self, smtfile, logic, expected_result): env = reset_env() formula = get_formula_fname(smtfile, env) with Portfolio(["cvc4", "msat", "yices"], logic=logic, environment=env, incremental=False, generate_models=False) as s: res = s.is_sat(formula) self.assertEqual(expected_result, res, smtfile)
def formulas_from_smtlib_test_set(logics=None): """Returns a generator over the test-set of SMT-LIB files. Note: This resets the Environment at each call. """ for (logic, fname, expected_result) in SMTLIB_TEST_FILES: if logics is not None and logic not in logics: continue reset_env() smtfile = os.path.join(SMTLIB_DIR, fname) formula = get_formula_fname(smtfile) yield (logic, fname, formula, expected_result)
def _smtlib_cnf(self, filename, logic, res_is_sat): reset_env() conv = CNFizer() smtfile = os.path.join(SMTLIB_DIR, filename) assert os.path.exists(smtfile) expr = get_formula_fname(smtfile) if not logic.quantifier_free: with self.assertRaises(NotImplementedError): conv.convert_as_formula(expr) return cnf = conv.convert_as_formula(expr) self.assertValid(Implies(cnf, expr), logic=logic) res = is_sat(cnf, logic=logic) self.assertEqual(res, res_is_sat)
def test_smtlib_multi_msat(self): from pysmt.test.smtlib.parser_utils import SMTLIB_TEST_FILES, SMTLIB_DIR for (logic, f, expected_result) in SMTLIB_TEST_FILES: smtfile = os.path.join(SMTLIB_DIR, f) if logic <= QF_UFLIRA: env = reset_env() formula = get_formula_fname(smtfile, env) with Portfolio([("msat", {"random_seed": 1}), ("msat", {"random_seed": 17}), ("msat", {"random_seed": 42})], logic=logic, environment=env, incremental=False, generate_models=False) as s: res = s.is_sat(formula) result = "sat" if res else "unsat" self.assertEqual(expected_result, result, smtfile)
def test_smtlib_multi_msat(self): from pysmt.test.smtlib.parser_utils import SMTLIB_TEST_FILES, SMTLIB_DIR for (logic, f, expected_result) in SMTLIB_TEST_FILES: smtfile = os.path.join(SMTLIB_DIR, f) if logic <= QF_UFLIRA: env = reset_env() formula = get_formula_fname(smtfile, env) with Portfolio([("msat", { "random_seed": 1 }), ("msat", { "random_seed": 17 }), ("msat", { "random_seed": 42 })], logic=logic, environment=env, incremental=False, generate_models=False) as s: res = s.is_sat(formula) self.assertEqual(expected_result, res, smtfile)