public override int CompareTo(PDLSet set)
        {
            var pp = set as PDLPredSet;

            if (pp != null)
            {
                return(pred.CompareTo(pp.pred));
            }
            return(name.CompareTo(set.name));
        }
        public override int CompareTo(PDLSet set)
        {
            var pp = set as PDLSetCmpPos;

            if (pp != null && name == set.name)
            {
                return(pos.CompareTo(pp.pos));
            }
            return(name.CompareTo(set.name));
        }
        public override int CompareTo(PDLSet set)
        {
            var pp = set as PDLIndicesOf;

            if (pp != null)
            {
                return(str.CompareTo(pp.str));
            }
            return(name.CompareTo(set.name));
        }
        public override int CompareTo(PDLSet set)
        {
            var pp = set as PDLSetVar;

            if (pp != null)
            {
                return(var.CompareTo(pp.var));
            }

            return(name.CompareTo(set.name));
        }
 public override int CompareTo(PDLSet set)
 {
     return(name.CompareTo(set.name));
 }
        public abstract MSOFormula Contains(FreshGen fg, string v);       // FO variable v

        public abstract int CompareTo(PDLSet set);