Beispiel #1
0
        public static Z3IntExpr BV2Int(this Z3BVExpr expr1, Z3Context context)
        {
            var size   = expr1.SortSize;
            var parts  = new Z3IntExpr[size];
            var zero   = context.MkInt(0);
            var bvzero = context.MkBV(0, 1);

            for (uint i = 0; i < size; ++i)
            {
                parts[i] = (Z3IntExpr)expr1.Index(context, i).Eq(context, bvzero).Ite(
                    context,
                    zero,
                    context.MkInt(BigInteger.Pow(2, (int)i).ToString()));
            }

            return((Z3IntExpr)context.MkAdd(parts));
        }
Beispiel #2
0
 public static Z3ArithExpr Add(this Z3ArithExpr expr1, Z3Context context, Z3ArithExpr expr2)
 {
     Contract.Requires(expr1 != null && expr2 != null);
     return(context.MkAdd(expr1, expr2));
 }