public Coset <T> Combine(Coset <T> H)
        {
            if (Group != H.Group)
            {
                throw new Exception();
            }

            return(new Coset <T>()
            {
                Group = Group,
                Element = Group.Op(Element, H.Element),
                Name = Name
            });
        }
        public bool Equals(Coset <T> obj)
        {
            if (ReferenceEquals(obj, null))
            {
                return(false);
            }
            if (ReferenceEquals(obj, this))
            {
                return(true);
            }

            if (obj.GetType() != GetType())
            {
                return(false);
            }

            return
                (Group.Set == obj.Group.Set
                 &&
                 Group.Op == obj.Group.Op
                 &&
                 Element.Equals(obj.Element));
        }