internal BDD(BDDAlgebra algebra, int ordinal, BDD one, BDD zero) { this.One = one; this.Zero = zero; this.Ordinal = ordinal; this.algebra = algebra; }
public BDD AsBDD(BDDAlgebra alg) { var res = alg.False; for (int i = 0; i < intervals.Length; i++) { res = res | alg.MkSetFromRange(intervals[i].Item1, intervals[i].Item2, 15); } return(res); }
public CsAlgebra(IBooleanAlgebra <T> leafAlgebra, ICounter[] counters) { this.counters = counters; this.LeafAlgebra = leafAlgebra; this.NodeAlgebra = new BDDAlgebra <T>(leafAlgebra); __false = new CsPred <T>(this, (BDD <T>)NodeAlgebra.False); __true = new CsPred <T>(this, (BDD <T>)NodeAlgebra.True); this.K = counters.Length; TrueCsConditionSeq = CsConditionSeq.MkTrue(counters.Length); FalseCsConditionSeq = CsConditionSeq.MkFalse(counters.Length); }
/// <summary> /// Creates a new partition refinement. /// </summary> /// <param name="domain">nonempty collection of nonnegative integers</param> /// <param name="maxState">must be the largest element in the domain</param> public PartitionRefinement(IEnumerable <int> domain, int maxState) { this.solver = new BDDAlgebra(); int elemsSetSize = maxState; while (elemsSetSize > 1) { elemsSetSize = (elemsSetSize >> 1); maxbit += 1; } initialPart = new Part(domain, solver, maxbit); foreach (var elem in domain) { elemToPart[elem] = initialPart; } parts.Add(initialPart); }
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); }
/// <summary> /// Constructs a new part with the given single element. /// </summary> internal Part(int element, BDDAlgebra solver, int maxbit) { this.solver = solver; this.maxbit = maxbit; elems = solver.MkSetFrom((uint)element, maxbit); }
/// <summary> /// Constructs a new part with the given elements. /// </summary> internal Part(IEnumerable <int> elements, BDDAlgebra solver, int maxbit) { this.solver = solver; this.maxbit = maxbit; elems = solver.MkSetFromElements(elements, maxbit); }
public CartesianAlgebraBDD(BDDAlgebra bddAlg, IBooleanAlgebra <T> nodeAlg) : base(bddAlg, nodeAlg) { }
public BDD ConvertToCharSet(BDDAlgebra alg, BDD pred) { return(pred); }