sig
  exception Invalid_nb_of_args of int
  exception Outside_builtin_possibilities
  type builtin_type = unit -> Cil_types.typ * Cil_types.typ list
  type cacheable = Eva.Eval.cacheable = Cacheable | NoCache | NoCacheCallers
  type full_result = {
    c_values : (Cvalue.V.t option * Cvalue.Model.t) list;
    c_clobbered : Base.SetLattice.t;
    c_from : (Function_Froms.froms * Locations.Zone.t) option;
  }
  type call_result =
      States of Cvalue.Model.t list
    | Result of Cvalue.V.t list
    | Full of Eva.Builtins.full_result
  type builtin =
      Cvalue.Model.t ->
      (Cil_types.exp * Cvalue.V.t) list -> Eva.Builtins.call_result
  val register_builtin :
    string ->
    ?replace:string ->
    ?typ:Eva.Builtins.builtin_type ->
    Eva.Builtins.cacheable -> Eva.Builtins.builtin -> unit
  val is_builtin : string -> bool
end