public void TestTransversal() { int size = 4; // Sym(n) : make the total symmetry group PermutationGroup group = PermutationGroup.MakeSymN(size); // Aut(G) : make the automorphism group for a graph Permutation p1 = new Permutation(2, 1, 0, 3); Permutation p2 = new Permutation(0, 3, 2, 1); var generators = new List <Permutation> { p1, p2 }; PermutationGroup subgroup = new PermutationGroup(size, generators); // generate the traversal var transversal = group.Transversal(subgroup); int subgroupOrder = (int)subgroup.Order(); int groupOrder = (int)group.Order(); int transversalSize = transversal.Count; // check that |Aut(G)| / |Sym(N)| = |Transversal| Assert.AreEqual(Factorial(size), groupOrder); Assert.AreEqual(groupOrder / subgroupOrder, transversalSize); }