Beispiel #1
0
    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)
Beispiel #2
0
    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)
Beispiel #3
0
 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
Beispiel #4
0
 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