/// <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(); }