def walk_ite(self, formula, args, **kwargs): i = args[0] t = args[1] e = args[2] if self._get_type(formula).is_bool_type(): impl = self.mgr.Implies(formula.arg(0), formula.arg(1)) th = self.walk_implies(impl, [i,t]) nif = self.mgr.Not(formula.arg(1)) ni = self.walk_not(nif, [i]) el = self.walk_implies(self.mgr.Implies(nif, formula.arg(2)), [ni,e]) return mathsat.msat_make_and(self.msat_env(), th, el) else: return mathsat.msat_make_term_ite(self.msat_env(), i, t, e)
def walk_ite(self, formula, args): i = args[0] t = args[1] e = args[2] if self._get_type(formula).is_bool_type(): impl = self.mgr.Implies(formula.arg(0), formula.arg(1)) th = self.walk_implies(impl, [i,t]) nif = self.mgr.Not(formula.arg(1)) ni = self.walk_not(nif, [i]) el = self.walk_implies(self.mgr.Implies(nif, formula.arg(2)), [ni,e]) return mathsat.msat_make_and(self.msat_env, th, el) else: return mathsat.msat_make_term_ite(self.msat_env, i, t, e)
def walk_and(self, formula, args, **kwargs): res = mathsat.msat_make_true(self.msat_env()) for a in args: res = mathsat.msat_make_and(self.msat_env(), res, a) return res
def walk_and(self, formula, args, **kwargs): res = mathsat.msat_make_true(self.msat_env) for a in args: res = mathsat.msat_make_and(self.msat_env, res, a) return res