f = GT(Plus(r, Real(1)), Plus(s, Real(1))) term = msat.converter.convert(f) res = msat.converter.back(term) self.assertFalse(f == res) def do_back(self, solver_name): for formula, _, _, logic in get_example_formulae(): if logic.quantifier_free: try: s = Solver(name=solver_name, logic=logic) term = s.converter.convert(formula) res = s.converter.back(term) self.assertValid(Iff(formula, res), logic=logic, solver_name=solver_name) except NoSolverAvailableError: pass @skipIfSolverNotAvailable("msat") def test_msat_back_formulae(self): self.do_back("msat") @skipIfSolverNotAvailable("z3") def test_z3_back_formulae(self): self.do_back("z3") if __name__ == '__main__': main()
"(define-fun-rec f ((a A)) B a)", "(define-fun-rec g ((a A)) B (g a))", """(define-funs-rec ((h ((a A)) B) (i ((a A)) B) ) ( (i a) (h a)) ) """, "(define-sort A () B)", "(define-sort A (B C) (Array B C))", "(echo \"hello world\")", "(exit)", "(get-assertions)", "(get-assignment)", "(get-info :name)", "(get-model)", "(get-option :keyword)", "(get-proof)", "(get-unsat-assumptions)", "(get-unsat-core)", "(get-value (x y z))", "(pop 42)", "(push 42)", "(reset)", "(reset-assertions)", "(set-info :number 42)", "(set-logic QF_LIA)", "(set-option :produce-models true)", ] if __name__ == "__main__": main()