当前位置: 首页>>代码示例>>Java>>正文


Java IntExpr类代码示例

本文整理汇总了Java中com.microsoft.z3.IntExpr的典型用法代码示例。如果您正苦于以下问题:Java IntExpr类的具体用法?Java IntExpr怎么用?Java IntExpr使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


IntExpr类属于com.microsoft.z3包,在下文中一共展示了IntExpr类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: makeIntegerCast

import com.microsoft.z3.IntExpr; //导入依赖的package包/类
private <F,T,TT extends Type<T>>
Expr makeIntegerCast(IntExpr castedExpr, IntegerType<F> from, TT to) throws Z3Exception {
  try {
    if(to instanceof BVIntegerType) {
      BVIntegerType<?> bvTo = (BVIntegerType<?>)to;
      return ctx.mkInt2BV(bvTo.getNumBits(), castedExpr);
    }
    if(to instanceof IntegerType) {
      Expr tmp = castedExpr;
      castedExpr = null; // prevent disposal
      return tmp;
    }
    if(to instanceof NumericType) {
      return ctx.mkInt2Real(castedExpr);
    }
    throw new IllegalStateException("Cannot handle integer cast to " + to);
  }
  finally {
    safeDispose(castedExpr);
  }
}
 
开发者ID:psycopaths,项目名称:jconstraints-z3,代码行数:22,代码来源:NativeZ3ExpressionGenerator.java

示例2: makeArithmeticNumericCompound

import com.microsoft.z3.IntExpr; //导入依赖的package包/类
private Expr makeArithmeticNumericCompound(NumericOperator op, ArithExpr left, ArithExpr right) throws Z3Exception {
  switch(op) {
  case PLUS:
    return ctx.mkAdd(left, right);
  case MINUS:
    return ctx.mkSub(left, right);
  case MUL:
    return ctx.mkMul(left, right);
  case DIV:
    return ctx.mkDiv(left, right);
  case REM:
    if(left instanceof IntExpr && right instanceof IntExpr)
      return ctx.mkRem((IntExpr)left, (IntExpr)right);
    return makeRealRemainder(left, right);
  default:
    throw new IllegalArgumentException("Cannot handle numeric operator " + op);
  }
}
 
开发者ID:psycopaths,项目名称:jconstraints-z3,代码行数:19,代码来源:NativeZ3ExpressionGenerator.java

示例3: equals

import com.microsoft.z3.IntExpr; //导入依赖的package包/类
public boolean equals(BinopExpr expr1, BinopExpr expr2){
	BoolExpr z3Formula1 = generate(expr1);
	BoolExpr z3Formula2 = generate(expr2);
	BoolExpr z3Formula = null;;
	try {
		BoolExpr lhs = ctx.MkImplies(z3Formula1, z3Formula2);
		BoolExpr rhs = ctx.MkImplies(z3Formula2, z3Formula1);
		z3Formula = ctx.MkAnd(new BoolExpr[]{lhs, rhs});
		Expr [] forall = new Expr[sootVarToZ3Var.size()];
		int i = 0;
		for(IntExpr var : sootVarToZ3Var.values()){
			forall[i] = var;
			i++;
		}
		z3Formula = ctx.MkForall(forall, z3Formula, 0, null, null, null, null);
	} catch (Z3Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	boolean ret = solve(z3Formula);
	return ret;
}
 
开发者ID:BoiseState,项目名称:Disjoint-Domains,代码行数:23,代码来源:SolverWrapperZ3.java

示例4: ensureArith

import com.microsoft.z3.IntExpr; //导入依赖的package包/类
private ArithExpr ensureArith(Expr expr, Type<?> type) throws Z3Exception {
  if(expr instanceof ArithExpr)
    return (ArithExpr)expr;
  
  if(expr instanceof BitVecExpr) {
    BVIntegerType<?> bvType = (BVIntegerType<?>)type;
    IntExpr intExp = makeBV2Int((BitVecExpr)expr, bvType);
    safeDispose(expr);
    return intExp;
  }
  
  throw new UnsupportedOperationException();
}
 
开发者ID:psycopaths,项目名称:jconstraints-z3,代码行数:14,代码来源:NativeZ3ExpressionGenerator.java

示例5: visit

import com.microsoft.z3.IntExpr; //导入依赖的package包/类
@Override
public <F,E> Expr visit(
    CastExpression<F,E> cast, Void data) {
  
  Expression<F> casted = cast.getCasted();
  Type<F> ft = casted.getType();
  Type<E> tt = cast.getType();
  
  if(ft.equals(tt))
    return visit(casted, null);
  
  Expr castedExpr = null;
  try {
    castedExpr = visit(casted, null);

    if(ft instanceof BVIntegerType) {
      return makeBitvectorCast((BitVecExpr)castedExpr, (BVIntegerType<F>)ft, tt);
    }
    if(ft instanceof IntegerType) {
      return makeIntegerCast((IntExpr)castedExpr, (IntegerType<F>)ft, tt);
    }
    if(ft instanceof RealType) {
      return makeRealCast((RealExpr)castedExpr, (NumericType<F>)ft, tt);
    }
    
    safeDispose(castedExpr);
    throw new IllegalStateException("Cannot handle cast from " + ft + " to " + tt);
  }
  catch(Z3Exception ex) {
    throw new RuntimeException(ex);
  }
}
 
开发者ID:psycopaths,项目名称:jconstraints-z3,代码行数:33,代码来源:NativeZ3ExpressionGenerator.java

示例6: makeReal2IntTrunc

import com.microsoft.z3.IntExpr; //导入依赖的package包/类
private IntExpr makeReal2IntTrunc(ArithExpr real) throws Z3Exception {
  RealExpr rAlias = null;
  BoolExpr eq1 = null;
  IntExpr sign = null;
  IntExpr zero = null, minusOne = null, one = null;
  Expr ite = null;
  BoolExpr ltz = null;
  BoolExpr eq = null;
  RealExpr mul = null; 
  IntExpr r2i = null;
  try {
    rAlias = ctx.mkRealConst("__r2i" + count++);
    eq1 = ctx.mkEq(rAlias, real);
    solver.add(eq1);
    sign = ctx.mkIntConst("__sign" + count++);
    zero = ctx.mkInt(0);
    ltz = ctx.mkLt(rAlias, zero);
    one = ctx.mkInt(1);
    minusOne = ctx.mkInt(-1);
    ite = ctx.mkITE(ltz, minusOne, one);
    eq = ctx.mkEq(sign, ite);
    solver.add(eq);
    mul = (RealExpr)ctx.mkMul(sign, rAlias);
    r2i = ctx.mkReal2Int(mul);
    return (IntExpr)ctx.mkMul(sign, r2i);
  }
  finally {
    uncheckedDispose(rAlias, eq1, sign, zero, minusOne, one, ite, ltz, eq, mul, r2i);
  }
}
 
开发者ID:psycopaths,项目名称:jconstraints-z3,代码行数:31,代码来源:NativeZ3ExpressionGenerator.java

示例7: makeRealCast

import com.microsoft.z3.IntExpr; //导入依赖的package包/类
private <F,T,TT extends Type<T>>
Expr makeRealCast(RealExpr castedExpr, NumericType<F> from, TT to) throws Z3Exception {
  try {
    if(to instanceof BVIntegerType) {
      BVIntegerType<?> bvTo = (BVIntegerType<?>)to;
      IntExpr intTmp = null;
      try {
        intTmp = makeReal2IntTrunc(castedExpr);
        return ctx.mkInt2BV(bvTo.getNumBits(), intTmp);
      }
      finally {
        uncheckedDispose(intTmp);
      }
    }
    if(to instanceof IntegerType) {
      return makeReal2IntTrunc(castedExpr);
    }
    if(to instanceof NumericType) {
      Expr tmp = castedExpr;
      castedExpr = null; // prevent disposal
      return tmp;
    }
    throw new IllegalStateException("Cannot handle integer cast to " + to);
  }
  finally {
    safeDispose(castedExpr);
  }
}
 
开发者ID:psycopaths,项目名称:jconstraints-z3,代码行数:29,代码来源:NativeZ3ExpressionGenerator.java

示例8: getOrCreateIntVar

import com.microsoft.z3.IntExpr; //导入依赖的package包/类
protected IntExpr getOrCreateIntVar(Variable<?> v) {
	Expr ret = this.variables.get(v);
	if (ret != null) {
		return (IntExpr) ret;
	}

	IntExpr var = createIntVar(v);
	this.variables.put(v, var);
	this.protect.add(var);
	this.own.add(var);

	return var;
}
 
开发者ID:psycopaths,项目名称:jconstraints-z3,代码行数:14,代码来源:NativeZ3ExpressionGenerator.java

示例9: evaluateSol

import com.microsoft.z3.IntExpr; //导入依赖的package包/类
public List<Long> evaluateSol(BinopExpr expr, BinopExpr a, Value ... unknown) {
	List<Long> ret = null;
	//("expr " + expr + " " + " a " + a);
	BoolExpr z3Formula = generate(expr);
	try {
		BoolExpr z3ForA = a==null? ctx.MkFalse() : generate(a);
		//negate a
		BoolExpr negA = ctx.MkNot(z3ForA);
		//("negA " + negA);
		z3Formula = ctx.MkAnd(new BoolExpr[]{z3Formula, negA});
		Solver solver = ctx.MkSolver();
		Params p = ctx.MkParams();
		p.Add("soft_timeout", timeout);
		solver.setParameters(p);
		solver.Assert(z3Formula);
		Status result = solver.Check();
		if(result.equals(Status.SATISFIABLE)){
			ret = new ArrayList<Long>();
			Model m = solver.Model();
			for(Value v : unknown){
				IntExpr res = (IntExpr)m.ConstInterp(sootVarToZ3Var.get(v));
				if(res.toString().contains("mod") || res.toString().contains("div")){
					System.out.println("Z3Formula  " + z3Formula);
					return null;
				}
				ret.add(Long.parseLong(res.toString()));
			}
		} else if (result.equals(Status.UNSATISFIABLE)){
			ret = new ArrayList<Long>();
		} else {
			//unknown
			System.out.println("Warning: " + result + " for " + z3Formula);
		}
	} catch (Z3Exception e) {
		e.printStackTrace();
	}
	return ret;
}
 
开发者ID:BoiseState,项目名称:Disjoint-Domains,代码行数:39,代码来源:SolverWrapperZ3.java

示例10: makeBitvectorCast

import com.microsoft.z3.IntExpr; //导入依赖的package包/类
private <F,T,TT extends Type<T>>
Expr makeBitvectorCast(BitVecExpr castedExpr, BVIntegerType<F> from, TT to) throws Z3Exception {
  try {
    if(to instanceof BVIntegerType) {
      BVIntegerType<?> bvTo = (BVIntegerType<?>)to;
      if(from.getNumBits() == bvTo.getNumBits()) {
        Expr tmp = castedExpr;
        castedExpr = null; // prevent disposal
        return tmp;
      }
      int diff = bvTo.getNumBits() - from.getNumBits();
      if(diff > 0) {
        if(from.isSigned())
          return ctx.mkSignExt(diff, castedExpr);
        return ctx.mkZeroExt(diff, castedExpr);
      }
      return ctx.mkExtract(bvTo.getNumBits() - 1, 0, castedExpr);
    }
    if(to instanceof IntegerType) {
      //return ctx.mkBV2Int(castedExpr, from.isSigned());
      return makeBV2Int(castedExpr, from);
    }
    if(to instanceof RealType) {
      if(to instanceof FloatingPointType) {
        FloatingPointType<?> ft = (FloatingPointType<?>)to;
        int bitsAvail = ft.getSignificantBits() + 1;
        if(bitsAvail < from.getNumBits()) {
          BigInteger mask = BigInteger.valueOf(1L).shiftLeft(from.getNumBits() - bitsAvail).subtract(BigInteger.valueOf(1)).shiftLeft(bitsAvail);
          
          BoolExpr posCheck = null, negCheck = null;
          BoolExpr check = null;
          BoolExpr condCheck = null;
          
          BitVecExpr zero = null;
          BitVecExpr maskExpr = null;
          BitVecExpr andExpr = null;
          
          try {
            maskExpr = ctx.mkBV(mask.toString(), from.getNumBits());
            zero = ctx.mkBV(0, from.getNumBits());
            andExpr = ctx.mkBVAND(castedExpr, maskExpr);
            posCheck = ctx.mkEq(andExpr, zero);
            if(from.isSigned()) {
              negCheck = ctx.mkEq(andExpr, maskExpr);
              check = ctx.mkOr(posCheck, negCheck);
            }
            if(check != null)
              condCheck = ctx.mkOr(check, tainted);
            else
              condCheck = ctx.mkOr(posCheck, tainted);
            solver.add(condCheck);
          }
          finally {
            uncheckedDispose(posCheck, negCheck, check, zero, maskExpr, andExpr);
          }
        }
      }
      IntExpr intTmp = null;
      try {
        intTmp = makeBV2Int(castedExpr, from);
        return ctx.mkInt2Real(intTmp);
      }
      finally {
        uncheckedDispose(intTmp);
      }
    }
    throw new IllegalArgumentException("Cannot handle bitvector cast to " + to);
  }
  finally {
    safeDispose(castedExpr);
  }
}
 
开发者ID:psycopaths,项目名称:jconstraints-z3,代码行数:73,代码来源:NativeZ3ExpressionGenerator.java

示例11: SolverWrapperZ3

import com.microsoft.z3.IntExpr; //导入依赖的package包/类
public SolverWrapperZ3() throws Z3Exception{
	Map<String, String> cfg = new HashMap<String, String>();
	ctx = new Context(cfg);
	sootVarToZ3Var = new HashMap<Value,IntExpr>();
}
 
开发者ID:BoiseState,项目名称:Disjoint-Domains,代码行数:6,代码来源:SolverWrapperZ3.java


注:本文中的com.microsoft.z3.IntExpr类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。