/// <summary>
        /// Or operation of two Zen List of bool.
        /// </summary>
        /// <param name="ma">list a.</param>
        /// <param name="mb">list b.</param>
        /// <returns>list of a or b.</returns>
        public static Zen <IList <bool> > Or(this Zen <IList <bool> > ma, Zen <IList <bool> > mb)
        {
            var index = mb.Length();
            var ret   = ma.Select(_ => Language.Or(ma.At(index -= 1).Value(), mb.At(index).Value()));

            return(ret);
        }
        /// <summary>
        /// Not operation of one Zen List of bool.
        /// </summary>
        /// <param name="ma">list a.</param>
        /// <returns>!a.</returns>
        public static Zen <IList <bool> > Not(this Zen <IList <bool> > ma)
        {
            var ret = ma.Select(r => Language.Not(r));

            return(ret);
        }