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