Definition binop_stable cenv op a1 a2 : bool :=
match op with
  | Cop.Oadd => match Cop.classify_add (typeof a1) (typeof a2) with
                    | Cop.add_case_pi t _ => complete_type cenv t
                    | Cop.add_case_ip _ t => complete_type cenv t
                    | Cop.add_case_pl t => complete_type cenv t
                    | Cop.add_case_lp t => complete_type cenv t
                    | Cop.add_default => true
            end
  | Cop.Osub => match Cop.classify_sub (typeof a1) (typeof a2) with
                    | Cop.sub_case_pi t _ => complete_type cenv t
                    | Cop.sub_case_pl t => complete_type cenv t
                    | Cop.sub_case_pp t => complete_type cenv t
                    | Cop.sub_default => true
            end
  | _ => true
  end.

(* Specifications: *)
Lemma binop_stable_stable: forall b e1 e2, binop_stable env b e1 e2 = true -> binop_stable env' b e1 e2 = true.
Lemma Cop_Sem_add_ptr_int_stable ty si u v (H:complete_type env ty = true): Cop.sem_add_ptr_int env ty si u v = Cop.sem_add_ptr_int env' ty si u v.
Lemma Cop_Sem_add_ptr_long_stable ty u v (H:complete_type env ty = true): Cop.sem_add_ptr_long env ty u v = Cop.sem_add_ptr_long env' ty u v.
Lemma Cop_sem_binary_operation_stable: forall b v1 e1 v2 e2 m, binop_stable env b e1 e2 = true -> Cop.sem_binary_operation env b v1 (typeof e1) v2 (typeof e2) m = Cop.sem_binary_operation env' b v1 (typeof e1) v2 (typeof e2) m.
Lemma func_tycontext'_sub: forall f, tycontext_sub (func_tycontext' f Delta) (func_tycontext' f Delta').
Lemma func_tycontext'_eqv: forall f, tycontext_eqv (func_tycontext' f Delta) (func_tycontext' f Delta').
Lemma tycontext_eqv_symm: forall Delta Delta', tycontext_eqv Delta Delta' -> tycontext_eqv Delta' Delta.
Lemma tycontext_eqv_sub: forall Delta Delta', tycontext_eqv Delta Delta' -> tycontext_sub Delta Delta'.