]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambda_delta/basic_2/equivalence/cpcs_delift.ma
- we polarized binders to control zeta reduction
[helm.git] / matita / matita / contribs / lambda_delta / basic_2 / equivalence / cpcs_delift.ma
index e6638ea3f79f2f1f84d0cee193b3a2a1a9cd1d8d..810083108c64e588f2298032d15e3bb5a57e2288 100644 (file)
@@ -20,25 +20,25 @@ include "basic_2/equivalence/cpcs_cpcs.ma".
 (* CONTEXT-SENSITIVE PARALLEL EQUIVALENCE ON TERMS **************************)
 
 (* Advanced inversion lemmas ************************************************)
-
-lemma cprs_inv_appl1_cpcs: ∀L,V1,T1,U2. L ⊢ ⓐV1. T1 ➡* U2 → (
-                           ∃∃V2,T2.  L ⊢ V1 ➡* V2 & L ⊢ T1 ➡* T2 &
-                                     L ⊢ U2 ➡* ⓐV2. T2
+(* does not holds
+axiom cprs_inv_appl1_cpcs: ∀L,V1,T1,U2. L ⊢ ⓐV1. T1 ➡* U2 → (
+                           ∃∃V2,T2.    L ⊢ V1 ➡* V2 & L ⊢ T1 ➡* T2 &
+                                       L ⊢ U2 ➡* ⓐV2. T2
                            ) ∨
-                           ∃∃V2,W,T. L ⊢ V1 ➡* V2 &
-                                     L ⊢ T1 ➡* ⓛW. T & L ⊢ ⓓV2. T ⬌* U2.
+                           ∃∃a,V2,W,T. L ⊢ V1 ➡* V2 &
+                                       L ⊢ T1 ➡* ⓛ{a}W. T & L ⊢ ⓓ{a}V2. T ⬌* U2.
 #L #V1 #T1 #U2 #H @(cprs_ind … H) -U2 /3 width=5/
 #U #U2 #_ #HU2 * *
 [ #V0 #T0 #HV10 #HT10 #HUT0
   elim (cprs_strip … HUT0 … HU2) -U #U #H #HU2
   elim (cpr_inv_appl1 … H) -H *
   [ #V2 #T2 #HV02 #HT02 #H destruct /4 width=5/
-  | #V2 #W2 #T #T2 #HV02 #HT2 #H1 #H2 destruct
+  | #b #V2 #W2 #T #T2 #HV02 #HT2 #H1 #H2 destruct
     lapply (cprs_strap1 … HV10 HV02) -V0 #HV12
-    lapply (cprs_div ? (ⓓV2.T) ? ? ? HU2) -HU2 /2 width=1/ /3 width=6/
-  | #V #V2 #W0 #W2 #T #T2 #HV0 #HW02 #HT2 #HV2 #H1 #H2 destruct
+    lapply (cprs_div ? (ⓓ{b}V2.T) ? ? ? HU2) -HU2 /2 width=1/ /3 width=7/
+  | #b #V #V2 #W0 #W2 #T #T2 #HV0 #HW02 #HT2 #HV2 #H1 #H2 destruct
     lapply (cprs_strap1 … HV10 HV0) -V0 #HV1
-    lapply (cprs_trans … HT10 (ⓓW2.T2) ?) -HT10 /2 width=1/ -W0 -T #HT1
+    lapply (cprs_trans … HT10 (ⓓ{b}W2.T2) ?) -HT10 /2 width=1/ -W0 -T #HT1
     elim (sfr_delift (L.ⓓW2) (ⓐV2.T2) 0 1 ? ?) // #X #H1
     lapply (cprs_zeta_delift … H1) #H2
     lapply (cprs_trans … HU2 … H2) -HU2 -H2 #HU2T3
@@ -50,8 +50,9 @@ lemma cprs_inv_appl1_cpcs: ∀L,V1,T1,U2. L ⊢ ⓐV1. T1 ➡* U2 → (
 | /4 width=8/
 ]
 qed-.
-
-lemma cprs_inv_appl_abst: ∀L,V,T,W,U. L ⊢ ⓐV.T ➡* ⓛW.U →
+*)
+(* maybe holds
+axiom cprs_inv_appl_abst: ∀L,V,T,W,U. L ⊢ ⓐV.T ➡* ⓛW.U →
                           ∃∃W0,T0,V1,T1. L ⊢ T ➡* ⓛW0.T0 &
                                          L ⊢ ⓓV.T0 ➡* ⓛV1.T1 &
                                          L ⊢ ⓛW.U ➡* ⓛV1.T1.
@@ -64,11 +65,11 @@ elim (cprs_inv_appl1_cpcs … H) -H *
   lapply (cprs_trans … (ⓓV.T0) … H1) -H1 /2 width=1/ -V0 /2 width=7/
 ]
 qed-.
-
+*)
 (* Properties on inverse basic term relocation ******************************)
 
 lemma cpcs_zeta_delift_comm: ∀L,V,T1,T2. L.ⓓV ⊢ ▼*[O, 1] T1 ≡ T2 →
-                             L ⊢ T2 ⬌* ⓓV.T1.
+                             L ⊢ T2 ⬌* +ⓓV.T1.
 /3 width=1/ qed.
 
 (* Basic_1: was only: pc3_gen_cabbr *)