/// <summary> /// Deref all dd in dds /// </summary> /// <param name="dds"></param> public static void Deref(params List <CUDDNode>[] dds) { foreach (List <CUDDNode> dd in dds) { CUDD.Deref(dd); } }
/// <summary> /// Deref all dd in dds /// </summary> /// <param name="dds"></param> public static void Deref(List <CUDDNode> dds) { foreach (CUDDNode dd in dds) { CUDD.Deref(dd); } }
/// <summary> /// Deref all dd in dds /// </summary> /// <param name="dds"></param> public static void Deref(params CUDDNode[] dds) { foreach (CUDDNode dd in dds) { CUDD.Deref(dd); } }
/// <summary> /// list1, list 2 are 2 list of nodes. These nodes are Or-explicit /// Return (list1 and list2) /// [ REFS: 'result', DEREFS: dd1, dd2 ] /// </summary> public static List <CUDDNode> And(List <CUDDNode> list1, List <CUDDNode> list2) { List <CUDDNode> result = new List <CUDDNode>(); foreach (CUDDNode dd1 in list1) { foreach (CUDDNode dd2 in list2) { CUDD.Ref(dd1); CUDD.Ref(dd2); CUDDNode dd = CUDD.Function.And(dd1, dd2); if (!dd.Equals(CUDD.ZERO)) { result.Add(dd); } else { CUDD.Deref(dd); } } } CUDD.Deref(list1); CUDD.Deref(list2); // return(result); }
/// <summary> /// [ REFS: 'result', DEREFS: 'this'] /// </summary> /// <returns></returns> public CUDDNode GetElse() { CUDDNode result = CUDD.GetElse(this); CUDD.Ref(result); CUDD.Deref(this); return(result); }
/// <summary> /// Check whether subSet is a subset of set /// [ REFS: '', DEREFS: 'none' ] /// </summary> public static bool IsSubSet(CUDDNode set, CUDDNode subSet) { CUDD.Ref(subSet); CUDD.Ref(set); CUDDNode temp = CUDD.Function.And(subSet, set); bool result = temp.Equals(subSet); CUDD.Deref(temp); return(result); }
/// <summary> /// (dd && list[0]) || (dd && list[1]) ... /// [ REFS: 'result', DEREFS: dd, list ] /// </summary> /// <param name="dd"></param> /// <param name="list"></param> /// <returns></returns> public static CUDDNode And(CUDDNode dd, List <CUDDNode> list) { CUDDNode result = CUDD.Constant(0); foreach (CUDDNode dd1 in list) { CUDD.Ref(dd); CUDDNode temp = CUDD.Function.And(dd, dd1); result = CUDD.Function.Or(result, temp); } CUDD.Deref(dd); return(result); }
/// <summary> /// (dd && list[0]) || (dd && list[1]) ... /// [ REFS: 'result', DEREFS: dd, list ] /// </summary> /// <param name="dd"></param> /// <param name="list"></param> /// <returns></returns> public static List <CUDDNode> And(List <CUDDNode> list, CUDDNode dd) { List <CUDDNode> result = new List <CUDDNode>(); foreach (CUDDNode dd1 in list) { CUDD.Ref(dd); CUDDNode temp = CUDD.Function.And(dd, dd1); if (temp.Equals(CUDD.ZERO)) { CUDD.Deref(temp); } else { result.Add(temp); } } CUDD.Deref(dd); return(result); }
public void Deref() { CUDD.Deref(this.vars); }