private static IList <IGroup> GetGroupsOfOrder(int order) { IList <IElement> elements = new List <IElement>(); for (int k = 0; k < order; k++) { elements.Add(new NamedElement(k)); } OperationTable table = new OperationTable(elements, true); IList <OperationTable> solutions = table.GetSolutions().ToList(); foreach (OperationTable solution in solutions) { Assert.IsTrue(solution.HasIdentity); Assert.IsTrue(solution.IsAssociative); Assert.IsTrue(solution.IsClosed); } IList <IGroup> groups = new List <IGroup>(); foreach (OperationTable ot in solutions) { groups.Add(new TableGroup(ot)); } IList <IGroup> dgroups = GroupUtilities.GetNonIsomorphic(groups); return(dgroups); }
public void GetGroupsOfOrderFour() { NamedElement identity = new NamedElement('e'); NamedElement aelement = new NamedElement('a'); NamedElement belement = new NamedElement('b'); NamedElement celement = new NamedElement('c'); OperationTable table = new OperationTable(new List <IElement>() { identity, aelement, belement, celement }, true); IList <OperationTable> solutions = table.GetSolutions().ToList(); Assert.IsNotNull(solutions); Assert.AreEqual(4, solutions.Count); foreach (OperationTable solution in solutions) { Assert.IsTrue(solution.IsClosed); Assert.IsTrue(solution.IsCommutative); } IList <IGroup> groups = new List <IGroup>(); foreach (OperationTable ot in solutions) { groups.Add(new TableGroup(ot)); } IList <IGroup> dgroups = GroupUtilities.GetNonIsomorphic(groups); Assert.IsNotNull(dgroups); Assert.AreEqual(2, dgroups.Count); }