/// <summary>
        /// Create cycle group
        /// </summary>
        /// <param name="a"></param>
        public CycleGroup(GroupElement a)
        {
            generatrix = a;
            GroupElement e    = new GroupElement(0, "1");
            GroupElement temp = a;

            Elements.Add(a);
            while (temp != e)
            {
                temp *= a;
                Elements.Add(temp);
            }
            order = Elements.Count;
        }
        public static List <GroupElement> Subgroup(GroupElement g)
        {
            GroupElement        e   = new GroupElement(0, "1");
            List <GroupElement> res = new List <GroupElement>();

            res.Add(e);
            GroupElement temp = g;

            while (temp != e)
            {
                temp *= g;
                res.Add(temp);
            }
            return(res);
        }