public Term VisitBvOp(VCExprNAry node, LineariserOptions options) { Contract.Requires(options != null); Contract.Requires(node != null); List <int> args = new List <int>(); foreach (VCExpr e in node) { VCExprIntLit literal = e as VCExprIntLit; System.Diagnostics.Debug.Assert(literal != null); args.Add(literal.Val.ToInt); } System.Diagnostics.Debug.Assert(args.Count == 1); return(ExprLineariser.cm.z3.MkNumeral(args[0], ExprLineariser.cm.z3.MkBvSort((uint)node.Type.BvBits))); }
//////////////////////////////////////////////////////////////////////////// public override VCExpr Visit(VCExprLiteral node, bool arg) { Contract.Requires(node != null); Contract.Ensures(Contract.Result <VCExpr>() != null); VCExprIntLit intLit = node as VCExprIntLit; if (intLit != null) { if (NegConstantDistance > intLit.Val || intLit.Val > ConstantDistance) { return(Represent(intLit.Val)); } } return(node); }