Module EnvSL.
Definition env_mapsto: forall {key A}{KE: EqDec key} (id: key) (sh: Share.t) (v: A) , pred (env key A) := @_env_mapsto.
Arguments env_mapsto [key] [A] [KE] _ _ _ _.
Hint Resolve @emp_empty_env' : core.
Definition own_var {key: Type}{A: Type}{KE: EqDec key} (sh: pshare) (id: key) : pred (env key A) :=
exp (env_mapsto id (pshare_sh sh)).
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).

Lemma own_all_nil {key: Type}{A: Type}{KE: EqDec key} : own_all nil = (emp: pred (env key A)).