Ejemplo n.º 1
0
 internal BDD(BDDAlgebra algebra, int ordinal, BDD one, BDD zero)
 {
     this.One     = one;
     this.Zero    = zero;
     this.Ordinal = ordinal;
     this.algebra = algebra;
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 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);
 }
Ejemplo n.º 4
0
        /// <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);
        }
Ejemplo n.º 5
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);
        }
Ejemplo n.º 6
0
 /// <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);
 }
Ejemplo n.º 7
0
 /// <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);
 }
Ejemplo n.º 8
0
 public CartesianAlgebraBDD(BDDAlgebra bddAlg, IBooleanAlgebra <T> nodeAlg) :
     base(bddAlg, nodeAlg)
 {
 }
Ejemplo n.º 9
0
 public BDD ConvertToCharSet(BDDAlgebra alg, BDD pred)
 {
     return(pred);
 }