sig
  type t
  type value = value
  type origin = origin
  type loc = loc
  val empty : t
  val find :
    t -> Cil_types.exp -> (value, origin) Eval.record_val Eval.or_top
  val add : t -> Cil_types.exp -> (value, origin) Eval.record_val -> t
  val fold :
    (Cil_types.exp -> (value, origin) Eval.record_val -> '-> 'a) ->
    t -> '-> 'a
  val find_loc : t -> Cil_types.lval -> loc Eval.record_loc Eval.or_top
  val remove : t -> Cil_types.exp -> t
  val remove_loc : t -> Cil_types.lval -> t
end