Example #1
0
        ///////////////////////////////////////////////////////////////////////////
        // The normal axioms of the theory of arrays (right now without extensionality)

        private VCExpr Select(Function select, List <VCExprVar /*!*/> /*!*/ types, VCExpr map, List <VCExprVar /*!*/> /*!*/ indexes)
        {
            Contract.Requires(map != null);
            Contract.Requires(select != null);
            Contract.Requires(cce.NonNullElements(indexes));
            Contract.Requires(cce.NonNullElements(types));
            Contract.Ensures(Contract.Result <VCExpr>() != null);
            List <VCExpr /*!*/> /*!*/ selectArgs = new List <VCExpr /*!*/>();

            selectArgs.AddRange(HelperFuns.ToVCExprList(types));
            selectArgs.Add(map);
            selectArgs.AddRange(HelperFuns.ToVCExprList(indexes));
            return(Gen.Function(select, selectArgs));
        }
Example #2
0
        private VCExpr Store(Function store, List <VCExprVar /*!*/> /*!*/ types, VCExpr map, List <VCExprVar /*!*/> /*!*/ indexes, VCExpr val)
        {
            Contract.Requires(val != null);
            Contract.Requires(map != null);
            Contract.Requires(store != null);
            Contract.Requires(cce.NonNullElements(indexes));
            Contract.Requires(cce.NonNullElements(types));
            Contract.Ensures(Contract.Result <VCExpr>() != null);
            List <VCExpr /*!*/> /*!*/ storeArgs = new List <VCExpr /*!*/>();

            storeArgs.AddRange(HelperFuns.ToVCExprList(types));
            storeArgs.Add(map);
            storeArgs.AddRange(HelperFuns.ToVCExprList(indexes));
            storeArgs.Add(val);
            return(Gen.Function(store, storeArgs));
        }