def test_named_still_sat(self): v = datatypes.new_variable() s1 = "Same Name" s2 = "Same Name" pred1 = atomic_predicate.Named(v, s1) pred2 = atomic_predicate.Named(v, s2) status = solver.quick_check( z3.And(pred1._assert(self.submodel, self.interpretation), pred2._assert(self.submodel, self.interpretation))) self.assertTrue(status)
def test_quick_check_pushes_and_pops(self): self.assertTrue(solver.check()) self.assertFalse(solver.quick_check(z3False)) self.assertTrue(solver.check())
def assertUnsat(self, pred): asserted = pred._assert(self.submodel, self.interpretation) check = solver.quick_check(asserted) self.assertFalse(check)
def test_quick_check_true(self): self.assertTrue(solver.quick_check(z3True))
def test_quick_check_false(self): self.assertFalse(solver.quick_check(z3False))
def check_sat(self): # returns a boolean return solver.quick_check(self.get_predicate())
def check_implies(self, other_predicate): # check that this predicate implies other_predicate p1 = self.get_predicate() p2 = other_predicate.get_predicate() pred = z3.Implies(p1, p2) return solver.quick_check(pred)