Ejemplo n.º 1
0
        /// <summary>
        /// Disjoins the current side constraint with constr
        /// </summary>
        /// <param name="constr"></param>
        /// <param name="context"></param>
        public void ExtendSideConstraint(int index, Z3BoolExpr constr, Z3Context context)
        {
            Z3BoolExpr crntConstr;

            if (SideConstraints.TryFindValue(index, out crntConstr))
            {
                SideConstraints[index] = context.MkOr(crntConstr, constr);
            }
            else
            {
                SideConstraints.Add(index, constr);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Removes all constraints introduced at or after index.
        /// </summary>
        /// <param name="index"></param>
        public void ContractSideConstraint(int index)
        {
            var deleteList = new LinkedList <int>();

            foreach (var kv in SideConstraints.GetEnumerable(index))
            {
                deleteList.AddLast(kv.Key);
            }

            foreach (var k in deleteList)
            {
                SideConstraints.Remove(k);
            }
        }