sig
  type ('a, 'b) t
  val lookup : ('a, 'b) Env.t -> '-> 'b
  val filter : ('a, 'b) Env.t -> ('-> bool) -> 'b list
  val empty : ('a, 'b) Env.t
  val add : ('a, 'b) Env.t -> '-> '-> ('a, 'b) Env.t
  val concat : ('a, 'b) Env.t -> ('a, 'b) Env.t -> ('a, 'b) Env.t
  val iter : ('a * '-> unit) -> ('a, 'b) Env.t -> unit
  val fold_left : ('-> 'a * '-> 'c) -> '-> ('a, 'b) Env.t -> 'c
  val map : ('a * '-> 'c) -> ('a, 'b) Env.t -> 'c list
end