예제 #1
0
        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);
        }
예제 #2
0
        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);
        }