static void Main(string[] args)
        {
            WriteLine("D4: {0}", D4);

            D4.ShowOperationTableColored();

            void check(GapPerm a, GapPerm b)
            {
                WriteLine("a    {0}", D4.Lookup(a));
                WriteLine("b    {0}", D4.Lookup(b));
                WriteLine("ba   {0}", D4.Lookup(b.Compose(a)));
                WriteLine("a³b  {0}", D4.Lookup(a.Compose(a.Compose(a.Compose(b)))));
            }

            check(R1, R4); WriteLine();
            check(R1, R5); WriteLine();
            check(R1, R6); WriteLine();
            check(R1, R7); WriteLine();

            WriteLine();

            D4.ShowCosets();
        }
Esempio n. 2
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();
        }