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 Eval.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 Eval.or_top
  val filter :
    (Cil_types.exp ->
     (Eval.Valuation.value, Eval.Valuation.origin) Eval.record_val -> bool) ->
    (Cil_types.lval -> Eval.Valuation.loc Eval.record_loc -> bool) ->
    Eval.Valuation.t -> Eval.Valuation.t
end