intros E p.
apply preuve_compilation.
intros e V ML_lambda.
inversion_clear ML_lambda.
intros s C Trad_lam.
inversion_clear Trad_lam.
intros hab CV Eq_e_CV.
exists (Cam_clos C0 CV).
split.
apply (Eqclos p E C0 e CV s Eq_e_CV hab H).
intro.
apply CUR.
Qed.
(*****************************************************************************)
(*          We have now all the tools we need to make the proof              *)
(* We want to prove that the following diagram commutes:                     *)
(*                                                                           *)
(*                                                                           *)
(*                                                                           *)
(*                           "Traduction"                                    *)
(*         Mini_ML terms ---------------------> CAM terms                    *)
(*             |                                  |                          *)
(*             |                                  |                          *)
(*             |                                  |                          *)
(*             |                                  |                          *)
(*      "ML_DS"|                                  |"CAM_DS"                  *)
(*             |                                  |                          *)
(*             |                                  |                          *)
(*             |                                  |                          *)
(*             V              "Equiv"             V                          *)
(*      Mini_ML values ---------------------> CAM values                     *)
(*                                                                           *)
(*                                                                           *)
(*                                                                           *)
(* This means that having an MLexp E its ML value and its translation onto   *)
(*CAM code we can find a  CAM value such that the diagram commutes           *)
(*                                                                           *)
(*      The proof is made by induction on the Predicate ML_DS.               *)
(*****************************************************************************)

Lemma final_proof :
forall (E : MLexp) (e : MLenv) (V : MLval),
ML_DS e E V ->
forall (s : Squelette) (C : Commande),
Traduction s E C ->
Habite e s ->
forall V : MLval,
ML_DS e E V ->
forall CV : CSem_val,
Equiv_env e CV ->
exists CV1 : CSem_val,
Equiv_val V CV1 /\
(forall s : Etat, CAM_DS (ETcons CV s) C (ETcons CV1 s)).