/// <summary>
        /// Implement the logical "exists" operation,
        /// recursively calling the manager if necessary.
        /// </summary>
        /// <param name="xid">The left index.</param>
        /// <param name="x">The left node.</param>
        /// <param name="variables">The variable set.</param>
        /// <returns>The resulting function.</returns>
        public DDIndex Exists(DDIndex xid, BDDNode x, VariableSet <BDDNode> variables)
        {
            var lo = this.Manager.Exists(x.Low, variables);
            var hi = this.Manager.Exists(x.High, variables);

            if (variables.Contains(x.Variable))
            {
                return(this.Manager.Or(lo, hi));
            }

            return(this.Manager.Allocate(new BDDNode(x.Variable, lo, hi)));
        }
 /// <summary>
 /// Implement the logical "exists" operation,
 /// recursively calling the manager if necessary.
 /// </summary>
 /// <param name="xid">The left index.</param>
 /// <param name="x">The left node.</param>
 /// <param name="variables">The variable set.</param>
 /// <returns>The resulting function.</returns>
 public DDIndex Exists(DDIndex xid, CBDDNode x, VariableSet <CBDDNode> variables)
 {
     throw new System.NotImplementedException();
 }