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.

Lemma match_fdecs_rev': forall vl G vl' G', list_norepet (map (@fst _ _) (rev vl ++ vl')) -> match_fdecs vl G -> match_fdecs vl' G' -> match_fdecs (rev vl ++ vl') (rev G ++ G').