コード例 #1
0
        public void IdentityIsNormalSubgroup()
        {
            IGroup group = new SymmetricGroup(3);
            IGroup id    = new GeneratedGroup(Element.CreateIdentity(3));

            Assert.IsTrue(GroupUtilities.IsNormalSubgroup(id, group));
        }
コード例 #2
0
        public void GetSubnormalGroups()
        {
            IGroup group = new SymmetricGroup(3);
            IEnumerable <IGroup> normalsg = GroupUtilities.GetNormalSubgroups(group);

            Assert.IsTrue(normalsg.Count() >= 2);
        }
コード例 #3
0
        public void GetSubnormalGroups()
        {
            IGroup group = new SymmetricGroup(3);
            IEnumerable<IGroup> normalsg = GroupUtilities.GetNormalSubgroups(group);

            Assert.IsTrue(normalsg.Count() >= 2);
        }
コード例 #4
0
 public void SymmetricAreNotCyclic()
 {
     for (int k = 3; k <= 5; k++)
     {
         IGroup group = new SymmetricGroup(k);
         Assert.IsFalse(GroupUtilities.IsCyclic(group));
     }
 }
コード例 #5
0
        public void MultiplyBeIdempotent()
        {
            IGroup group = new SymmetricGroup(3);

            IGroup group2 = GroupUtilities.Multiply(group, group);

            Assert.AreEqual(group.Order, group2.Order);
        }
コード例 #6
0
        public void GroupAndIdentityAreSubnormalGroups()
        {
            IGroup group = new SymmetricGroup(3);
            IGroup id    = new GeneratedGroup(Element.CreateIdentity(3));

            GroupUtilities.IsNormalSubgroup(group, group);
            GroupUtilities.IsNormalSubgroup(id, group);
        }
コード例 #7
0
        public void GetSubgroupsOfSymetricGroupThree()
        {
            IGroup group = new SymmetricGroup(3);

            IEnumerable<IGroup> subgroups = GroupUtilities.GetSubgroups(group);

            Assert.IsNotNull(subgroups);
            Assert.AreEqual(6, subgroups.Count());
        }
コード例 #8
0
        public void GetSubgroupsOfMinimalGroup()
        {
            IGroup group = new SymmetricGroup(2);

            IEnumerable<IGroup> subgroups = GroupUtilities.GetSubgroups(group);

            Assert.IsNotNull(subgroups);
            Assert.AreEqual(2, subgroups.Count());
        }
コード例 #9
0
        public void SymetricGroupSizeFourAreEqualToSymetrycGroup()
        {
            GeneratedGroup group = new GeneratedGroup(Element.CreateSwap(4), Element.CreateRotation(4));
            SymmetricGroup group2 = new SymmetricGroup(4);

            Assert.AreEqual(group.Order, group2.Order);
            Assert.AreEqual(group.GetHashCode(), group2.GetHashCode());
            Assert.AreEqual(group, group2);
        }
コード例 #10
0
        public void GetSubgroupsOfMinimalGroup()
        {
            IGroup group = new SymmetricGroup(2);

            IEnumerable <IGroup> subgroups = GroupUtilities.GetSubgroups(group);

            Assert.IsNotNull(subgroups);
            Assert.AreEqual(2, subgroups.Count());
        }
コード例 #11
0
        public void GetSubgroupsOfSymetricGroupFour()
        {
            IGroup group = new SymmetricGroup(4);

            IEnumerable <IGroup> subgroups = GroupUtilities.GetSubgroups(group);

            Assert.IsNotNull(subgroups);
            Assert.AreEqual(30, subgroups.Count());
        }
コード例 #12
0
        public void SymetricGroupSizeFourAreEqualToSymetrycGroup()
        {
            GeneratedGroup group  = new GeneratedGroup(Element.CreateSwap(4), Element.CreateRotation(4));
            SymmetricGroup group2 = new SymmetricGroup(4);

            Assert.AreEqual(group.Order, group2.Order);
            Assert.AreEqual(group.GetHashCode(), group2.GetHashCode());
            Assert.AreEqual(group, group2);
        }
コード例 #13
0
        public void SubgroupsIncludesIdentityAndTotalGroup()
        {
            IGroup group = new SymmetricGroup(3);
            IGroup id    = new GeneratedGroup(Element.CreateIdentity(3));

            IEnumerable <IGroup> subgroups = GroupUtilities.GetSubgroups(group);

            Assert.IsTrue(subgroups.Contains(id));
            Assert.IsTrue(subgroups.Contains(group));
        }
コード例 #14
0
        public void CalculateSymmetricGroupTable()
        {
            IGroup group = new SymmetricGroup(3);

            OperationTable table = new OperationTable(group.Elements);

            table.Calculate();

            foreach (IElement left in group.Elements)
                foreach (IElement right in group.Elements)
                    Assert.AreEqual(left.Multiply(right), table.GetValue(left, right));
        }
コード例 #15
0
        public void MultiplyGenerateSymmetricGroup()
        {
            IGroup group1 = new GeneratedGroup(Element.CreateRotation(4));
            IGroup group2 = new GeneratedGroup(Element.CreateSwap(4));

            IGroup group3 = GroupUtilities.Multiply(group1, group2);

            Assert.AreEqual(24, group3.Order);

            IGroup symm = new SymmetricGroup(4);

            Assert.IsTrue(GroupUtilities.AreEqual(group3, symm));
            Assert.IsTrue(group3.Equals(symm));
        }
コード例 #16
0
ファイル: CyclicGroupTest.cs プロジェクト: miniBill/Hasse
        private static void TestSn(uint size, int count, string expectedElements, string expectedSubgroups)
        {
            var @group = new SymmetricGroup(size);

            Assert.AreEqual(count, @group.Count());

            var builder = new StringBuilder();
            @group.ForEach(element => builder.Append(element).Append('\n'));
            Assert.AreEqual(expectedElements, builder.ToString());

            builder.Clear();
            var gen = GeneratorFactory.Create(@group);
            gen.Generate().OrderBy(subgroup => subgroup.Order).ForEach(subgroup => builder.Append(subgroup).Append('\n'));
            Assert.AreEqual(expectedSubgroups, builder.ToString());
        }
コード例 #17
0
        public void CalculateSymmetricGroupTable()
        {
            IGroup group = new SymmetricGroup(3);

            OperationTable table = new OperationTable(group.Elements);

            table.Calculate();

            foreach (IElement left in group.Elements)
            {
                foreach (IElement right in group.Elements)
                {
                    Assert.AreEqual(left.Multiply(right), table.GetValue(left, right));
                }
            }
        }
コード例 #18
0
        public void GroupIsNormalSubgroup()
        {
            IGroup group = new SymmetricGroup(3);

            Assert.IsTrue(GroupUtilities.IsNormalSubgroup(group, group));
        }
コード例 #19
0
        public void MultiplyBeIdempotent()
        {
            IGroup group = new SymmetricGroup(3);

            IGroup group2 = GroupUtilities.Multiply(group, group);

            Assert.AreEqual(group.Order, group2.Order);
        }
コード例 #20
0
        public void MultiplyGenerateSymmetricGroup()
        {
            IGroup group1 = new GeneratedGroup(Element.CreateRotation(4));
            IGroup group2 = new GeneratedGroup(Element.CreateSwap(4));

            IGroup group3 = GroupUtilities.Multiply(group1, group2);

            Assert.AreEqual(24, group3.Order);

            IGroup symm = new SymmetricGroup(4);

            Assert.IsTrue(GroupUtilities.AreEqual(group3, symm));
            Assert.IsTrue(group3.Equals(symm));
        }
コード例 #21
0
        public void SubgroupsIncludesIdentityAndTotalGroup()
        {
            IGroup group = new SymmetricGroup(3);
            IGroup id = new GeneratedGroup(Element.CreateIdentity(3));

            IEnumerable<IGroup> subgroups = GroupUtilities.GetSubgroups(group);
            Assert.IsTrue(subgroups.Contains(id));
            Assert.IsTrue(subgroups.Contains(group));
        }
コード例 #22
0
        public void GroupIsNormalSubgroup()
        {
            IGroup group = new SymmetricGroup(3);

            Assert.IsTrue(GroupUtilities.IsNormalSubgroup(group, group));
        }
コード例 #23
0
 public void SymmetricAreNotCyclic()
 {
     for (int k = 3; k <= 5; k++)
     {
         IGroup group = new SymmetricGroup(k);
         Assert.IsFalse(GroupUtilities.IsCyclic(group));
     }
 }
コード例 #24
0
        public void GroupAndIdentityAreSubnormalGroups()
        {
            IGroup group = new SymmetricGroup(3);
            IGroup id = new GeneratedGroup(Element.CreateIdentity(3));

            GroupUtilities.IsNormalSubgroup(group, group);
            GroupUtilities.IsNormalSubgroup(id, group);
        }
コード例 #25
0
        public void IdentityIsNormalSubgroup()
        {
            IGroup group = new SymmetricGroup(3);
            IGroup id = new GeneratedGroup(Element.CreateIdentity(3));

            Assert.IsTrue(GroupUtilities.IsNormalSubgroup(id, group));
        }