def test_derivable_with_empty_body_rules(self):
     baba = ExampleFrameworks.cow_framework()
     self.assertTrue(Semantics.derivable(baba, ExampleFrameworks.HOC, []))
     self.assertFalse(
         Semantics.derivable(baba, ExampleFrameworks.not_HOC, []))
     self.assertTrue(
         Semantics.derivable(baba, ExampleFrameworks.not_FM,
                             [ExampleFrameworks.not_FM]))
     self.assertFalse(
         Semantics.derivable(baba, ExampleFrameworks.FM,
                             [ExampleFrameworks.not_FM]))
    def test_valid_cow_framework_probabilities(self):
        baba = ExampleFrameworks.cow_framework()
        self.assertAlmostEqual(
            0.18,
            Semantics.semantic_probability(Semantics.GROUNDED, baba,
                                           [ExampleFrameworks.HP]))

        baba = ExampleFrameworks.conditional_cow_framework()
        self.assertAlmostEqual(
            0.02,
            baba.BN.p_world([
                ExampleFrameworks.cond_JN, ExampleFrameworks.JF,
                ExampleFrameworks.CM
            ]))
        self.assertAlmostEqual(
            0.72,
            Semantics.semantic_probability(Semantics.GROUNDED, baba,
                                           [ExampleFrameworks.HP]))
 def test_defends_with_empty_body_rules(self):
     baba = ExampleFrameworks.cow_framework()
     self.assertFalse(Semantics.defends(baba, [],
                                        ExampleFrameworks.not_HOC))
     self.assertTrue(Semantics.defends(baba, [], ExampleFrameworks.not_FM))