def test_schreier_sims_algorithm_fixed_base(self): cf =Permutation.read_cycle_form a = cf([[1, 2]],4) b = cf([[1,2,3,4]], 4) c = cf([[2, 3, 4]], 4) d = cf([[2, 3], [1,4]], 4) e = cf([], 4) info = schreier_sims_algorithm_fixed_base([], [1,2,3,4], e) self.assertEquals(info, ([],[],[],[])) info = schreier_sims_algorithm_fixed_base([e,e,e,e], [1,2,3,4], e) self.assertEquals(info, ([],[],[],[])) base, gens, c_gens, graphs = schreier_sims_algorithm_fixed_base([a,b], [4,3], e) self.assertEquals(len(base), 3) self.assertEquals(base[:2], [4,3]) base, gens, c_gens, graphs = schreier_sims_algorithm_fixed_base([c,d], [4,1], e) self.assertEquals(base[:2], [4,1]) siftee = membership_siftee(a, graphs, base, e) self.assertNotEqual(siftee, e) siftee = membership_siftee(cf([[1,2,3]],4), graphs, base, e) self.assertEqual(siftee, e) base, gens, c_gens, graphs = schreier_sims_algorithm_fixed_base([c], [1,2,3,4], e) self.assertEquals(base[:2], [1,2]) siftee = membership_siftee(a, graphs, base, e) self.assertNotEqual(siftee, e) siftee = membership_siftee(cf([[2,4,3]],4), graphs, base, e) self.assertEqual(siftee, e)
def test_naive_schreier_sims_algorithm(self): cf =Permutation.read_cycle_form a = cf([[1, 2]],4) b = cf([[1,2,3,4]], 4) c = cf([[2, 3, 4]], 4) d = cf([[2, 3],[1,4]], 4) e = cf([], 4) info = naive_schreier_sims_algorithm([], e) self.assertEquals(info, ([],[],[],[])) info = naive_schreier_sims_algorithm([e,e,e,e], e) self.assertEquals(info, ([],[],[],[])) base, gens, c_gens, graphs = naive_schreier_sims_algorithm([c,d], e) self.assertEquals(len(base), 2) siftee = membership_siftee(a, graphs, base, e) self.assertNotEqual(siftee, e) siftee = membership_siftee(cf([[1,2,3]],4), graphs, base, e) self.assertEqual(siftee, e)
def __contains__(self, key): return self.identity == schreier_sims_tools.membership_siftee( key, self.schreier_graphs, self.base, self.identity )