/////////////////////////////////////////////////////////////////////////// // 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)); }
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)); }