(** Results about id injections*)
  Definition id_ren m :=
    fun b => if is_left (valid_block_dec m b) then Some b else None.

(* Specifications: *)
Lemma id_ren_correct: forall m (b1 b2 : block), (id_ren m) b1 = Some b2 -> b1 = b2.
Lemma id_ren_domain: forall m, domain_memren (id_ren m) m.
Lemma id_ren_validblock: forall m b (Hvalid: Mem.valid_block m b), id_ren m b = Some b.
Lemma id_ren_invalidblock: forall m b (Hinvalid: ~ Mem.valid_block m b), id_ren m b = None.
Lemma is_id_ren : forall f m (Hdomain: domain_memren f m) (Hf_id: forall b1 b2, f b1 = Some b2 -> b1 = b2), f = id_ren m.
Lemma id_ren_restr: forall pmap m (Hlt: permMapLt pmap (getMaxPerm m)), id_ren m = id_ren (restrPermMap Hlt).
Lemma incr_domain_id: forall m f f' (Hincr: ren_incr f f') (Hf_id: forall b b', f b = Some b' -> b = b') (Hdomain_f: domain_memren f' m), ren_incr f (id_ren m).