(*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] _ _. *)

(* Specifications: *)
Lemma deref_loc_fun: forall {ty m b z v v'},
Clight.deref_loc ty m b z v -> Clight.deref_loc ty m b z v' -> v=v'.
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')).
Lemma eval_expr_fun:   forall {ge e le m a v v'},
Clight.eval_expr ge e le m a v -> Clight.eval_expr ge e le m a v' -> v=v'.
Lemma eval_exprlist_fun:   forall {ge e le m a ty v v'},
Clight.eval_exprlist ge e le m a ty v -> Clight.eval_exprlist ge e le m a ty v' -> v=v'.
Lemma eval_lvalue_fun:   forall {ge e le m a b b' z z'},
Clight.eval_lvalue ge e le m a b z -> Clight.eval_lvalue ge e le m a b' z' -> (b,z)=(b',z').
Lemma inv_find_symbol_fun:
forall {ge id id' b},
Senv.find_symbol ge id = Some b ->
Senv.find_symbol ge id' = Some b ->
id=id'.
Lemma assign_loc_fun:
forall {cenv ty m b ofs v m1 m2},
assign_loc cenv ty m b ofs v m1 ->
assign_loc cenv ty m b ofs v m2 ->
m1=m2.
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).
Lemma bind_parameters_fun:
forall {ge e m p v m1 m2},
Clight.bind_parameters ge e m p v m1 ->
Clight.bind_parameters ge e m p v m2 ->
m1=m2.
Lemma eventval_list_match_fun:
forall {se a a' t v},
Events.eventval_list_match se a t v ->
Events.eventval_list_match se a' t v ->
a=a'.