def test_interchangeable_contradiction_no_repeated_explanations(self): nafta = FactorGroup([ Statement( predicate="$country1 signed a treaty with $country2", terms=[Entity(name="Mexico"), Entity(name="USA")], ), Statement( predicate="$country2 signed a treaty with $country3", terms=[Entity(name="USA"), Entity(name="Canada")], ), Statement( predicate="$country3 signed a treaty with $country1", terms=[Entity(name="Canada"), Entity(name="Mexico")], ), ]) brexit = FactorGroup([ Statement( predicate="$country1 signed a treaty with $country2", terms=[Entity(name="UK"), Entity(name="European Union")], ), Statement( predicate="$country2 signed a treaty with $country3", terms=[Entity(name="European Union"), Entity(name="Germany")], ), Statement( predicate="$country3 signed a treaty with $country1", terms=[Entity(name="Germany"), Entity(name="UK")], truth=False, ), ]) assert nafta.contradicts(brexit) explanations_usa_like_uk = nafta.explanations_contradiction( brexit, context=([Entity(name="USA")], [Entity(name="UK")])) assert len(list(explanations_usa_like_uk)) == 2
def test_no_contradiction_of_none(self): group = FactorGroup([self.slower_general_statement, self.farm_statement]) assert not group.contradicts(None)
def test_group_contradicts_single_factor(self): group = FactorGroup([self.slower_specific_statement, self.farm_statement]) register = ContextRegister() register.insert_pair(Entity(name="the car"), Entity(name="the pickup")) assert group.contradicts(self.faster_statement, context=register)