Ejemplo n.º 1
0
 def test_init_or(self):
     gen = Generalization("or", [self.f1, self.f2])
     self.assertEqual("or", gen.connective)
     self.assertEqual([self.f1, self.f2], gen.list)
     gen2 = Generalization("|", [self.f1, self.f2])
     self.assertEqual("or", gen2.connective)
     self.assertEqual([self.f1, self.f2], gen2.list)
 def test_has_non_literal(self):
     g1 = Generalization("and", [self.f1, Formula("Z"), self.f2])
     g2 = Generalization("or", [Formula("Z"), Formula("!", Formula("Y"))])
     g3 = Generalization("or", [])
     self.assertTrue(g1.has_non_literal)
     self.assertFalse(g3.has_non_literal())
     self.assertFalse(g2.has_non_literal())
Ejemplo n.º 3
0
 def test_cnf_action_alpha(self):
     g1 = Generalization("or", [Formula("&", Formula("X"), Formula("Y"))])
     exp = [
         Generalization("or", [Formula("X")]),
         Generalization("or", [Formula("Y")])
     ]
     self.assertEqual(exp, g1.cnf_action())
 def test_cnf(self):
     g1 = Generalization("or", [
             Formula("&", Formula("X"), Formula("!", Formula("Y")))])
     g2 = Generalization("and", [
             Generalization("or", [
                     Formula("&", Formula("X"),
                             Formula("!", Formula("Y")))])])
     self.assertEqual(Generalization("and", g1.cnf_action()), g2.cnf())
 def test_remove_every(self):
     g1 = Generalization("and", [
             self.f1, Formula("Z"), self.f2, Formula("Z")])
     exp1 = Generalization("and", [self.f1, self.f2])
     g2 = Generalization("and", [
             self.f1, Formula("Z"), self.f1, Formula("Z"), self.f2])
     exp2 = Generalization("and", [Formula("Z"), Formula("Z"), self.f2])
     g1.remove_every(Formula("Z"))
     self.assertEqual(exp1, g1)
 def test_remove_every_generalization(self):
     g1 = Generalization("and", [
             self.f1, Formula("Z"), self.f2, Formula("Z")])
     g2 = Generalization("and", [
             self.f1, Formula("Z"), g1, self.f1, Formula("Z"), self.f2, g1])
     exp = Generalization("and", [
             Formula("Z"), g1, Formula("Z"), self.f2, g1])
     g2.remove_every(self.f1)
     self.assertEqual(exp, g2)
Ejemplo n.º 7
0
 def test_is_closed(self):
     expansion1 = [
         Generalization("or", [self.a1, self.l1]),
         Generalization("or", [self.a2])
     ]
     expansion1 = [[False, disj] for disj in expansion1]
     expansion2 = [
         Generalization("or", [self.a1, self.l1]),
         Generalization("or", []),
         Generalization("or", [self.a2])
     ]
     expansion2 = [[False, disj] for disj in expansion2]
     self.assertFalse(resolution.is_closed(expansion1))
     self.assertTrue(resolution.is_closed(expansion2))
Ejemplo n.º 8
0
 def test_cnf(self):
     g1 = Generalization(
         "or", [Formula("&", Formula("X"), Formula("!", Formula("Y")))])
     g2 = Generalization("and", [
         Generalization(
             "or", [Formula("&", Formula("X"), Formula("!", Formula("Y")))])
     ])
     self.assertEqual(Generalization("and", g1.cnf_action()), g2.cnf())
Ejemplo n.º 9
0
 def test_has_non_literal(self):
     g1 = Generalization("and", [self.f1, Formula("Z"), self.f2])
     g2 = Generalization("or", [Formula("Z"), Formula("!", Formula("Y"))])
     g3 = Generalization("or", [])
     self.assertTrue(g1.has_non_literal)
     self.assertFalse(g3.has_non_literal())
     self.assertFalse(g2.has_non_literal())
Ejemplo n.º 10
0
 def test_cnf_wrong(self):
     g1 = Generalization("or", [Generalization("and", [self.f1, self.f2])])
     self.assertRaises(Exception, g1.cnf)
     g2 = Generalization("and", [self.f2])
     self.assertRaises(Exception, g2.cnf)
     g3 = Generalization("and", [Generalization("and", [self.f1, self.f2])])
     self.assertRaises(Exception, g3.cnf)
     g4 = Generalization("and", [Generalization("or", [self.f1, self.f2])])
     self.assertRaises(Exception, g4.cnf)
Ejemplo n.º 11
0
 def test_remove_every(self):
     g1 = Generalization(
         "and", [self.f1, Formula("Z"), self.f2,
                 Formula("Z")])
     exp1 = Generalization("and", [self.f1, self.f2])
     g2 = Generalization(
         "and",
         [self.f1, Formula("Z"), self.f1,
          Formula("Z"), self.f2])
     exp2 = Generalization("and", [Formula("Z"), Formula("Z"), self.f2])
     g1.remove_every(Formula("Z"))
     self.assertEqual(exp1, g1)
Ejemplo n.º 12
0
 def test_eq_ne(self):
     g1 = Generalization("and", [self.f1, self.f2])
     g12 = Generalization("and", [self.f1, self.f2])
     g13 = Generalization("and", [self.f1])
     g2 = Generalization("or", [self.f1, self.f2])
     g22 = Generalization("or", [self.f1, self.f2])
     g3 = Generalization("or", [g1])
     g32 = Generalization("or", [g1])
     g33 = Generalization("or", [g13])
     self.assertEqual(g1, g12)
     self.assertEqual(g2, g22)
     self.assertEqual(g3, g32)
     self.assertNotEqual(g1, g2)
     self.assertNotEqual(g1, g13)
     self.assertNotEqual(g2, g3)
     self.assertNotEqual(g3, g1)
Ejemplo n.º 13
0
 def test_expand(self):
     expansion1 = [[False, Generalization("or", [self.a2, self.l1])],
                   [False,
                    Generalization("or", [self.fand1, self.a1])],
                   [False,
                    Generalization("or", [self.fand1, self.for1])]]
     exp1 = [[True, Generalization("or", [self.a2, self.l1])],
             [False, Generalization("or", [self.fand1, self.a1])],
             [False, Generalization("or", [self.fand1, self.for1])],
             [False, Generalization("or", [self.a2, self.fand1])]]
     result = resolution.expand(expansion1)
     self.assertTrue(result)
     self.assertEqual(exp1, expansion1)
Ejemplo n.º 14
0
 def test_remove_every_generalization(self):
     g1 = Generalization(
         "and", [self.f1, Formula("Z"), self.f2,
                 Formula("Z")])
     g2 = Generalization(
         "and",
         [self.f1,
          Formula("Z"), g1, self.f1,
          Formula("Z"), self.f2, g1])
     exp = Generalization(
         "and",
         [Formula("Z"), g1, Formula("Z"), self.f2, g1])
     g2.remove_every(self.f1)
     self.assertEqual(exp, g2)
Ejemplo n.º 15
0
 def test_cnf_particular(self):
     # components
     p = Formula("P")
     np = Formula("!", p)
     q = Formula("Q")
     nq = Formula("!", q)
     r = Formula("R")
     # formulas
     f1s = "-(P-> (Q-> R)) -> ((P->Q) -> (P -> R))"
     f1 = parser.parse(f1s)
     f2s = "-(P&Q) -> R"
     f2 = parser.parse(f2s)
     # expected
     exp1 = Generalization("and", [
         Generalization("or", [np, nq, r, p, np, r]),
         Generalization("or", [np, nq, r, nq, np, r])
     ])
     exp2 = Generalization(
         "and",
         [Generalization("or", [p, r]),
          Generalization("or", [q, r])])
     # assertions
     self.assertEqual(exp1, f1.cnf())
     self.assertEqual(exp2, f2.cnf())
Ejemplo n.º 16
0
 def test_cnf_literal(self):
     exp = Generalization("and", [Generalization("or", [self.l1])])
     self.assertEqual(exp, self.l1.cnf())
Ejemplo n.º 17
0
 def test_cnf_alpha(self):
     exp = Generalization(
         "and",
         [Generalization("or", [self.a1]),
          Generalization("or", [self.a2])])
     self.assertEqual(exp, self.fand1.cnf())
 def test_get_non_literal_position(self):
     g1 = Generalization("and", [self.f1, Formula("Z"), self.f2])
     self.assertIs(0, g1.get_non_literal_position())
     g2 = Generalization("and", [Formula("Z"), self.f2])
     self.assertIs(1, g2.get_non_literal_position())
Ejemplo n.º 19
0
 def test_cnf_beta(self):
     exp = Generalization("and", [Generalization("or", [self.a1, self.a2])])
     self.assertEqual(exp, self.for1.cnf())
Ejemplo n.º 20
0
 def test_cnf_action_not_bottom(self):
     g1 = Generalization("or", [Formula("!", Formula("F"))])
     exp = [Generalization("or", [Formula("T")])]
     self.assertEqual(exp, g1.cnf_action())
 def test_cnf_action_beta(self):
     g1 = Generalization("or", [Formula("|", Formula("X"), Formula("Y"))])
     exp = [Generalization("or", [Formula("X"), Formula("Y")])]
     self.assertEqual(exp, g1.cnf_action())
Ejemplo n.º 22
0
 def test_cnf_not_bottom(self):
     formula = Formula("!", Formula("F"))
     exp = Generalization("and", [Generalization("or", [Formula("T")])])
     self.assertEqual(exp, formula.cnf())
Ejemplo n.º 23
0
 def test_get_non_literal_position(self):
     g1 = Generalization("and", [self.f1, Formula("Z"), self.f2])
     self.assertIs(0, g1.get_non_literal_position())
     g2 = Generalization("and", [Formula("Z"), self.f2])
     self.assertIs(1, g2.get_non_literal_position())
Ejemplo n.º 24
0
 def test_init_empty(self):
     gen = Generalization("or", [])
     self.assertEqual("or", gen.connective)
     self.assertEqual([], gen.list)
Ejemplo n.º 25
0
 def test_cnf_atomic(self):
     exp = Generalization("and", [Generalization("or", [self.a1])])
     self.assertEqual(exp, self.a1.cnf())
Ejemplo n.º 26
0
 def test_cnf_action_basis(self):
     g1 = Generalization(
         "or", [Formula("X"),
                Formula("Y"),
                Formula("!", Formula("X"))])
     self.assertEqual([g1], g1.cnf_action())
 def test_cnf_action_basis(self):
     g1 = Generalization("or", [Formula("X"), Formula("Y"),
                                Formula("!", Formula("X"))])
     self.assertEqual([g1], g1.cnf_action())
Ejemplo n.º 28
0
 def test_cnf_not_not(self):
     exp = Generalization("and", [Generalization("or", [self.a1])])
     self.assertEqual(exp, Formula("!", self.l1).cnf())
 def test_cnf_action_not_bottom(self):
     g1 = Generalization("or", [Formula("!", Formula("F"))])
     exp = [Generalization("or", [Formula("T")])]
     self.assertEqual(exp, g1.cnf_action())
Ejemplo n.º 30
0
 def test_str(self):
     exp = "< %s , %s >" % (str(self.f1), str(self.f2))
     self.assertEqual(exp, str(Generalization("&", [self.f1, self.f2])))
     exp2 = "[ %s , %s ]" % (str(self.f1), str(self.f2))
     self.assertEqual(exp2, str(Generalization("or", [self.f1, self.f2])))