Definition see_var {key: Type}{A: Type}{KE: EqDec key} (id: key) : pred (env key A) :=
exp (fun sh: pshare => own_var sh id).
Definition own_all {key: Type}{A: Type}{KE: EqDec key} (l: list key) : pred (env key A) :=
list_sepcon (map (own_var pfullshare) l).

(* Specifications: *)
Lemma own_all_nil {key: Type}{A: Type}{KE: EqDec key} : own_all nil = (emp: pred (env key A)).
Definition restrict_env {key: Type}{A: Type}{KE: EqDec key} (ids: list key) (rho:env key A) : env key A :=
mk_env _ (restrict_env'_finite ids rho).