]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/coq-contribs/LAMBDA-TYPES/pr0_confluence.v
ocaml 3.09 transition
[helm.git] / helm / coq-contribs / LAMBDA-TYPES / pr0_confluence.v
index b107ac2a97efd006c0bfd59598a4524045065bf4..c23d6743fde4f5fc95dc83ba6d2cda2ef8e67caa 100644 (file)
@@ -47,39 +47,39 @@ Require pr0_subst0.
                LApply (H_x ?3); [ Clear H_x; Intros H_x | XAuto ];
                XElim H_x; Clear H0 H1; Intros.
 
-(* case pr0_cong pr0_gamma pr0_refl *****************************************)
-
-      Remark pr0_cong_gamma_refl: (b:?) ~ b = Abst ->
-                                  (u0,u3:?) (pr0 u0 u3) ->
-                                  (t4,t5:?) (pr0 t4 t5) ->
-                                  (u2,v2,x:?) (pr0 u2 x) -> (pr0 v2 x) ->
-                                  (EX t:T | (pr0 (TTail (Flat Appl) u2 (TTail (Bind b) u0 t4)) t) &
-                                            (pr0 (TTail (Bind b) u3 (TTail (Flat Appl) (lift (1) (0) v2) t5)) t)).
+(* case pr0_cong pr0_upsilon pr0_refl ***************************************)
+
+      Remark pr0_cong_upsilon_refl: (b:?) ~ b = Abst ->
+                                    (u0,u3:?) (pr0 u0 u3) ->
+                                    (t4,t5:?) (pr0 t4 t5) ->
+                                    (u2,v2,x:?) (pr0 u2 x) -> (pr0 v2 x) ->
+                                    (EX t:T | (pr0 (TTail (Flat Appl) u2 (TTail (Bind b) u0 t4)) t) &
+                                              (pr0 (TTail (Bind b) u3 (TTail (Flat Appl) (lift (1) (0) v2) t5)) t)).
       Intros.
       Apply ex2_intro with x:=(TTail (Bind b) u3 (TTail (Flat Appl) (lift (1) (0) x) t5)); XAuto.
       Qed.
 
-(* case pr0_cong pr0_gamma pr0_cong *****************************************)
+(* case pr0_cong pr0_upsilon pr0_cong ***************************************)
 
-      Remark pr0_cong_gamma_cong: (b:?) ~ b = Abst ->
-                                  (u2,v2,x:?) (pr0 u2 x) -> (pr0 v2 x) ->
-                                  (t2,t5,x0:?) (pr0 t2 x0) -> (pr0 t5 x0) ->
-                                  (u5,u3,x1:?) (pr0 u5 x1) -> (pr0 u3 x1) ->
-                                  (EX t:T | (pr0 (TTail (Flat Appl) u2 (TTail (Bind b) u5 t2)) t) &
-                                            (pr0 (TTail (Bind b) u3 (TTail (Flat Appl) (lift (1) (0) v2) t5)) t)).
+      Remark pr0_cong_upsilon_cong: (b:?) ~ b = Abst ->
+                                    (u2,v2,x:?) (pr0 u2 x) -> (pr0 v2 x) ->
+                                    (t2,t5,x0:?) (pr0 t2 x0) -> (pr0 t5 x0) ->
+                                    (u5,u3,x1:?) (pr0 u5 x1) -> (pr0 u3 x1) ->
+                                    (EX t:T | (pr0 (TTail (Flat Appl) u2 (TTail (Bind b) u5 t2)) t) &
+                                              (pr0 (TTail (Bind b) u3 (TTail (Flat Appl) (lift (1) (0) v2) t5)) t)).
       Intros.
       Apply ex2_intro with x:=(TTail (Bind b) x1 (TTail (Flat Appl) (lift (1) (0) x) x0)); XAuto.
       Qed.
 
-(* case pr0_cong pr0_gamma pr0_delta *****************************************)
+(* case pr0_cong pr0_upsilon pr0_delta **************************************)
 
-      Remark pr0_cong_gamma_delta: ~ Abbr = Abst ->
-                                   (u5,t2,w:?) (subst0 (0) u5 t2 w) ->
-                                   (u2,v2,x:?) (pr0 u2 x) -> (pr0 v2 x) ->
-                                   (t5,x0:?) (pr0 t2 x0) -> (pr0 t5 x0) ->
-                                   (u3,x1:?) (pr0 u5 x1) -> (pr0 u3 x1) ->
-                                   (EX t:T | (pr0 (TTail (Flat Appl) u2 (TTail (Bind Abbr) u5 w)) t) &
-                                             (pr0 (TTail (Bind Abbr) u3 (TTail (Flat Appl) (lift (1) (0) v2) t5)) t)).
+      Remark pr0_cong_upsilon_delta: ~ Abbr = Abst ->
+                                     (u5,t2,w:?) (subst0 (0) u5 t2 w) ->
+                                     (u2,v2,x:?) (pr0 u2 x) -> (pr0 v2 x) ->
+                                     (t5,x0:?) (pr0 t2 x0) -> (pr0 t5 x0) ->
+                                     (u3,x1:?) (pr0 u5 x1) -> (pr0 u3 x1) ->
+                                     (EX t:T | (pr0 (TTail (Flat Appl) u2 (TTail (Bind Abbr) u5 w)) t) &
+                                               (pr0 (TTail (Bind Abbr) u3 (TTail (Flat Appl) (lift (1) (0) v2) t5)) t)).
       Intros; Pr0Subst0.
 (* case 1: x0 is a lift *)
       Apply ex2_intro with x:=(TTail (Bind Abbr) x1 (TTail (Flat Appl) (lift (1) (0) x) x0)); XAuto.
@@ -87,14 +87,14 @@ Require pr0_subst0.
       Apply ex2_intro with x:=(TTail (Bind Abbr) x1 (TTail (Flat Appl) (lift (1) (0) x) x2)); XEAuto.
       Qed.
 
-(* case pr0_cong pr0_gamma pr0_zeta *****************************************)
+(* case pr0_cong pr0_upsilon pr0_zeta ***************************************)
 
-      Remark pr0_cong_gamma_zeta: (b:?) ~ b = Abst ->
-                                  (u0,u3:?) (pr0 u0 u3) ->
-                                  (u2,v2,x0:?) (pr0 u2 x0) -> (pr0 v2 x0) ->
-                                  (x,t3,x1:?) (pr0 x x1) -> (pr0 t3 x1) ->
-                                  (EX t:T | (pr0 (TTail (Flat Appl) u2 t3) t) &
-                                            (pr0 (TTail (Bind b) u3 (TTail (Flat Appl) (lift (1) (0) v2) (lift (1) (0) x))) t)).
+      Remark pr0_cong_upsilon_zeta: (b:?) ~ b = Abst ->
+                                    (u0,u3:?) (pr0 u0 u3) ->
+                                    (u2,v2,x0:?) (pr0 u2 x0) -> (pr0 v2 x0) ->
+                                    (x,t3,x1:?) (pr0 x x1) -> (pr0 t3 x1) ->
+                                    (EX t:T | (pr0 (TTail (Flat Appl) u2 t3) t) &
+                                              (pr0 (TTail (Bind b) u3 (TTail (Flat Appl) (lift (1) (0) v2) (lift (1) (0) x))) t)).
       Intros; LiftTailRwBack; XEAuto.
       Qed.
 
@@ -108,14 +108,14 @@ Require pr0_subst0.
       Intros; Pr0Subst0; XEAuto.
       Qed.
 
-(* case pr0_gamma pr0_gamma *************************************************)
+(* case pr0_upsilon pr0_upsilon *********************************************)
 
-      Remark pr0_gamma_gamma: (b:?) ~ b = Abst ->
-                              (v1,v2,x0:?) (pr0 v1 x0) -> (pr0 v2 x0) ->
-                              (u1,u2,x1:?) (pr0 u1 x1) -> (pr0 u2 x1) ->
-                              (t1,t2,x2:?) (pr0 t1 x2) -> (pr0 t2 x2) ->
-                              (EX t:T | (pr0 (TTail (Bind b) u1 (TTail (Flat Appl) (lift (1) (0) v1) t1)) t) &
-                                        (pr0 (TTail (Bind b) u2 (TTail (Flat Appl) (lift (1) (0) v2) t2)) t)).
+      Remark pr0_upsilon_upsilon: (b:?) ~ b = Abst ->
+                                  (v1,v2,x0:?) (pr0 v1 x0) -> (pr0 v2 x0) ->
+                                  (u1,u2,x1:?) (pr0 u1 x1) -> (pr0 u2 x1) ->
+                                  (t1,t2,x2:?) (pr0 t1 x2) -> (pr0 t2 x2) ->
+                                  (EX t:T | (pr0 (TTail (Bind b) u1 (TTail (Flat Appl) (lift (1) (0) v1) t1)) t) &
+                                            (pr0 (TTail (Bind b) u2 (TTail (Flat Appl) (lift (1) (0) v2) t2)) t)).
       Intros.
       Apply ex2_intro with x:=(TTail (Bind b) x1 (TTail (Flat Appl) (lift (1) (0) x0) x2)); XAuto.
       Qed.
@@ -141,25 +141,25 @@ Require pr0_subst0.
 
 (* main *********************************************************************)
 
-      Hints Resolve pr0_cong_gamma_refl pr0_cong_gamma_cong : ltlc.
-      Hints Resolve pr0_cong_gamma_delta pr0_cong_gamma_zeta : ltlc.
+      Hints Resolve pr0_cong_upsilon_refl pr0_cong_upsilon_cong : ltlc.
+      Hints Resolve pr0_cong_upsilon_delta pr0_cong_upsilon_zeta : ltlc.
       Hints Resolve pr0_cong_delta : ltlc.
-      Hints Resolve pr0_gamma_gamma : ltlc.
+      Hints Resolve pr0_upsilon_upsilon : ltlc.
       Hints Resolve pr0_delta_delta pr0_delta_epsilon : ltlc.
 
-(*#* #start proof *)
+(*#* #start file *)
 
 (*#* #caption "confluence with itself: Church-Rosser property" *)
 (*#* #cap #cap t0, t1, t2, t *)
 
-      Theorem pr0_confluence : (t0,t1:?) (pr0 t0 t1) -> (t2:?) (pr0 t0 t2) ->
-                               (EX t | (pr0 t1 t) & (pr0 t2 t)).
-
+      Theorem pr0_confluence: (t0,t1:?) (pr0 t0 t1) -> (t2:?) (pr0 t0 t2) ->
+                              (EX t | (pr0 t1 t) & (pr0 t2 t)).
+                              
 (*#* #stop file *)
-
+                              
       XElimUsing tlt_wf_ind t0; Intros.
       Inversion H0; Inversion H1; Clear H0 H1;
-      XSubst; Repeat IH; XEAuto.
+      XSubst; Repeat IH; XDEAuto 4.
       Qed.
 
    End pr0_confluence.