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 eval_expr_lvalue_fun:
forall ge e le m,
(forall a v v', Clight.eval_expr ge e le m a v -> Clight.eval_expr ge e le m a v' -> v=v') /\
(forall a b b' i i', Clight.eval_lvalue ge e le m a b i -> Clight.eval_lvalue ge e le m a b' i' ->
(b,i)=(b',i')).