Module InferModules.CostModels

module BasicCost = CostDomain.BasicCost
type model = BufferOverrunUtils.ModelEnv.model_env -> ret:(InferIR.Ident.t * InferIR.Typ.t) -> BufferOverrunDomain.Mem.t -> BasicCost.t
module type S = sig ... end
module Array : S
module Collection : S
val of_itv : itv:Itv.t -> degree_kind:InferModules__Polynomials.DegreeKind.t -> of_function:string -> InferBase.Location.t -> BasicCost.t
val linear : InferIR.Exp.t -> of_function:string -> BufferOverrunUtils.ModelEnv.model_env -> ret:'a -> BufferOverrunDomain.Mem.t -> BasicCost.t
val modeled : of_function:string -> BufferOverrunUtils.ModelEnv.model_env -> ret:('a * InferIR.Typ.t) -> 'b -> BasicCost.t
val string_len_range_itv : InferIR.Exp.t -> from:(InferIR.Exp.t * InferIR.Typ.IntegerWidths.t) InferStdlib.IStd.Option.t -> BufferOverrunDomain.Mem.t -> Itv.t

Given a string of length n and an optional starting index i (0 by default), return itv 0, n_u-i_l

module BoundsOf : functor (Container : S) -> sig ... end
module JavaString : sig ... end
module BoundsOfCollection : sig ... end
module BoundsOfArray : sig ... end
module Call : sig ... end