def testMultiplicationOfElements(self): a = Element.word("a"); b = Element.word("b"); actual = a * b self.assertEquals(Element.word("ab"), actual)
def testCommutate(self): a = Element.word("a") b = Element.word("b") actual = a.commutate(b) self.assertEquals(Element.word("aba^-1b^-1"), actual)
def testSolution(self): for n in range(1,2): word = Solver().solve(n) letterCount = 0 for letter in word.letters(): letterCount += 1 self.assertEquals(Element.word(""), word.remove(letter)) self.assertEquals(n, letterCount)
def solve(self, n): if (n == 1): self.index += 1 return Element.word(string.letters[self.index]) else: floor = n / 2 ceil = n - floor a = self.solve(ceil) b = self.solve(floor) return a * b.inverse() * a.inverse() * b
def testCreationOfElement(self): self.assertNotEqual(None, Element.word("a"))
def testRemoval(self): element = Element.word("aba^-1b^-1"); actual = element.remove('a') self.assertEquals(Element.word(""), actual)
def testNormalisation(self): element = Element.word("ab^2b^-2a^-1"); actual = element * element.inverse() self.assertEquals(Element.word(""), actual)
def testInverseOfElements(self): element = Element.word("a^2b^-1"); actual = element.inverse() self.assertEquals(Element.word("ba^-2"), actual)
def over(*generators): return FreeGroup([Element.word(g) for g in generators])
def testGeneratorAccess(self): self.assertEquals(Element.word("a"), self.group[0]) self.assertEquals(Element.word("b"), self.group[1])