End ANALYSIS.
(** Properties of the elimination of unused global definitions. *)
Section TRANSFORMATION.
Variable p: program.
Variable used: IS.t.
Let add_def (m: prog_map) idg := PTree.set (fst idg) (snd idg) m.
Remark filter_globdefs_accu:
forall defs accu1 accu2 u,
filter_globdefs u (accu1 ++ accu2) defs = filter_globdefs u accu1 defs ++ accu2.
Remark filter_globdefs_nil:
forall u accu defs,
filter_globdefs u accu defs = filter_globdefs u nil defs ++ accu.

Lemma filter_globdefs_domain:
forall id l u,
In id (map fst (filter_globdefs u nil l)) -> IS.In id u /\ In id (map fst l).