Definition var_name (V: Type) (bdec: ident * globvar V) : ident :=
fst bdec.
Definition no_dups (F V: Type) (fdecs: list (ident * F)) (bdecs: list (ident * globvar V)) : Prop :=
list_norepet (map (@fst ident F) fdecs ++ map (@var_name V) bdecs).
Arguments no_dups [F V] _ _.
Arguments no_dups_inv [A V] _ _ _ _ _.
(*moved to coqlib4 Lemma nat_ind2_Type: forall P : nat -> Type, ((forall n, (forall j:nat, (j<n )%nat -> P j) ->  P n):Type) -> (forall n, P n).  Lemma nat_ind2: forall P : nat -> Prop, (forall n, (forall j:nat, (j<n )%nat -> P j) ->  P n) -> (forall n, P n).  Lemma signed_zero: Int.signed Int.zero = 0. Arguments equiv_e1 [A B] _ _.  (*moved to coqlib4 Lemma equiv_e2 : forall A B: Prop, A=B -> B -> A. Arguments equiv_e2 [A B] _ _. *)

Lemma alloc_variables_fun:
forall {ge e m vl e1 m1 e2 m2},
Clight.alloc_variables ge e m vl e1 m1 ->
Clight.alloc_variables ge e m vl e2 m2 ->
(e1,m1)=(e2,m2).