def test_attributes(self): # Check FpSemigroupInterface general attributes check_attributes(self, KnuthBendix) # Check KnuthBendix specific attributes ReportGuard(False) kb = KnuthBendix() kb.set_alphabet("abB") kb.set_identity("") kb.set_inverses("aBb") kb.add_rule("bb", "B") kb.add_rule("BaBa", "abab") self.assertFalse(kb.confluent()) kb.run() self.assertTrue(kb.confluent()) self.assertEqual( kb.active_rules(), [ ["BB", "b"], ["Bb", ""], ["aa", ""], ["bB", ""], ["bb", "B"], ["BaBa", "abab"], ["baba", "aBaB"], ["BabaB", "baBab"], ["Babab", "baBa"], ["baBaB", "Baba"], ["baBaba", "abaBab"], ], ) self.assertEqual(kb.nr_active_rules(), 11)
def test_initialisation(self): check_initialisation(self, KnuthBendix) kb = KnuthBendix() kb.set_alphabet("abB") kb.set_identity("") kb.set_inverses("aBb") kb.add_rule("bb", "B") kb.add_rule("BaBa", "abab") self.assertEqual(kb.size(), 24)
def test_settings(self): ReportGuard(False) kb = KnuthBendix() kb.set_alphabet("abB") kb.set_identity("") kb.set_inverses("aBb") kb.add_rule("bb", "B") kb.add_rule("BaBa", "abab") self.assertEqual(kb.check_confluence_interval(10), kb) self.assertEqual(kb.max_overlap(10), kb) with self.assertRaises(ValueError): kb.max_overlap(-10) kb = KnuthBendix() kb.set_alphabet("abc") kb.add_rule("aa", "") kb.add_rule("bc", "") kb.add_rule("bbb", "") kb.add_rule("ababababababab", "") kb.add_rule("abacabacabacabacabacabacabacabac", "") kb.max_rules(100) kb.run() self.assertGreaterEqual(kb.nr_active_rules(), 100) self.assertEqual(kb.overlap_policy("ABC"), kb) self.assertEqual(kb.overlap_policy("AB_BC"), kb) self.assertEqual(kb.overlap_policy("MAX_AB_BC"), kb) with self.assertRaises(TypeError): kb.overlap_policy(-10) with self.assertRaises(ValueError): kb.overlap_policy("AVC")