List <Interval> GetIntervalsList()
        {
            List <Interval> intervals    = new List <Interval>();
            List <string>   intervalsStr = new List <string>();

            intervalsStr = IntervalString.Split('U').ToList();
            foreach (var interStr in intervalsStr)
            {
                intervals.Add(Interval.Parse(interStr));
            }

            return(intervals);
        }
        internal Intervals Subs(Function func)
        {
            List <string>   intervalsStr;
            List <Interval> intervals = new List <Interval>();

            if (func.Argument.Power == 1)
            {
                intervalsStr = IntervalString.Split('U').ToList();

                foreach (var interStr in intervalsStr)
                {
                    intervals.Add(Interval.Parse(interStr));
                }

                foreach (var interval in intervals)
                {
                    if (!interval.IsInfinityInterval)
                    {
                        Fraction leftBorder  = func.Eq(interval.LeftBorder);
                        Fraction rightBorder = func.Eq(interval.RightBorder);
                        interval.ChangeBorders(leftBorder, rightBorder);
                    }
                    else
                    {
                        Fraction border = func.Eq(interval.Border);
                        interval.ChangeBorderForInfinity(border);
                    }
                }
            }

            Intervals newIntervals = new Intervals(intervals);
            Intervals endInterval;

            if (func.ValuesRange != null)
            {
                endInterval = newIntervals * func.ValuesRange;
            }
            else
            {
                endInterval = newIntervals;
            }

            return(endInterval);
        }