Exemplo n.º 1
0
 /// <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);
     }
 }
Exemplo n.º 2
0
 /// <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);
     }
 }
Exemplo n.º 3
0
 /// <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);
     }
 }
Exemplo n.º 4
0
            /// <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);
            }
Exemplo n.º 5
0
        /// <summary>
        /// [ REFS: 'result', DEREFS: 'this']
        /// </summary>
        /// <returns></returns>
        public CUDDNode GetElse()
        {
            CUDDNode result = CUDD.GetElse(this);

            CUDD.Ref(result);
            CUDD.Deref(this);
            return(result);
        }
Exemplo n.º 6
0
        /// <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);
        }
Exemplo n.º 7
0
            /// <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);
            }
Exemplo n.º 8
0
            /// <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);
            }
Exemplo n.º 9
0
 public void Deref()
 {
     CUDD.Deref(this.vars);
 }