예제 #1
0
        public bool VisitLabelOp(VCExprNAry node, TextWriter wr)
        {
            //Contract.Requires(wr != null);
            //Contract.Requires(node != null);
            VCExprLabelOp /*!*/ op = (VCExprLabelOp)node.Op;

            Contract.Assert(op != null);
            return(PrintNAry("Label " + op.label, node, wr));
        }
예제 #2
0
            public Term VisitLabelOp(VCExprNAry node, LineariserOptions options)
            {
                Contract.Requires(options != null);
                Contract.Requires(node != null);
                VCExprLabelOp op = (VCExprLabelOp)node.Op;

                Contract.Assert(op != null);
                return(ExprLineariser.cm.MakeLabel(op.label, op.pos, ExprLineariser.Linearise(node[0], options)));
            }
예제 #3
0
            public bool VisitLabelOp(VCExprNAry node, LineariserOptions options)
            {
                //Contract.Requires(options != null);
                //Contract.Requires(node != null);
                VCExprLabelOp op = (VCExprLabelOp)node.Op;

                Contract.Assert(op != null);
                wr.Write(String.Format("({0} |{1}| ", op.pos ? "LBLPOS" : "LBLNEG", op.label));
                ExprLineariser.Linearise(node[0], options);
                wr.Write(")");
                return(true);
            }
예제 #4
0
        protected override bool StandardResult(VCExpr node, bool arg)
        {
            //Contract.Requires(node!=null);
            VCExprNAry nary = node as VCExprNAry;

            if (nary != null)
            {
                VCExprLabelOp lab = nary.Op as VCExprLabelOp;
                if (lab != null)
                {
                    Labels.Add(lab.label);
                }
            }
            return(true);
        }