Example #1
0
        static void Main(string[] args)
        {
            WriteLine("D4: {0}\n", D4); D4.ShowOperationTableColored(); WriteLine();

            foreach (var N in D4.NormalProperSubgroups())
            {
                WriteLine("normal subgroup:   N = {0}", N);
            }

            WriteLine();

            foreach (var N in D4.NormalProperSubgroups())
            {
                WriteLine("normal subgroup:   N = {0}", N);

                var D4_N = D4.QuotientGroup(N, "N");

                WriteLine("    quotient group:   D4/N = {0}", D4_N);;

                WriteLine("    isomorphic image: {0}", D4_N.IsomorphicImage());

                WriteLine("        homomorphisms:");

                foreach (var f in D4.GenerateHomomorphisms(D4_N))
                {
                    WriteLine("            {0}", String.Join(" ", D4.Set.Select(elt => (D4.Lookup(elt), f(elt)))));
                }

                // HomomorphismToString(G, f)

                WriteLine();

                D4_N.ShowOperationTableColored();

                WriteLine();
            }

            ZxZ(2, 2).ShowOperationTableColored();
        }
        static void Main(string[] args)
        {
            WriteLine("normal subgroups: \n");

            foreach (var elt in D4.NormalSubgroups())
            {
                WriteLine("    {0}", elt);
            }

            WriteLine("----------------------------------------------------------------------");

            foreach (var H in D4.NormalSubgroups())
            {
                WriteLine("normal subgroup: H = {0}", H);

                WriteLine("  coset grouping:");

                foreach (var elt in D4.CosetGrouping(H, "H"))
                {
                    WriteLine("    each of these: {0}   are equal to:   {1}", elt.ToMathSet(), elt.Key.ConvertAll(D4.Lookup));
                }

                WriteLine("  quotient group: D4/H = {0}\n", D4.QuotientGroup(H));

                D4.QuotientGroup(H).ShowOperationTableColored();

                WriteLine("----------------------------------------------------------------------");
            }

            WriteLine("NORMAL SUBGROUP                    QUOTIENT GROUP");

            foreach (var H in D4.NormalSubgroups())
            {
                WriteLine("H = {0,-30} D4/H = {1}", H, D4.QuotientGroup(H));
            }
        }