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