Section GLOBALENV_PRINCIPLES.
Variable P: t -> Prop.
Remark in_norepet_unique:
forall id g (gl: list (ident * globdef F V)),
In (id, g) gl -> list_norepet (map fst gl) ->
exists gl1 gl2, gl = gl1 ++ (id, g) :: gl2 /\ ~In id (map fst gl2).
End GLOBALENV_PRINCIPLES.
(** ** Properties of the operations over global environments *)

Theorem find_funct_prop:
forall (P: F -> Prop) p v f,
(forall id f, In (id, Gfun f) (prog_defs p) -> P f) ->
find_funct (globalenv p) v = Some f ->
P f.