Пример #1
0
        public CsPred <T> MkOr(IEnumerable <CsPred <T> > preds)
        {
            var bdd = (BDD <T>)NodeAlgebra.False;

            foreach (var pred in preds)
            {
                bdd = (BDD <T>)NodeAlgebra.MkOr((BDD)bdd, pred.pred);
                if (bdd.Equals(NodeAlgebra.True))
                {
                    return(__true);
                }
            }
            return(new CsPred <T>(this, bdd));
        }
Пример #2
0
        public BDD ConvertToCharSet(BDDAlgebra solver, BV pred)
        {
            BDD res = solver.False;

            if (!pred.Equals(this.zero))
            {
                for (int i = 0; i < atoms.Length; i++)
                {
                    //construct the union of the corresponding atoms
                    if (!(pred & atoms[i]).Equals(this.zero))
                    {
                        BDD bdd_i = partition[i].AsBDD(solver);
                        res = solver.MkOr(res, bdd_i);
                    }
                }
            }
            return(res);
        }
Пример #3
0
        //Part(BvSet set, BvSetSolver solver, int maxbit)
        //{
        //    this.elems = set;
        //    this.solver = solver;
        //    this.maxbit = maxbit;
        //}

        /// <summary>
        /// Add the element to this part.
        /// </summary>
        /// <param name="elem">element to be added</param>
        public void Add(int elem)
        {
            elems = solver.MkOr(elems, solver.MkSetFrom((uint)elem, maxbit));
        }