]> matita.cs.unibo.it Git - helm.git/commitdiff
severe bug found in parallel zeta
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Thu, 16 Aug 2018 12:48:30 +0000 (14:48 +0200)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Thu, 16 Aug 2018 12:48:30 +0000 (14:48 +0200)
+ partial commit: component "rt_computation" corrected
+ minor additions

matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq_vector.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lpx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_cpms.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_cpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx_rdsx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx.ma

index 2846c75366d7bd71d92df1677bd3e305cbe82fb3..11c955108632b31a54a370063d00622b420ca5b3 100644 (file)
@@ -52,8 +52,7 @@ qed-.
 lemma cpms_inv_sort1 (n) (h) (G) (L): ∀X2,s. ⦃G, L⦄ ⊢ ⋆s ➡*[n, h] X2 → X2 = ⋆(((next h)^n) s).
 #n #h #G #L #X2 #s #H @(cpms_ind_dx … H) -X2 //
 #n1 #n2 #X #X2 #_ #IH #HX2 destruct
 lemma cpms_inv_sort1 (n) (h) (G) (L): ∀X2,s. ⦃G, L⦄ ⊢ ⋆s ➡*[n, h] X2 → X2 = ⋆(((next h)^n) s).
 #n #h #G #L #X2 #s #H @(cpms_ind_dx … H) -X2 //
 #n1 #n2 #X #X2 #_ #IH #HX2 destruct
-elim (cpm_inv_sort1 … HX2) -HX2 * // #H1 #H2 destruct
-/2 width=3 by refl, trans_eq/
+elim (cpm_inv_sort1 … HX2) -HX2 #H #_ destruct //
 qed-.
 
 (* Basic properties *********************************************************)
 qed-.
 
 (* Basic properties *********************************************************)
@@ -88,10 +87,17 @@ lemma cpms_appl_dx (n) (h) (G) (L):
 /3 width=3 by cpms_step_sn, cpm_cpms, cpm_appl/
 qed.
 
 /3 width=3 by cpms_step_sn, cpm_cpms, cpm_appl/
 qed.
 
-(* Basic_2A1: uses: cprs_zeta *)
 lemma cpms_zeta (n) (h) (G) (L):
 lemma cpms_zeta (n) (h) (G) (L):
-                ∀T2,T. ⬆*[1] T2 ≘ T →
-                ∀V,T1. ⦃G, L.ⓓV⦄ ⊢ T1 ➡*[n, h] T → ⦃G, L⦄ ⊢ +ⓓV.T1 ➡*[n, h] T2.
+                ∀T1,T. ⬆*[1] T ≘ T1 →
+                ∀V,T2. ⦃G, L⦄ ⊢ T ➡*[n, h] T2 → ⦃G, L⦄ ⊢ +ⓓV.T1 ➡*[n, h] T2.
+#n #h #G #L #T1 #T #HT1 #V #T2 #H @(cpms_ind_dx … H) -T2
+/3 width=3 by cpms_step_dx, cpm_cpms, cpm_zeta/
+qed.
+
+(* Basic_2A1: uses: cprs_zeta *)
+lemma cpms_zeta_dx (n) (h) (G) (L):
+                   ∀T2,T. ⬆*[1] T2 ≘ T →
+                   ∀V,T1. ⦃G, L.ⓓV⦄ ⊢ T1 ➡*[n, h] T → ⦃G, L⦄ ⊢ +ⓓV.T1 ➡*[n, h] T2.
 #n #h #G #L #T2 #T #HT2 #V #T1 #H @(cpms_ind_sn … H) -T1
 /3 width=3 by cpms_step_sn, cpm_cpms, cpm_bind, cpm_zeta/
 qed.
 #n #h #G #L #T2 #T #HT2 #V #T1 #H @(cpms_ind_sn … H) -T1
 /3 width=3 by cpms_step_sn, cpm_cpms, cpm_bind, cpm_zeta/
 qed.
index 5b7495bd4381d66d000b77f28ce5425d4abb88ee..ce01889c15f5d71b16ed8a65b11bc89cedbfee66 100644 (file)
@@ -89,9 +89,18 @@ lemma cpxs_pair_sn: ∀h,I,G,L,V1,V2. ⦃G, L⦄ ⊢ V1 ⬈*[h] V2 →
 /3 width=3 by cpxs_strap1, cpx_pair_sn/
 qed.
 
 /3 width=3 by cpxs_strap1, cpx_pair_sn/
 qed.
 
-lemma cpxs_zeta: ∀h,G,L,V,T1,T,T2. ⬆*[1] T2 ≘ T →
-                 ⦃G, L.ⓓV⦄ ⊢ T1 ⬈*[h] T → ⦃G, L⦄ ⊢ +ⓓV.T1 ⬈*[h] T2.
-#h #G #L #V #T1 #T #T2 #HT2 #H @(cpxs_ind_dx … H) -T1
+lemma cpxs_zeta (h) (G) (L) (V):
+                ∀T1,T. ⬆*[1] T ≘ T1 →
+                ∀T2. ⦃G, L⦄ ⊢ T ⬈*[h] T2 → ⦃G, L⦄ ⊢ +ⓓV.T1 ⬈*[h] T2.
+#h #G #L #V #T1 #T #HT1 #T2 #H @(cpxs_ind … H) -T2
+/3 width=3 by cpxs_strap1, cpx_cpxs, cpx_zeta/
+qed.
+
+(* Basic_2A1: was: cpxs_zeta *)
+lemma cpxs_zeta_dx (h) (G) (L) (V):
+                   ∀T2,T. ⬆*[1] T2 ≘ T →
+                   ∀T1. ⦃G, L.ⓓV⦄ ⊢ T1 ⬈*[h] T → ⦃G, L⦄ ⊢ +ⓓV.T1 ⬈*[h] T2.
+#h #G #L #V #T2 #T #HT2 #T1 #H @(cpxs_ind_dx … H) -T1
 /3 width=3 by cpxs_strap2, cpx_cpxs, cpx_bind, cpx_zeta/
 qed.
 
 /3 width=3 by cpxs_strap2, cpx_cpxs, cpx_bind, cpx_zeta/
 qed.
 
index d9e982b5e09610c1d509b9fccf6f1c321f25c77c..4bd1dd0c14cff76f95efd2cc681cf361f6ed3266 100644 (file)
@@ -64,7 +64,7 @@ lemma cpxs_fwd_theta: ∀h,o,p,G,L,V1,V,T,U. ⦃G, L⦄ ⊢ ⓐV1.ⓓ{p}V.T ⬈*
 elim (cpxs_inv_appl1 … H) -H *
 [ -HV12 #V0 #T0 #_ #_ #H destruct /2 width=1 by theq_pair, or_introl/
 | #q #W #T0 #HT0 #HU
 elim (cpxs_inv_appl1 … H) -H *
 [ -HV12 #V0 #T0 #_ #_ #H destruct /2 width=1 by theq_pair, or_introl/
 | #q #W #T0 #HT0 #HU
-  elim (cpxs_inv_abbr1 … HT0) -HT0 *
+  elim (cpxs_inv_abbr1_dx … HT0) -HT0 *
   [ #V3 #T3 #_ #_ #H destruct
   | #X #HT2 #H #H0 destruct
     elim (lifts_inv_bind1 … H) -H #W2 #T2 #HW2 #HT02 #H destruct
   [ #V3 #T3 #_ #_ #H destruct
   | #X #HT2 #H #H0 destruct
     elim (lifts_inv_bind1 … H) -H #W2 #T2 #HW2 #HT02 #H destruct
@@ -75,7 +75,7 @@ elim (cpxs_inv_appl1 … H) -H *
   ]
 | #q #V3 #V4 #V0 #T0 #HV13 #HV34 #HT0 #HU
   @or_intror @(cpxs_trans … HU) -U (**) (* explicit constructor *)
   ]
 | #q #V3 #V4 #V0 #T0 #HV13 #HV34 #HT0 #HU
   @or_intror @(cpxs_trans … HU) -U (**) (* explicit constructor *)
-  elim (cpxs_inv_abbr1 … HT0) -HT0 *
+  elim (cpxs_inv_abbr1_dx … HT0) -HT0 *
   [ #V5 #T5 #HV5 #HT5 #H destruct
     /6 width=9 by cpxs_lifts_bi, drops_refl, drops_drop, cpxs_flat, cpxs_bind/
   | #X #HT1 #H #H0 destruct
   [ #V5 #T5 #HV5 #HT5 #H destruct
     /6 width=9 by cpxs_lifts_bi, drops_refl, drops_drop, cpxs_flat, cpxs_bind/
   | #X #HT1 #H #H0 destruct
index 147867a8b216bf9234ba673684fe05d252ca3b69..8c03262064abb5b3cda28727b778ae581fe9a981 100644 (file)
@@ -112,7 +112,7 @@ elim (cpxs_inv_appl1 … H) -H *
     elim (theq_inv_pair1 … HT0) #V1 #T1 #H destruct
   | @or_intror -V1b (**) (* explicit constructor *)
     @(cpxs_trans … HU) -U
     elim (theq_inv_pair1 … HT0) #V1 #T1 #H destruct
   | @or_intror -V1b (**) (* explicit constructor *)
     @(cpxs_trans … HU) -U
-    elim (cpxs_inv_abbr1 … HT0) -HT0 *
+    elim (cpxs_inv_abbr1_dx … HT0) -HT0 *
     [ -HV12a #V1 #T1 #_ #_ #H destruct
     | -V1b #X #HT1 #H #H0 destruct
       elim (lifts_inv_bind1 … H) -H #W1 #T1 #HW01 #HT01 #H destruct
     [ -HV12a #V1 #T1 #_ #_ #H destruct
     | -V1b #X #HT1 #H #H0 destruct
       elim (lifts_inv_bind1 … H) -H #W1 #T1 #HW01 #HT01 #H destruct
@@ -127,7 +127,7 @@ elim (cpxs_inv_appl1 … H) -H *
     elim (theq_inv_pair1 … HT0) #V1 #T1 #H destruct
   | @or_intror -V1b -V1b (**) (* explicit constructor *)
     @(cpxs_trans … HU) -U
     elim (theq_inv_pair1 … HT0) #V1 #T1 #H destruct
   | @or_intror -V1b -V1b (**) (* explicit constructor *)
     @(cpxs_trans … HU) -U
-    elim (cpxs_inv_abbr1 … HT0) -HT0 *
+    elim (cpxs_inv_abbr1_dx … HT0) -HT0 *
     [ #V1 #T1 #HV1 #HT1 #H destruct
       lapply (cpxs_lifts_bi … HV10a (Ⓣ) … (L.ⓓV) … HV12a … HV0a) -V1a -V0a /3 width=1 by drops_refl, drops_drop/ #HV2a
       @(cpxs_trans … (ⓓ{p}V.ⓐV2a.T1)) /3 width=1 by cpxs_bind, cpxs_pair_sn, cpxs_flat_dx, cpxs_bind_dx/
     [ #V1 #T1 #HV1 #HT1 #H destruct
       lapply (cpxs_lifts_bi … HV10a (Ⓣ) … (L.ⓓV) … HV12a … HV0a) -V1a -V0a /3 width=1 by drops_refl, drops_drop/ #HV2a
       @(cpxs_trans … (ⓓ{p}V.ⓐV2a.T1)) /3 width=1 by cpxs_bind, cpxs_pair_sn, cpxs_flat_dx, cpxs_bind_dx/
index 9192f4fa5050c20412b832ff6a43690d9124692d..980c1f12d376f88cf450c7efa47228dd76cf651f 100644 (file)
@@ -55,8 +55,8 @@ elim (cpx_inv_abbr1 … H1) -H1 *
   | /4 width=5 by csx_cpx_trans, csx_lpx_conf, lpx_pair/
   | -IHV /4 width=3 by csx_cpx_trans, cpx_cpxs, cpx_pair_sn/
   ]
   | /4 width=5 by csx_cpx_trans, csx_lpx_conf, lpx_pair/
   | -IHV /4 width=3 by csx_cpx_trans, cpx_cpxs, cpx_pair_sn/
   ]
-| -IHV -IHT -H2
-  /4 width=7 by csx_cpx_trans, csx_inv_lifts, drops_drop, drops_refl/
+| #U #HUT #HUX #_ -p
+  /5 width=7 by csx_cpx_trans, csx_inv_lifts, drops_drop, drops_refl/
 ]
 qed.
 
 ]
 qed.
 
@@ -80,10 +80,10 @@ elim (cpx_inv_appl1 … HL) -HL *
       /3 width=6 by tdeq_inv_lifts_bi, tdeq_pair/
     | -V1 @(IHVT … H0 … HV04) -o -V0 /4 width=1 by cpx_cpxs, cpx_flat, cpx_bind/
     ]
       /3 width=6 by tdeq_inv_lifts_bi, tdeq_pair/
     | -V1 @(IHVT … H0 … HV04) -o -V0 /4 width=1 by cpx_cpxs, cpx_flat, cpx_bind/
     ]
-  | -H -IHVT #T0 #HLT0 #HT0 #H0 destruct
-    lapply (csx_cpx_trans … HVT (ⓐV2.T0) ?) /2 width=1 by cpx_flat/ -T #HVT0
-    lapply (csx_inv_lifts … HVT0 (Ⓣ) … L ???) -HVT0
-    /3 width=5 by csx_cpx_trans, cpx_pair_sn, drops_refl, drops_drop, lifts_flat/
+  | #T0 #HT0 #HLT0 #H0 destruct -H -IHVT
+    lapply (csx_inv_lifts … HVT (Ⓣ) … L ???) -HVT
+    [5:|*: /3 width=4 by drops_refl, drops_drop, lifts_flat/ ] -V2 -T #HVT
+    /3 width=5 by csx_cpx_trans, cpx_flat/
   ]
 | -HV -HV12 -HVT -IHVT -H #b #V0 #W0 #W1 #T0 #T1 #_ #_ #_ #H destruct
 | -IHVT -H #b #V0 #V3 #W0 #W1 #T0 #T1 #HLV10 #HV03 #HLW01 #HLT01 #H1 #H2 destruct
   ]
 | -HV -HV12 -HVT -IHVT -H #b #V0 #W0 #W1 #T0 #T1 #_ #_ #_ #H destruct
 | -IHVT -H #b #V0 #V3 #W0 #W1 #T0 #T1 #HLV10 #HV03 #HLW01 #HLT01 #H1 #H2 destruct
index b16c216014b8f2e6994862ce79678bb2bbc4374c..ac04fa427baff8081ffca9bd39bcc63eba080983 100644 (file)
@@ -64,10 +64,10 @@ qed-.
 
 (* Basic_1: was pr3_gen_abbr *)
 (* Basic_2A1: includes: cprs_inv_abbr1 *)
 
 (* Basic_1: was pr3_gen_abbr *)
 (* Basic_2A1: includes: cprs_inv_abbr1 *)
-lemma cpms_inv_abbr_sn (n) (h) (G) (L):
-                       ∀p,V1,T1,X2. ⦃G, L⦄ ⊢ ⓓ{p}V1.T1 ➡*[n, h] X2 →
-                       ∨∨ ∃∃V2,T2. ⦃G, L⦄ ⊢ V1 ➡*[h] V2 & ⦃G, L.ⓓV1⦄ ⊢ T1 ➡*[n, h] T2 & X2 = ⓓ{p}V2.T2
-                        | ∃∃T2. ⦃G, L.ⓓV1⦄ ⊢ T1 ➡*[n ,h] T2 & ⬆*[1] X2 ≘ T2 & p = Ⓣ.
+lemma cpms_inv_abbr_sn_dx (n) (h) (G) (L):
+                          ∀p,V1,T1,X2. ⦃G, L⦄ ⊢ ⓓ{p}V1.T1 ➡*[n, h] X2 →
+                          ∨∨ ∃∃V2,T2. ⦃G, L⦄ ⊢ V1 ➡*[h] V2 & ⦃G, L.ⓓV1⦄ ⊢ T1 ➡*[n, h] T2 & X2 = ⓓ{p}V2.T2
+                           | ∃∃T2. ⦃G, L.ⓓV1⦄ ⊢ T1 ➡*[n ,h] T2 & ⬆*[1] X2 ≘ T2 & p = Ⓣ.
 #n #h #G #L #p #V1 #T1 #X2 #H
 @(cpms_ind_dx … H) -X2 -n /3 width=5 by ex3_2_intro, or_introl/
 #n1 #n2 #X #X2 #_ * *
 #n #h #G #L #p #V1 #T1 #X2 #H
 @(cpms_ind_dx … H) -X2 -n /3 width=5 by ex3_2_intro, or_introl/
 #n1 #n2 #X #X2 #_ * *
@@ -75,8 +75,9 @@ lemma cpms_inv_abbr_sn (n) (h) (G) (L):
   elim (cpm_inv_abbr1 … HX2) -HX2 *
   [ #V2 #T2 #HV2 #HT2 #H destruct
     /6 width=7 by lprs_cpm_trans, lprs_pair, cprs_step_dx, cpms_trans, ex3_2_intro, or_introl/
   elim (cpm_inv_abbr1 … HX2) -HX2 *
   [ #V2 #T2 #HV2 #HT2 #H destruct
     /6 width=7 by lprs_cpm_trans, lprs_pair, cprs_step_dx, cpms_trans, ex3_2_intro, or_introl/
-  | #T2 #HT2 #HXT2 #Hp
-    /6 width=7 by lprs_cpm_trans, lprs_pair, cpms_trans, ex3_intro, or_intror/
+  | #T2 #HT2 #HTX2 #Hp -V
+    elim (cpm_lifts_sn … HTX2 (Ⓣ) … (L.ⓓV1) … HT2) -T2 [| /3 width=3 by drops_refl, drops_drop/ ] #X #HX2 #HTX
+    /4 width=3 by cpms_step_dx, ex3_intro, or_intror/
   ]
 | #T #HT1 #HXT #Hp #HX2
   elim (cpm_lifts_sn … HX2 (Ⓣ) … (L.ⓓV1) … HXT) -X
   ]
 | #T #HT1 #HXT #Hp #HX2
   elim (cpm_lifts_sn … HX2 (Ⓣ) … (L.ⓓV1) … HXT) -X
@@ -89,7 +90,7 @@ lemma cpms_inv_abbr_abst (n) (h) (G) (L):
                          ∀p1,p2,V1,W2,T1,T2. ⦃G, L⦄ ⊢ ⓓ{p1}V1.T1 ➡*[n, h] ⓛ{p2}W2.T2 →
                          ∃∃T. ⦃G, L.ⓓV1⦄ ⊢ T1 ➡*[n, h] T & ⬆*[1] ⓛ{p2}W2.T2 ≘ T & p1 = Ⓣ.
 #n #h #G #L #p1 #p2 #V1 #W2 #T1 #T2 #H
                          ∀p1,p2,V1,W2,T1,T2. ⦃G, L⦄ ⊢ ⓓ{p1}V1.T1 ➡*[n, h] ⓛ{p2}W2.T2 →
                          ∃∃T. ⦃G, L.ⓓV1⦄ ⊢ T1 ➡*[n, h] T & ⬆*[1] ⓛ{p2}W2.T2 ≘ T & p1 = Ⓣ.
 #n #h #G #L #p1 #p2 #V1 #W2 #T1 #T2 #H
-elim (cpms_inv_abbr_sn … H) -H *
+elim (cpms_inv_abbr_sn_dx … H) -H *
 [ #V #T #_ #_ #H destruct
 | /2 width=3 by ex3_intro/
 ]
 [ #V #T #_ #_ #H destruct
 | /2 width=3 by ex3_intro/
 ]
index 10831ed7308c2195f552cbdfced23031d96a26f1..71742516cce320c28e7e12cc6cad368299672ee6 100644 (file)
@@ -36,23 +36,26 @@ lapply (lpxs_cpx_trans … HT02 (L.ⓛV1) ?)
 /3 width=5 by lpxs_pair, cpxs_trans, cpxs_strap1, ex3_2_intro/
 qed-.
 
 /3 width=5 by lpxs_pair, cpxs_trans, cpxs_strap1, ex3_2_intro/
 qed-.
 
-lemma cpxs_inv_abbr1 (h) (G): ∀p,L,V1,T1,U2. ⦃G, L⦄ ⊢ ⓓ{p}V1.T1 ⬈*[h] U2 →
-                              ∨∨ ∃∃V2,T2. ⦃G, L⦄ ⊢ V1 ⬈*[h] V2 & ⦃G, L.ⓓV1⦄ ⊢ T1 ⬈*[h] T2 &
-                                          U2 = ⓓ{p}V2.T2
-                               | ∃∃T2. ⦃G, L.ⓓV1⦄ ⊢ T1 ⬈*[h] T2 & ⬆*[1] U2 ≘ T2 & p = Ⓣ.
-#h #G #p #L #V1 #T1 #U2 #H @(cpxs_ind … H) -U2 /3 width=5 by ex3_2_intro, or_introl/
+(* Basic_2A1: was: cpxs_inv_abbr1 *)
+lemma cpxs_inv_abbr1_dx (h) (p) (G) (L):
+                        ∀V1,T1,U2. ⦃G, L⦄ ⊢ ⓓ{p}V1.T1 ⬈*[h] U2 →
+                        ∨∨ ∃∃V2,T2. ⦃G, L⦄ ⊢ V1 ⬈*[h] V2 & ⦃G, L.ⓓV1⦄ ⊢ T1 ⬈*[h] T2 &
+                                    U2 = ⓓ{p}V2.T2
+                         | ∃∃T2. ⦃G, L.ⓓV1⦄ ⊢ T1 ⬈*[h] T2 & ⬆*[1] U2 ≘ T2 & p = Ⓣ.
+#h #p #G #L #V1 #T1 #U2 #H
+@(cpxs_ind … H) -U2 /3 width=5 by ex3_2_intro, or_introl/
 #U0 #U2 #_ #HU02 * *
 [ #V0 #T0 #HV10 #HT10 #H destruct
   elim (cpx_inv_abbr1 … HU02) -HU02 *
   [ #V2 #T2 #HV02 #HT02 #H destruct
     lapply (lpxs_cpx_trans … HT02 (L.ⓓV1) ?)
     /4 width=5 by lpxs_pair, cpxs_trans, cpxs_strap1, ex3_2_intro, or_introl/
 #U0 #U2 #_ #HU02 * *
 [ #V0 #T0 #HV10 #HT10 #H destruct
   elim (cpx_inv_abbr1 … HU02) -HU02 *
   [ #V2 #T2 #HV02 #HT02 #H destruct
     lapply (lpxs_cpx_trans … HT02 (L.ⓓV1) ?)
     /4 width=5 by lpxs_pair, cpxs_trans, cpxs_strap1, ex3_2_intro, or_introl/
-  | #T2 #HT02 #HUT2
-    lapply (lpxs_cpx_trans … HT02 (L.ⓓV1) ?) -HT02
-    /4 width=3 by lpxs_pair, cpxs_trans, ex3_intro, or_intror/
+  | #T2 #HT20 #HTU2 #Hp -V0
+    elim (cpx_lifts_sn … HTU2 (Ⓣ) … (L.ⓓV1) … HT20) -T2 [| /3 width=3 by drops_refl, drops_drop/ ] #U0 #HU20 #HTU0
+    /4 width=3 by cpxs_strap1, ex3_intro, or_intror/
   ]
 | #U1 #HTU1 #HU01 #Hp
   ]
 | #U1 #HTU1 #HU01 #Hp
-  elim (cpx_lifts_sn … HU02 (Ⓣ) … (L.ⓓV1) … HU01) -U0 /3 width=3 by drops_refl, drops_drop/ #U #HU2 #HU1
+  elim (cpx_lifts_sn … HU02 (Ⓣ) … (L.ⓓV1) … HU01) -U0 [| /3 width=3 by drops_refl, drops_drop/ ] #U #HU2 #HU1
   /4 width=3 by cpxs_strap1, ex3_intro, or_intror/
 ]
 qed-.
   /4 width=3 by cpxs_strap1, ex3_intro, or_intror/
 ]
 qed-.
index 5448d58ff00c1ee1b9291651a99ed63bf1872464..52454a2accf4baddc35b3e0f9523b3da7c804e56 100644 (file)
@@ -40,9 +40,9 @@ lemma rdsx_cpx_trans_lsubsx (h) (o): ∀G,L0,T1,T2. ⦃G, L0⦄ ⊢ T1 ⬈[h] T2
   /4 width=2 by lsubsx_pair, rdsx_bind_void/
 | #I0 #G #L0 #V1 #V2 #T1 #T2 #_ #_ #IHV12 #IHT12 #f #L #HL0 #HL
   elim (rdsx_inv_flat … HL) -HL /3 width=2 by rdsx_flat/
   /4 width=2 by lsubsx_pair, rdsx_bind_void/
 | #I0 #G #L0 #V1 #V2 #T1 #T2 #_ #_ #IHV12 #IHT12 #f #L #HL0 #HL
   elim (rdsx_inv_flat … HL) -HL /3 width=2 by rdsx_flat/
-| #G #L0 #V #U1 #U2 #T2 #_ #HTU2 #IHU12 #f #L #HL0 #HL
+| #G #L0 #V #U1 #T1 #T2 #HTU1 #_ #IHT12 #f #L #HL0 #HL
   elim (rdsx_inv_bind … HL) -HL #HV #HU1
   elim (rdsx_inv_bind … HL) -HL #HV #HU1
-  /4 width=8 by lsubsx_pair, rdsx_inv_lifts, drops_refl, drops_drop/
+  /5 width=8 by rdsx_inv_lifts, drops_refl, drops_drop/
 | #G #L0 #V #T1 #T2 #_ #IHT12 #f #L #HL0 #HL
   elim (rdsx_inv_flat … HL) -HL /2 width=2 by/
 | #G #L0 #V1 #V2 #T #_ #IHV12 #f #L #HL0 #HL
 | #G #L0 #V #T1 #T2 #_ #IHT12 #f #L #HL0 #HL
   elim (rdsx_inv_flat … HL) -HL /2 width=2 by/
 | #G #L0 #V1 #V2 #T #_ #IHV12 #f #L #HL0 #HL
index 2e657b0270f01be183537fdaa81971e09bf84119..3da67484aaa0d1f427d6cb6decbcb85a7b363226 100644 (file)
@@ -100,6 +100,12 @@ lemma cpx_pair_sn: ∀h,I,G,L,V1,V2. ⦃G, L⦄ ⊢ V1 ⬈[h] V2 →
 #h * /2 width=2 by cpx_flat, cpx_bind/
 qed.
 
 #h * /2 width=2 by cpx_flat, cpx_bind/
 qed.
 
+lemma cpg_cpx (h) (Rt) (c) (G) (L):
+              ∀T1,T2. ⦃G,L⦄ ⊢ T1 ⬈[Rt,c,h] T2 → ⦃G,L⦄ ⊢ T1 ⬈[h] T2.
+#h #Rt #c #G #L #T1 #T2 #H elim H -c -G -L -T1 -T2
+/2 width=3 by cpx_theta, cpx_beta, cpx_ee, cpx_eps, cpx_zeta, cpx_flat, cpx_bind, cpx_lref, cpx_delta/
+qed.
+
 (* Basic inversion lemmas ***************************************************)
 
 lemma cpx_inv_atom1: ∀h,J,G,L,T2. ⦃G, L⦄ ⊢ ⓪{J} ⬈[h] T2 →
 (* Basic inversion lemmas ***************************************************)
 
 lemma cpx_inv_atom1: ∀h,J,G,L,T2. ⦃G, L⦄ ⊢ ⓪{J} ⬈[h] T2 →