]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/apps_2/functional/flifts.ma
update in ground_2, static_2, basic_2, apps_2, alpha_1
[helm.git] / matita / matita / contribs / lambdadelta / apps_2 / functional / flifts.ma
index edc607bbc63f58a01b5e8f7837756266bb97ef26..10d9636db228563956e9dbc7d23d0de49129e820 100644 (file)
@@ -21,12 +21,12 @@ include "static_2/relocation/lifts.ma".
 rec definition flifts f U on U ≝ match U with
 [ TAtom I     ⇒ match I with
   [ Sort _ ⇒ U
-  | LRef i â\87\92 #(f@â\9d´iâ\9dµ)
+  | LRef i â\87\92 #(f@â\9d¨iâ\9d©)
   | GRef _ ⇒ U
   ]
 | TPair I V T ⇒ match I with
-  [ Bind2 p I ⇒ ⓑ{p,I}(flifts f V).(flifts (⫯f) T)
-  | Flat2 I   ⇒ ⓕ{I}(flifts f V).(flifts f T)
+  [ Bind2 p I ⇒ ⓑ[p,I](flifts f V).(flifts (⫯f) T)
+  | Flat2 I   ⇒ ⓕ[I](flifts f V).(flifts f T)
   ]
 ].
 
@@ -36,16 +36,27 @@ interpretation "generic functional relocation (term)"
 interpretation "uniform functional relocation (term)"
    'UpArrow i T = (flifts (uni i) T).
 
+(* Basic properties *********************************************************)
+
+lemma flifts_lref (f) (i): ↑*[f](#i) = #(f@❨i❩).
+// qed.
+
+lemma flifts_bind (f) (p) (I) (V) (T): ↑*[f](ⓑ[p,I]V.T) = ⓑ[p,I]↑*[f]V.↑*[⫯f]T.
+// qed.
+
+lemma flifts_flat (f) (I) (V) (T): ↑*[f](ⓕ[I]V.T) = ⓕ[I]↑*[f]V.↑*[f]T.
+// qed.
+
 (* Main properties **********************************************************)
 
-theorem flifts_lifts: â\88\80T,f. â¬\86*[f]T ≘ ↑*[f]T.
+theorem flifts_lifts: â\88\80T,f. â\87§*[f]T ≘ ↑*[f]T.
 #T elim T -T *
 /2 width=1 by lifts_sort, lifts_lref, lifts_gref, lifts_bind, lifts_flat/
 qed.
 
 (* Main inversion properties ************************************************)
 
-theorem flifts_inv_lifts: â\88\80f,T1,T2. â¬\86*[f]T1 ≘ T2 → ↑*[f]T1 = T2.
+theorem flifts_inv_lifts: â\88\80f,T1,T2. â\87§*[f]T1 ≘ T2 → ↑*[f]T1 = T2.
 #f #T1 #T2 #H elim H -f -T1 -T2 //
 [ #f #i1 #i2 #H <(at_inv_total … H) //
 | #f #p #I #V1 #V2 #T1 #T2 #_ #_ #IHV #IHT <IHV <IHT -V2 -T2 //
@@ -55,13 +66,10 @@ qed-.
 
 (* Derived properties *******************************************************)
 
+lemma flifts_comp: ∀f1,f2. f1 ≡ f2 → ∀T. ↑*[f1]T = ↑*[f2]T.
+/3 width=3 by flifts_inv_lifts, lifts_eq_repl_fwd/ qed.
+
+(* Derived properties with uniform relocation *******************************)
+
 lemma flifts_lref_uni: ∀l,i. ↑[l](#i) = #(l+i).
 /3 width=1 by flifts_inv_lifts, lifts_lref_uni/ qed.
-(*
-lemma flift_join: ∀e1,e2,T. ⬆[e1, e2] ↑[0, e1] T ≡ ↑[0, e1 + e2] T.
-#e1 #e2 #T
-lapply (flift_lift T 0 (e1+e2)) #H
-elim (lift_split … H e1 e1) -H // #U #H
->(flift_inv_lift … H) -H //
-qed.
-*)