def ex42(f): s = "" if Eval.satisfiable(f): s += "satisfiable " if Eval.unsatisfiable(f): s += "unsatisfiable " if Eval.tautology(f): s += "tautology" return s + "\n(satisfiable: %s, unsatisfiable %s, tautology: %s)" % (Eval.satisfiable(f), Eval.unsatisfiable(f), Eval.tautology(f))
def test_exercise42(self): f1 = "Smoke => Smoke" self.assertTrue(Eval.satisfiable(f1)) self.assertFalse(Eval.unsatisfiable(f1)) self.assertTrue(Eval.tautology(f1)) f1 = "(Smoke => Fire) => (~Smoke => ~Fire)" self.assertTrue(Eval.satisfiable(f1)) self.assertFalse(Eval.unsatisfiable(f1)) self.assertFalse(Eval.tautology(f1)) f1 = "Smoke \\/ Fire\\/ ~Fire" self.assertTrue(Eval.satisfiable(f1)) self.assertFalse(Eval.unsatisfiable(f1)) self.assertTrue(Eval.tautology(f1)) f1 = "(Fire => Smoke) /\\ Fire /\\ ~Smoke" self.assertFalse(Eval.satisfiable(f1)) self.assertTrue(Eval.unsatisfiable(f1)) self.assertFalse(Eval.tautology(f1))
def test_questoin423(self): self.assertFalse(Eval.tautology("~(kb /\ ~A) => (kb /\ A)"))
def test_tautology(self): self.assertFalse(Eval.tautology("a /\\ b")) self.assertTrue(Eval.tautology("a <=> a")) self.assertFalse(Eval.tautology("a <=> b"))