//public class Test //{ // /// <summary> // /// Test the CUDD // /// </summary> // public static void Test1() // { // CUDDNode a, b, c; // CUDDVars vars; // Console.WriteLine("\nTest program for CUDD\n===================="); // // initialise cudd // CUDD.InitialiseCUDD(256, 256, 262144, 0.1); // // set up some variables // vars = new CUDDVars(); // vars.AddVar(CUDD.Var(0)); // vars.AddVar(CUDD.Var(2)); // // blank dd // a = CUDD.Create(); // Console.WriteLine("\nCreate()"); // CUDD.Print.PrintVector(a, vars); // CUDD.Deref(a); // // constant // a = CUDD.Constant(1.5); // Console.WriteLine("\nConstant(1.5)"); // CUDD.Print.PrintVector(a, vars); // CUDD.Deref(a); // // plus infinity // a = CUDD.PlusInfinity(); // Console.WriteLine("\nPlusInfinity()"); // CUDD.Print.PrintVector(a, vars); // CUDD.Deref(a); // // minus infinity // a = CUDD.MinusInfinity(); // Console.WriteLine("\nMinusInfinity()"); // CUDD.Print.PrintVector(a, vars); // CUDD.Deref(a); // // var // a = CUDD.Var(0); // Console.WriteLine("\nVar(0)"); // CUDD.Print.PrintVector(a, vars); // CUDD.Deref(a); // a = CUDD.Var(0); // b = CUDD.Var(2); // Console.Write("\na: "); // CUDD.Print.PrintVector(a, vars); // Console.Write("b: "); // CUDD.Print.PrintVector(b, vars); // // not // CUDD.Ref(a); // c = CUDD.Function.Not(a); // Console.WriteLine("\nNot(a)"); // CUDD.Print.PrintVector(c, vars); // CUDD.Deref(c); // // or // CUDD.Ref(a); // CUDD.Ref(b); // c = CUDD.Function.Or(a, b); // Console.WriteLine("\nOr(a, b)"); // CUDD.Print.PrintVector(c, vars); // CUDD.Deref(c); // // and // CUDD.Ref(a); // CUDD.Ref(b); // c = CUDD.Function.And(a, b); // Console.WriteLine("\nAnd(a, b)"); // CUDD.Print.PrintVector(c, vars); // CUDD.Deref(c); // // xor // CUDD.Ref(a); // CUDD.Ref(b); // c = CUDD.Function.Xor(a, b); // Console.WriteLine("\nXor(a, b)"); // CUDD.Print.PrintVector(c, vars); // CUDD.Deref(c); // // implies // CUDD.Ref(a); // CUDD.Ref(b); // c = CUDD.Function.Implies(a, b); // Console.WriteLine("\nImplies(a, b)"); // CUDD.Print.PrintVector(c, vars); // CUDD.Deref(c); // CUDD.Deref(a); // CUDD.Deref(b); // a = CUDD.Create(); // a = CUDD.Matrix.SetVectorElement(a, vars, 0, 1); // a = CUDD.Matrix.SetVectorElement(a, vars, 1, 2); // a = CUDD.Matrix.SetVectorElement(a, vars, 2, 3); // a = CUDD.Matrix.SetVectorElement(a, vars, 3, 4); // b = CUDD.Create(); // b = CUDD.Matrix.SetVectorElement(b, vars, 0, 0); // b = CUDD.Matrix.SetVectorElement(b, vars, 1, 2); // b = CUDD.Matrix.SetVectorElement(b, vars, 2, 4); // b = CUDD.Matrix.SetVectorElement(b, vars, 3, 6); // Console.Write("\na: "); // CUDD.Print.PrintVector(a, vars); // Console.Write("b: "); // CUDD.Print.PrintVector(b, vars); // // apply // CUDD.Ref(a); // CUDD.Ref(b); // c = CUDD.Function.Plus(a, b); // Console.WriteLine("\nApply(+, a, b)"); // CUDD.Print.PrintVector(c, vars); // CUDD.Deref(c); // CUDD.Ref(a); // CUDD.Ref(b); // c = CUDD.Function.Minus(a, b); // Console.WriteLine("\nApply(-, a, b)"); // CUDD.Print.PrintVector(c, vars); // CUDD.Deref(c); // CUDD.Ref(a); // CUDD.Ref(b); // c = CUDD.Function.Times(a, b); // Console.WriteLine("\nApply(*, a, b)"); // CUDD.Print.PrintVector(c, vars); // CUDD.Deref(c); // CUDD.Ref(a); // CUDD.Ref(b); // c = CUDD.Function.Divide(a, b); // Console.WriteLine("\nApply(/, a, b)"); // CUDD.Print.PrintVector(c, vars); // CUDD.Deref(c); // CUDD.Deref(a); // CUDD.Deref(b); // // dereference variables // vars.Deref(); // // close down cudd // CUDD.CloseDownCUDD(); // Console.WriteLine(); // } //} /// <summary> /// Check whether a node is a constant /// </summary> public static bool IsConstant(CUDDNode dd) { return(PlatformInvoke.DDN_IsConstant(dd.Ptr) == 1); }