]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambda_delta/Basic_2/substitution/lift.ma
- notation restyling ...
[helm.git] / matita / matita / contribs / lambda_delta / Basic_2 / substitution / lift.ma
index 0e0e6a7483158ff98819cbb2a9ec3b7a57d66a6d..5c7a28bd2a465f7063a3d982d6488cc1d6dedddf 100644 (file)
@@ -37,14 +37,14 @@ interpretation "relocation" 'RLift d e T1 T2 = (lift d e T1 T2).
 
 (* Basic inversion lemmas ***************************************************)
 
-fact lift_inv_refl_O2_aux: â\88\80d,e,T1,T2. â\87\91[d, e] T1 ≡ T2 → e = 0 → T1 = T2.
+fact lift_inv_refl_O2_aux: â\88\80d,e,T1,T2. â\87§[d, e] T1 ≡ T2 → e = 0 → T1 = T2.
 #d #e #T1 #T2 #H elim H -d -e -T1 -T2 // /3 width=1/
 qed.
 
-lemma lift_inv_refl_O2: â\88\80d,T1,T2. â\87\91[d, 0] T1 ≡ T2 → T1 = T2.
+lemma lift_inv_refl_O2: â\88\80d,T1,T2. â\87§[d, 0] T1 ≡ T2 → T1 = T2.
 /2 width=4/ qed-.
 
-fact lift_inv_sort1_aux: â\88\80d,e,T1,T2. â\87\91[d,e] T1 ≡ T2 → ∀k. T1 = ⋆k → T2 = ⋆k.
+fact lift_inv_sort1_aux: â\88\80d,e,T1,T2. â\87§[d,e] T1 ≡ T2 → ∀k. T1 = ⋆k → T2 = ⋆k.
 #d #e #T1 #T2 * -d -e -T1 -T2 //
 [ #i #d #e #_ #k #H destruct
 | #I #V1 #V2 #T1 #T2 #d #e #_ #_ #k #H destruct
@@ -52,10 +52,10 @@ fact lift_inv_sort1_aux: ∀d,e,T1,T2. ⇑[d,e] T1 ≡ T2 → ∀k. T1 = ⋆k 
 ]
 qed.
 
-lemma lift_inv_sort1: â\88\80d,e,T2,k. â\87\91[d,e] ⋆k ≡ T2 → T2 = ⋆k.
+lemma lift_inv_sort1: â\88\80d,e,T2,k. â\87§[d,e] ⋆k ≡ T2 → T2 = ⋆k.
 /2 width=5/ qed-.
 
-fact lift_inv_lref1_aux: â\88\80d,e,T1,T2. â\87\91[d,e] T1 ≡ T2 → ∀i. T1 = #i →
+fact lift_inv_lref1_aux: â\88\80d,e,T1,T2. â\87§[d,e] T1 ≡ T2 → ∀i. T1 = #i →
                          (i < d ∧ T2 = #i) ∨ (d ≤ i ∧ T2 = #(i + e)).
 #d #e #T1 #T2 * -d -e -T1 -T2
 [ #k #d #e #i #H destruct
@@ -67,23 +67,23 @@ fact lift_inv_lref1_aux: ∀d,e,T1,T2. ⇑[d,e] T1 ≡ T2 → ∀i. T1 = #i →
 ]
 qed.
 
-lemma lift_inv_lref1: â\88\80d,e,T2,i. â\87\91[d,e] #i ≡ T2 →
+lemma lift_inv_lref1: â\88\80d,e,T2,i. â\87§[d,e] #i ≡ T2 →
                       (i < d ∧ T2 = #i) ∨ (d ≤ i ∧ T2 = #(i + e)).
 /2 width=3/ qed-.
 
-lemma lift_inv_lref1_lt: â\88\80d,e,T2,i. â\87\91[d,e] #i ≡ T2 → i < d → T2 = #i.
+lemma lift_inv_lref1_lt: â\88\80d,e,T2,i. â\87§[d,e] #i ≡ T2 → i < d → T2 = #i.
 #d #e #T2 #i #H elim (lift_inv_lref1 … H) -H * //
 #Hdi #_ #Hid lapply (le_to_lt_to_lt … Hdi Hid) -Hdi -Hid #Hdd
 elim (lt_refl_false … Hdd)
 qed-.
 
-lemma lift_inv_lref1_ge: â\88\80d,e,T2,i. â\87\91[d,e] #i ≡ T2 → d ≤ i → T2 = #(i + e).
+lemma lift_inv_lref1_ge: â\88\80d,e,T2,i. â\87§[d,e] #i ≡ T2 → d ≤ i → T2 = #(i + e).
 #d #e #T2 #i #H elim (lift_inv_lref1 … H) -H * //
 #Hid #_ #Hdi lapply (le_to_lt_to_lt … Hdi Hid) -Hdi -Hid #Hdd
 elim (lt_refl_false … Hdd)
 qed-.
 
-fact lift_inv_gref1_aux: â\88\80d,e,T1,T2. â\87\91[d,e] T1 ≡ T2 → ∀p. T1 = §p → T2 = §p.
+fact lift_inv_gref1_aux: â\88\80d,e,T1,T2. â\87§[d,e] T1 ≡ T2 → ∀p. T1 = §p → T2 = §p.
 #d #e #T1 #T2 * -d -e -T1 -T2 //
 [ #i #d #e #_ #k #H destruct
 | #I #V1 #V2 #T1 #T2 #d #e #_ #_ #k #H destruct
@@ -91,12 +91,12 @@ fact lift_inv_gref1_aux: ∀d,e,T1,T2. ⇑[d,e] T1 ≡ T2 → ∀p. T1 = §p →
 ]
 qed.
 
-lemma lift_inv_gref1: â\88\80d,e,T2,p. â\87\91[d,e] §p ≡ T2 → T2 = §p.
+lemma lift_inv_gref1: â\88\80d,e,T2,p. â\87§[d,e] §p ≡ T2 → T2 = §p.
 /2 width=5/ qed-.
 
-fact lift_inv_bind1_aux: â\88\80d,e,T1,T2. â\87\91[d,e] T1 ≡ T2 →
+fact lift_inv_bind1_aux: â\88\80d,e,T1,T2. â\87§[d,e] T1 ≡ T2 →
                          ∀I,V1,U1. T1 = 𝕓{I} V1.U1 →
-                         â\88\83â\88\83V2,U2. â\87\91[d,e] V1 â\89¡ V2 & â\87\91[d+1,e] U1 ≡ U2 &
+                         â\88\83â\88\83V2,U2. â\87§[d,e] V1 â\89¡ V2 & â\87§[d+1,e] U1 ≡ U2 &
                                   T2 = 𝕓{I} V2. U2.
 #d #e #T1 #T2 * -d -e -T1 -T2
 [ #k #d #e #I #V1 #U1 #H destruct
@@ -108,14 +108,14 @@ fact lift_inv_bind1_aux: ∀d,e,T1,T2. ⇑[d,e] T1 ≡ T2 →
 ]
 qed.
 
-lemma lift_inv_bind1: â\88\80d,e,T2,I,V1,U1. â\87\91[d,e] 𝕓{I} V1. U1 ≡ T2 →
-                      â\88\83â\88\83V2,U2. â\87\91[d,e] V1 â\89¡ V2 & â\87\91[d+1,e] U1 ≡ U2 &
+lemma lift_inv_bind1: â\88\80d,e,T2,I,V1,U1. â\87§[d,e] 𝕓{I} V1. U1 ≡ T2 →
+                      â\88\83â\88\83V2,U2. â\87§[d,e] V1 â\89¡ V2 & â\87§[d+1,e] U1 ≡ U2 &
                                T2 = 𝕓{I} V2. U2.
 /2 width=3/ qed-.
 
-fact lift_inv_flat1_aux: â\88\80d,e,T1,T2. â\87\91[d,e] T1 ≡ T2 →
+fact lift_inv_flat1_aux: â\88\80d,e,T1,T2. â\87§[d,e] T1 ≡ T2 →
                          ∀I,V1,U1. T1 = 𝕗{I} V1.U1 →
-                         â\88\83â\88\83V2,U2. â\87\91[d,e] V1 â\89¡ V2 & â\87\91[d,e] U1 ≡ U2 &
+                         â\88\83â\88\83V2,U2. â\87§[d,e] V1 â\89¡ V2 & â\87§[d,e] U1 ≡ U2 &
                                   T2 = 𝕗{I} V2. U2.
 #d #e #T1 #T2 * -d -e -T1 -T2
 [ #k #d #e #I #V1 #U1 #H destruct
@@ -127,12 +127,12 @@ fact lift_inv_flat1_aux: ∀d,e,T1,T2. ⇑[d,e] T1 ≡ T2 →
 ]
 qed.
 
-lemma lift_inv_flat1: â\88\80d,e,T2,I,V1,U1. â\87\91[d,e] 𝕗{I} V1. U1 ≡ T2 →
-                      â\88\83â\88\83V2,U2. â\87\91[d,e] V1 â\89¡ V2 & â\87\91[d,e] U1 ≡ U2 &
+lemma lift_inv_flat1: â\88\80d,e,T2,I,V1,U1. â\87§[d,e] 𝕗{I} V1. U1 ≡ T2 →
+                      â\88\83â\88\83V2,U2. â\87§[d,e] V1 â\89¡ V2 & â\87§[d,e] U1 ≡ U2 &
                                T2 = 𝕗{I} V2. U2.
 /2 width=3/ qed-.
 
-fact lift_inv_sort2_aux: â\88\80d,e,T1,T2. â\87\91[d,e] T1 ≡ T2 → ∀k. T2 = ⋆k → T1 = ⋆k.
+fact lift_inv_sort2_aux: â\88\80d,e,T1,T2. â\87§[d,e] T1 ≡ T2 → ∀k. T2 = ⋆k → T1 = ⋆k.
 #d #e #T1 #T2 * -d -e -T1 -T2 //
 [ #i #d #e #_ #k #H destruct
 | #I #V1 #V2 #T1 #T2 #d #e #_ #_ #k #H destruct
@@ -141,10 +141,10 @@ fact lift_inv_sort2_aux: ∀d,e,T1,T2. ⇑[d,e] T1 ≡ T2 → ∀k. T2 = ⋆k 
 qed.
 
 (* Basic_1: was: lift_gen_sort *)
-lemma lift_inv_sort2: â\88\80d,e,T1,k. â\87\91[d,e] T1 ≡ ⋆k → T1 = ⋆k.
+lemma lift_inv_sort2: â\88\80d,e,T1,k. â\87§[d,e] T1 ≡ ⋆k → T1 = ⋆k.
 /2 width=5/ qed-.
 
-fact lift_inv_lref2_aux: â\88\80d,e,T1,T2. â\87\91[d,e] T1 ≡ T2 → ∀i. T2 = #i →
+fact lift_inv_lref2_aux: â\88\80d,e,T1,T2. â\87§[d,e] T1 ≡ T2 → ∀i. T2 = #i →
                          (i < d ∧ T1 = #i) ∨ (d + e ≤ i ∧ T1 = #(i - e)).
 #d #e #T1 #T2 * -d -e -T1 -T2
 [ #k #d #e #i #H destruct
@@ -157,12 +157,12 @@ fact lift_inv_lref2_aux: ∀d,e,T1,T2. ⇑[d,e] T1 ≡ T2 → ∀i. T2 = #i →
 qed.
 
 (* Basic_1: was: lift_gen_lref *)
-lemma lift_inv_lref2: â\88\80d,e,T1,i. â\87\91[d,e] T1 ≡ #i →
+lemma lift_inv_lref2: â\88\80d,e,T1,i. â\87§[d,e] T1 ≡ #i →
                       (i < d ∧ T1 = #i) ∨ (d + e ≤ i ∧ T1 = #(i - e)).
 /2 width=3/ qed-.
 
 (* Basic_1: was: lift_gen_lref_lt *)
-lemma lift_inv_lref2_lt: â\88\80d,e,T1,i. â\87\91[d,e] T1 ≡ #i → i < d → T1 = #i.
+lemma lift_inv_lref2_lt: â\88\80d,e,T1,i. â\87§[d,e] T1 ≡ #i → i < d → T1 = #i.
 #d #e #T1 #i #H elim (lift_inv_lref2 … H) -H * //
 #Hdi #_ #Hid lapply (le_to_lt_to_lt … Hdi Hid) -Hdi -Hid #Hdd
 elim (lt_inv_plus_l … Hdd) -Hdd #Hdd
@@ -170,7 +170,7 @@ elim (lt_refl_false … Hdd)
 qed-.
 
 (* Basic_1: was: lift_gen_lref_false *)
-lemma lift_inv_lref2_be: â\88\80d,e,T1,i. â\87\91[d,e] T1 ≡ #i →
+lemma lift_inv_lref2_be: â\88\80d,e,T1,i. â\87§[d,e] T1 ≡ #i →
                          d ≤ i → i < d + e → False.
 #d #e #T1 #i #H elim (lift_inv_lref2 … H) -H *
 [ #H1 #_ #H2 #_ | #H2 #_ #_ #H1 ]
@@ -179,14 +179,14 @@ elim (lt_refl_false … H)
 qed-.
 
 (* Basic_1: was: lift_gen_lref_ge *)
-lemma lift_inv_lref2_ge: â\88\80d,e,T1,i. â\87\91[d,e] T1 ≡ #i → d + e ≤ i → T1 = #(i - e).
+lemma lift_inv_lref2_ge: â\88\80d,e,T1,i. â\87§[d,e] T1 ≡ #i → d + e ≤ i → T1 = #(i - e).
 #d #e #T1 #i #H elim (lift_inv_lref2 … H) -H * //
 #Hid #_ #Hdi lapply (le_to_lt_to_lt … Hdi Hid) -Hdi -Hid #Hdd
 elim (lt_inv_plus_l … Hdd) -Hdd #Hdd
 elim (lt_refl_false … Hdd)
 qed-.
 
-fact lift_inv_gref2_aux: â\88\80d,e,T1,T2. â\87\91[d,e] T1 ≡ T2 → ∀p. T2 = §p → T1 = §p.
+fact lift_inv_gref2_aux: â\88\80d,e,T1,T2. â\87§[d,e] T1 ≡ T2 → ∀p. T2 = §p → T1 = §p.
 #d #e #T1 #T2 * -d -e -T1 -T2 //
 [ #i #d #e #_ #k #H destruct
 | #I #V1 #V2 #T1 #T2 #d #e #_ #_ #k #H destruct
@@ -194,12 +194,12 @@ fact lift_inv_gref2_aux: ∀d,e,T1,T2. ⇑[d,e] T1 ≡ T2 → ∀p. T2 = §p →
 ]
 qed.
 
-lemma lift_inv_gref2: â\88\80d,e,T1,p. â\87\91[d,e] T1 ≡ §p → T1 = §p.
+lemma lift_inv_gref2: â\88\80d,e,T1,p. â\87§[d,e] T1 ≡ §p → T1 = §p.
 /2 width=5/ qed-.
 
-fact lift_inv_bind2_aux: â\88\80d,e,T1,T2. â\87\91[d,e] T1 ≡ T2 →
+fact lift_inv_bind2_aux: â\88\80d,e,T1,T2. â\87§[d,e] T1 ≡ T2 →
                          ∀I,V2,U2. T2 = 𝕓{I} V2.U2 →
-                         â\88\83â\88\83V1,U1. â\87\91[d,e] V1 â\89¡ V2 & â\87\91[d+1,e] U1 ≡ U2 &
+                         â\88\83â\88\83V1,U1. â\87§[d,e] V1 â\89¡ V2 & â\87§[d+1,e] U1 ≡ U2 &
                                   T1 = 𝕓{I} V1. U1.
 #d #e #T1 #T2 * -d -e -T1 -T2
 [ #k #d #e #I #V2 #U2 #H destruct
@@ -212,14 +212,14 @@ fact lift_inv_bind2_aux: ∀d,e,T1,T2. ⇑[d,e] T1 ≡ T2 →
 qed.
 
 (* Basic_1: was: lift_gen_bind *)
-lemma lift_inv_bind2: â\88\80d,e,T1,I,V2,U2. â\87\91[d,e] T1 ≡  𝕓{I} V2. U2 →
-                      â\88\83â\88\83V1,U1. â\87\91[d,e] V1 â\89¡ V2 & â\87\91[d+1,e] U1 ≡ U2 &
+lemma lift_inv_bind2: â\88\80d,e,T1,I,V2,U2. â\87§[d,e] T1 ≡  𝕓{I} V2. U2 →
+                      â\88\83â\88\83V1,U1. â\87§[d,e] V1 â\89¡ V2 & â\87§[d+1,e] U1 ≡ U2 &
                                T1 = 𝕓{I} V1. U1.
 /2 width=3/ qed-.
 
-fact lift_inv_flat2_aux: â\88\80d,e,T1,T2. â\87\91[d,e] T1 ≡ T2 →
+fact lift_inv_flat2_aux: â\88\80d,e,T1,T2. â\87§[d,e] T1 ≡ T2 →
                          ∀I,V2,U2. T2 = 𝕗{I} V2.U2 →
-                         â\88\83â\88\83V1,U1. â\87\91[d,e] V1 â\89¡ V2 & â\87\91[d,e] U1 ≡ U2 &
+                         â\88\83â\88\83V1,U1. â\87§[d,e] V1 â\89¡ V2 & â\87§[d,e] U1 ≡ U2 &
                                   T1 = 𝕗{I} V1. U1.
 #d #e #T1 #T2 * -d -e -T1 -T2
 [ #k #d #e #I #V2 #U2 #H destruct
@@ -232,12 +232,12 @@ fact lift_inv_flat2_aux: ∀d,e,T1,T2. ⇑[d,e] T1 ≡ T2 →
 qed.
 
 (* Basic_1: was: lift_gen_flat *)
-lemma lift_inv_flat2: â\88\80d,e,T1,I,V2,U2. â\87\91[d,e] T1 ≡  𝕗{I} V2. U2 →
-                      â\88\83â\88\83V1,U1. â\87\91[d,e] V1 â\89¡ V2 & â\87\91[d,e] U1 ≡ U2 &
+lemma lift_inv_flat2: â\88\80d,e,T1,I,V2,U2. â\87§[d,e] T1 ≡  𝕗{I} V2. U2 →
+                      â\88\83â\88\83V1,U1. â\87§[d,e] V1 â\89¡ V2 & â\87§[d,e] U1 ≡ U2 &
                                T1 = 𝕗{I} V1. U1.
 /2 width=3/ qed-.
 
-lemma lift_inv_pair_xy_x: â\88\80d,e,I,V,T. â\87\91[d, e] 𝕔{I} V. T ≡ V → False.
+lemma lift_inv_pair_xy_x: â\88\80d,e,I,V,T. â\87§[d, e] 𝕔{I} V. T ≡ V → False.
 #d #e #J #V elim V -V
 [ * #i #T #H
   [ lapply (lift_inv_sort2 … H) -H #H destruct
@@ -251,7 +251,7 @@ lemma lift_inv_pair_xy_x: ∀d,e,I,V,T. ⇑[d, e] 𝕔{I} V. T ≡ V → False.
 ]
 qed-.
 
-lemma lift_inv_pair_xy_y: â\88\80I,T,V,d,e. â\87\91[d, e] 𝕔{I} V. T ≡ T → False.
+lemma lift_inv_pair_xy_y: â\88\80I,T,V,d,e. â\87§[d, e] 𝕔{I} V. T ≡ T → False.
 #J #T elim T -T
 [ * #i #V #d #e #H
   [ lapply (lift_inv_sort2 … H) -H #H destruct
@@ -267,17 +267,17 @@ qed-.
 
 (* Basic forward lemmas *****************************************************)
 
-lemma tw_lift: â\88\80d,e,T1,T2. â\87\91[d, e] T1 ≡ T2 → #[T1] = #[T2].
+lemma tw_lift: â\88\80d,e,T1,T2. â\87§[d, e] T1 ≡ T2 → #[T1] = #[T2].
 #d #e #T1 #T2 #H elim H -d -e -T1 -T2 normalize //
 qed-.
 
-lemma lift_simple_dx: â\88\80d,e,T1,T2. â\87\91[d, e] T1 ≡ T2 → 𝕊[T1] → 𝕊[T2].
+lemma lift_simple_dx: â\88\80d,e,T1,T2. â\87§[d, e] T1 ≡ T2 → 𝕊[T1] → 𝕊[T2].
 #d #e #T1 #T2 #H elim H -d -e -T1 -T2 //
 #I #V1 #V2 #T1 #T2 #d #e #_ #_ #_ #_ #H
 elim (simple_inv_bind … H)
 qed-.
 
-lemma lift_simple_sn: â\88\80d,e,T1,T2. â\87\91[d, e] T1 ≡ T2 → 𝕊[T2] → 𝕊[T1].
+lemma lift_simple_sn: â\88\80d,e,T1,T2. â\87§[d, e] T1 ≡ T2 → 𝕊[T2] → 𝕊[T1].
 #d #e #T1 #T2 #H elim H -d -e -T1 -T2 //
 #I #V1 #V2 #T1 #T2 #d #e #_ #_ #_ #_ #H
 elim (simple_inv_bind … H)
@@ -286,22 +286,22 @@ qed-.
 (* Basic properties *********************************************************)
 
 (* Basic_1: was: lift_lref_gt *)
-lemma lift_lref_ge_minus: â\88\80d,e,i. d + e â\89¤ i â\86\92 â\87\91[d, e] #(i - e) ≡ #i.
+lemma lift_lref_ge_minus: â\88\80d,e,i. d + e â\89¤ i â\86\92 â\87§[d, e] #(i - e) ≡ #i.
 #d #e #i #H >(plus_minus_m_m i e) in ⊢ (? ? ? ? %); /2 width=2/ /3 width=2/
 qed.
 
-lemma lift_lref_ge_minus_eq: â\88\80d,e,i,j. d + e â\89¤ i â\86\92 j = i - e â\86\92 â\87\91[d, e] #j ≡ #i.
+lemma lift_lref_ge_minus_eq: â\88\80d,e,i,j. d + e â\89¤ i â\86\92 j = i - e â\86\92 â\87§[d, e] #j ≡ #i.
 /2 width=1/ qed-.
 
 (* Basic_1: was: lift_r *)
-lemma lift_refl: â\88\80T,d. â\87\91[d, 0] T ≡ T.
+lemma lift_refl: â\88\80T,d. â\87§[d, 0] T ≡ T.
 #T elim T -T
 [ * #i // #d elim (lt_or_ge i d) /2 width=1/
 | * /2 width=1/
 ]
 qed.
 
-lemma lift_total: â\88\80T1,d,e. â\88\83T2. â\87\91[d,e] T1 ≡ T2.
+lemma lift_total: â\88\80T1,d,e. â\88\83T2. â\87§[d,e] T1 ≡ T2.
 #T1 elim T1 -T1
 [ * #i /2 width=2/ #d #e elim (lt_or_ge i d) /3 width=2/
 | * #I #V1 #T1 #IHV1 #IHT1 #d #e
@@ -313,9 +313,9 @@ lemma lift_total: ∀T1,d,e. ∃T2. ⇑[d,e] T1 ≡ T2.
 qed.
 
 (* Basic_1: was: lift_free (right to left) *)
-lemma lift_split: â\88\80d1,e2,T1,T2. â\87\91[d1, e2] T1 ≡ T2 →
+lemma lift_split: â\88\80d1,e2,T1,T2. â\87§[d1, e2] T1 ≡ T2 →
                   ∀d2,e1. d1 ≤ d2 → d2 ≤ d1 + e1 → e1 ≤ e2 →
-                  â\88\83â\88\83T. â\87\91[d1, e1] T1 â\89¡ T & â\87\91[d2, e2 - e1] T ≡ T2.
+                  â\88\83â\88\83T. â\87§[d1, e1] T1 â\89¡ T & â\87§[d2, e2 - e1] T ≡ T2.
 #d1 #e2 #T1 #T2 #H elim H -d1 -e2 -T1 -T2
 [ /3 width=3/
 | #i #d1 #e2 #Hid1 #d2 #e1 #Hd12 #_ #_
@@ -334,7 +334,7 @@ lemma lift_split: ∀d1,e2,T1,T2. ⇑[d1, e2] T1 ≡ T2 →
 qed.
 
 (* Basic_1: was only: dnf_dec2 dnf_dec *)
-lemma is_lift_dec: â\88\80T2,d,e. Decidable (â\88\83T1. â\87\91[d,e] T1 ≡ T2).
+lemma is_lift_dec: â\88\80T2,d,e. Decidable (â\88\83T1. â\87§[d,e] T1 ≡ T2).
 #T1 elim T1 -T1
 [ * [1,3: /3 width=2/ ] #i #d #e
   elim (lt_dec i d) #Hid