|
|
@ -11,6 +11,11 @@ open BufferOverrunUtils.ModelEnv
|
|
|
|
|
|
|
|
|
|
|
|
type model = model_env -> ret:Ident.t * Typ.t -> BufferOverrunDomain.Mem.t -> BasicCost.t
|
|
|
|
type model = model_env -> ret:Ident.t * Typ.t -> BufferOverrunDomain.Mem.t -> BasicCost.t
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let unit_cost_of ~of_function loc =
|
|
|
|
|
|
|
|
Bounds.NonNegativeBound.of_modeled_function of_function loc Bounds.Bound.one
|
|
|
|
|
|
|
|
|> BasicCost.of_non_negative_bound ~degree_kind:Polynomials.DegreeKind.Linear
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let of_itv ~(itv : Itv.t) ~degree_kind ~of_function loc =
|
|
|
|
let of_itv ~(itv : Itv.t) ~degree_kind ~of_function loc =
|
|
|
|
let upper_bound =
|
|
|
|
let upper_bound =
|
|
|
|
match itv with Bottom -> Bounds.Bound.pinf | NonBottom itv_pure -> Itv.ItvPure.ub itv_pure
|
|
|
|
match itv with Bottom -> Bounds.Bound.pinf | NonBottom itv_pure -> Itv.ItvPure.ub itv_pure
|
|
|
|