Definition prog_var_block (rho: environ) (il: list ident) (b: block) : Prop :=
Exists (fun id => match ge_of rho id with Some b' => b'=b | _ => False end) il.

(* Specifications: *)
Lemma match_fdecs_in:
forall i vl G,
In i (map (@fst _ _) G) ->
match_fdecs vl G ->
In i (map (@fst _ _) vl).
Lemma match_fdecs_norepet:
forall vl G,
list_norepet (map (@fst _ _) vl) ->
match_fdecs vl G ->
list_norepet (map (@fst _ _) G).
Lemma list_norepet_prog_funct':
forall A B (vl: list (ident * globdef A B)),
list_norepet (map (@fst _ _) vl) ->
list_norepet (map (@fst _ _) (prog_funct' vl)).