X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fapps_2%2Ffunctional%2Fflifts.ma;h=10d9636db228563956e9dbc7d23d0de49129e820;hb=bd53c4e895203eb049e75434f638f26b5a161a2b;hp=edc607bbc63f58a01b5e8f7837756266bb97ef26;hpb=cc6fcb70ca4f3cf01205ed722d75a2fdb2aaf779;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/apps_2/functional/flifts.ma b/matita/matita/contribs/lambdadelta/apps_2/functional/flifts.ma index edc607bbc..10d9636db 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/functional/flifts.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/functional/flifts.ma @@ -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 ⇒ #(f@❴i❵) + | LRef i ⇒ #(f@❨i❩) | 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: ∀T,f. ⬆*[f]T ≘ ↑*[f]T. +theorem flifts_lifts: ∀T,f. ⇧*[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: ∀f,T1,T2. ⬆*[f]T1 ≘ T2 → ↑*[f]T1 = T2. +theorem flifts_inv_lifts: ∀f,T1,T2. ⇧*[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 (flift_inv_lift … H) -H // -qed. -*)