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

(* 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).