Definition finite_idfun (f: key -> option (pshare * A)) :=
exists l, forall a, ~In a l -> f a = None.
Parameter mk_env:  forall (f: key -> option (pshare * A)), finite_idfun f -> env key A.
(* Arguments mk_env. *)

(* Specifications: *)
Axiom env_get_mk_env:  forall (f: key -> option (pshare * A)) P, env_get (mk_env f P) = f.
Axiom env_finite: forall rho, finite_idfun (env_get rho).
Axiom env_ext: forall rho1 rho2, env_get rho1 = env_get rho2 -> rho1=rho2.
Axiom env_funct: forall rho1 rho2,
rho1 = rho2 -> forall id sh1 sh2 v1 v2, env_get rho1 id = Some(sh1, v1)
-> env_get rho2 id = Some(sh2, v2)
-> v1 = v2.