From: Ferruccio Guidi Date: Sun, 29 Sep 2019 18:54:08 +0000 (+0200) Subject: update in static_2 X-Git-Tag: make_still_working~231 X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=commitdiff_plain;h=67fe9cec87e129a2a41c75d7ed8456a6f3314421;p=helm.git update in static_2 + notation change for lifts and drops --- diff --git a/matita/matita/contribs/lambdadelta/apps_2/examples/ex_cpr_omega.ma b/matita/matita/contribs/lambdadelta/apps_2/examples/ex_cpr_omega.ma index 72b4b347c..649086604 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/examples/ex_cpr_omega.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/examples/ex_cpr_omega.ma @@ -28,7 +28,7 @@ definition Omega3 (s): term ≝ +ⓓⓝ⋆s.(Delta s).(Omega1 s). (* Basic properties *********************************************************) -lemma Delta_lifts (f) (s): ⬆*[f] (Delta s) ≘ (Delta s). +lemma Delta_lifts (f) (s): ⇧*[f] (Delta s) ≘ (Delta s). /4 width=1 by lifts_lref, lifts_bind, lifts_flat/ qed. (* Basic inversion properties ***********************************************) diff --git a/matita/matita/contribs/lambdadelta/apps_2/examples/ex_fpbg_refl.ma b/matita/matita/contribs/lambdadelta/apps_2/examples/ex_fpbg_refl.ma index b41ddae8a..bbd3ec04e 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/examples/ex_fpbg_refl.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/examples/ex_fpbg_refl.ma @@ -33,7 +33,7 @@ definition ApplOmega4 (s0) (s): term ≝ ⓐ⋆s.(ApplOmega1 s0 s). (* Basic properties *********************************************************) lemma ApplDelta_lifts (f:rtmap) (s0) (s): - ⬆*[f] (ApplDelta s0 s) ≘ (ApplDelta s0 s). + ⇧*[f] (ApplDelta s0 s) ≘ (ApplDelta s0 s). /5 width=1 by lifts_sort, lifts_lref, lifts_bind, lifts_flat/ qed. lemma cpr_ApplOmega_12 (h) (G) (L) (s0) (s): ⦃G,L⦄ ⊢ ApplOmega1 s0 s ➡[h] ApplOmega2 s0 s. diff --git a/matita/matita/contribs/lambdadelta/apps_2/functional/flifts.ma b/matita/matita/contribs/lambdadelta/apps_2/functional/flifts.ma index 30b8b6517..b266b3ae8 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/functional/flifts.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/functional/flifts.ma @@ -49,14 +49,14 @@ lemma flifts_flat (f) (I) (V) (T): ↑*[f](ⓕ{I}V.T) = ⓕ{I}↑*[f]V.↑*[f]T. (* 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 [h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) → ⦃G,L⦄⊢#i![h,a] → - ∀K,V. ⬇*[i]L ≘ K.ⓓV → + ∀K,V. ⇩*[i]L ≘ K.ⓓV → ∀n,XV. ⦃G,K⦄ ⊢ V ➡[n,h] XV → - ∀X. ⬆*[↑i]XV ≘ X → + ∀X. ⇧*[↑i]XV ≘ X → ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 → ∃∃T. ⦃G,L1⦄ ⊢ #i ➡*[n,h] T & ⦃G,L2⦄ ⊢ X ➡*[h] T. #h #a #G #L #i #IH #HT #K #V #HLK #n #XV #HVX #X #HXV #L1 #HL1 #L2 #HL2 @@ -56,9 +56,9 @@ qed-. fact cnv_cpm_conf_lpr_atom_ell_aux (h) (a) (G) (L) (i): (∀G0,L0,T0. ⦃G,L,#i⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) → ⦃G,L⦄⊢#i![h,a] → - ∀K,W. ⬇*[i]L ≘ K.ⓛW → + ∀K,W. ⇩*[i]L ≘ K.ⓛW → ∀n,XW. ⦃G,K⦄ ⊢ W ➡[n,h] XW → - ∀X. ⬆*[↑i]XW ≘ X → + ∀X. ⇧*[↑i]XW ≘ X → ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 → ∃∃T. ⦃G,L1⦄ ⊢ #i ➡*[↑n,h] T & ⦃G,L2⦄ ⊢ X ➡*[h] T. #h #a #G #L #i #IH #HT #K #W #HLK #n #XW #HWX #X #HXW #L1 #HL1 #L2 #HL2 @@ -78,9 +78,9 @@ qed-. fact cnv_cpm_conf_lpr_delta_delta_aux (h) (a) (I) (G) (L) (i): (∀G0,L0,T0. ⦃G,L,#i⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) → ⦃G,L⦄⊢#i![h,a] → - ∀K1,V1. ⬇*[i]L ≘ K1.ⓑ{I}V1 → ∀K2,V2. ⬇*[i]L ≘ K2.ⓑ{I}V2 → + ∀K1,V1. ⇩*[i]L ≘ K1.ⓑ{I}V1 → ∀K2,V2. ⇩*[i]L ≘ K2.ⓑ{I}V2 → ∀n1,XV1. ⦃G,K1⦄ ⊢ V1 ➡[n1,h] XV1 → ∀n2,XV2. ⦃G,K2⦄ ⊢ V2 ➡[n2,h] XV2 → - ∀X1. ⬆*[↑i]XV1 ≘ X1 → ∀X2. ⬆*[↑i]XV2 ≘ X2 → + ∀X1. ⇧*[↑i]XV1 ≘ X1 → ∀X2. ⇧*[↑i]XV2 ≘ X2 → ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 → ∃∃T. ⦃G,L1⦄ ⊢ X1 ➡*[n2-n1,h] T & ⦃G,L2⦄ ⊢ X2 ➡*[n1-n2,h] T. #h #a #I #G #L #i #IH #HT @@ -102,7 +102,7 @@ elim (cpms_lifts_sn … HVX1 … HLK1 … HXV1) -XV1 -HLK1 #W1 #HVW1 #HXW1 qed-. fact cnv_cpm_conf_lpr_delta_ell_aux (L) (K1) (K2) (V) (W) (i): - ⬇*[i]L ≘ K1.ⓓV → ⬇*[i]L ≘ K2.ⓛW → ⊥. + ⇩*[i]L ≘ K1.ⓓV → ⇩*[i]L ≘ K2.ⓛW → ⊥. #L #K1 #K2 #V #W #i #HLK1 #HLK2 lapply (drops_mono … HLK2 … HLK1) -L -i #H destruct qed-. @@ -128,7 +128,7 @@ fact cnv_cpm_conf_lpr_bind_zeta_aux (h) (a) (G) (L) (V) (T): (∀G0,L0,T0. ⦃G,L,+ⓓV.T⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) → ⦃G,L⦄ ⊢ +ⓓV.T ![h,a] → ∀V1. ⦃G,L⦄ ⊢V ➡[h] V1 → ∀n1,T1. ⦃G,L.ⓓV⦄ ⊢ T ➡[n1,h] T1 → - ∀T2. ⬆*[1]T2 ≘ T → ∀n2,XT2. ⦃G,L⦄ ⊢ T2 ➡[n2,h] XT2 → + ∀T2. ⇧*[1]T2 ≘ T → ∀n2,XT2. ⦃G,L⦄ ⊢ T2 ➡[n2,h] XT2 → ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 → ∃∃T. ⦃G,L1⦄ ⊢ +ⓓV1.T1 ➡*[n2-n1,h] T & ⦃G,L2⦄ ⊢ XT2 ➡*[n1-n2,h] T. #h #a #G0 #L0 #V0 #T0 #IH #H0 @@ -147,7 +147,7 @@ qed-. fact cnv_cpm_conf_lpr_zeta_zeta_aux (h) (a) (G) (L) (V) (T): (∀G0,L0,T0. ⦃G,L,+ⓓV.T⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) → ⦃G,L⦄ ⊢ +ⓓV.T ![h,a] → - ∀T1. ⬆*[1]T1 ≘ T → ∀T2. ⬆*[1]T2 ≘ T → + ∀T1. ⇧*[1]T1 ≘ T → ∀T2. ⇧*[1]T2 ≘ T → ∀n1,XT1. ⦃G,L⦄ ⊢ T1 ➡[n1,h] XT1 → ∀n2,XT2. ⦃G,L⦄ ⊢ T2 ➡[n2,h] XT2 → ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 → ∃∃T. ⦃G,L1⦄ ⊢ XT1 ➡*[n2-n1,h] T & ⦃G,L2⦄ ⊢ XT2 ➡*[n1-n2,h] T. @@ -208,7 +208,7 @@ fact cnv_cpm_conf_lpr_appl_theta_aux (h) (a) (p) (G) (L) (V) (W) (T): ∀V1. ⦃G,L⦄ ⊢ V ➡[h] V1 → ∀V2. ⦃G,L⦄ ⊢ V ➡[h] V2 → ∀W2. ⦃G,L⦄ ⊢ W ➡[h] W2 → ∀n1,T1. ⦃G,L⦄ ⊢ ⓓ{p}W.T ➡[n1,h] T1 → ∀n2,T2. ⦃G,L.ⓓW⦄ ⊢ T ➡[n2,h] T2 → - ∀U2. ⬆*[1]V2 ≘ U2 → + ∀U2. ⇧*[1]V2 ≘ U2 → ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 → ∃∃T. ⦃G,L1⦄ ⊢ ⓐV1.T1 ➡*[n2-n1,h] T & ⦃G,L2⦄ ⊢ ⓓ{p}W2.ⓐU2.T2 ➡*[n1-n2,h] T. #h #a #p #G0 #L0 #V0 #W0 #T0 #IH #H0 @@ -261,7 +261,7 @@ fact cnv_cpm_conf_lpr_theta_theta_aux (h) (a) (p) (G) (L) (V) (W) (T): ∀V1. ⦃G,L⦄ ⊢ V ➡[h] V1 → ∀V2. ⦃G,L⦄ ⊢ V ➡[h] V2 → ∀W1. ⦃G,L⦄ ⊢ W ➡[h] W1 → ∀W2. ⦃G,L⦄ ⊢ W ➡[h] W2 → ∀n1,T1. ⦃G,L.ⓓW⦄ ⊢ T ➡[n1,h] T1 → ∀n2,T2. ⦃G,L.ⓓW⦄ ⊢ T ➡[n2,h] T2 → - ∀U1. ⬆*[1]V1 ≘ U1 → ∀U2. ⬆*[1]V2 ≘ U2 → + ∀U1. ⇧*[1]V1 ≘ U1 → ∀U2. ⇧*[1]V2 ≘ U2 → ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 → ∃∃T. ⦃G,L1⦄ ⊢ ⓓ{p}W1.ⓐU1.T1 ➡*[n2-n1,h] T & ⦃G,L2⦄ ⊢ ⓓ{p}W2.ⓐU2.T2 ➡*[n1-n2,h] T. #h #a #p #G0 #L0 #V0 #W0 #T0 #IH #H0 diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_drops.ma index bb1e540fe..25bf405df 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_drops.ma @@ -22,7 +22,7 @@ include "basic_2/dynamic/cnv.ma". (* Basic_2A1: uses: snv_lref *) lemma cnv_lref_drops (h) (a) (G): ∀I,K,V,i,L. ⦃G,K⦄ ⊢ V ![h,a] → - ⬇*[i] L ≘ K.ⓑ{I}V → ⦃G,L⦄ ⊢ #i ![h,a]. + ⇩*[i] L ≘ K.ⓑ{I}V → ⦃G,L⦄ ⊢ #i ![h,a]. #h #a #G #I #K #V #i elim i -i [ #L #HV #H lapply (drops_fwd_isid … H ?) -H // #H destruct @@ -38,7 +38,7 @@ qed. (* Basic_2A1: uses: snv_inv_lref *) lemma cnv_inv_lref_drops (h) (a) (G): ∀i,L. ⦃G,L⦄ ⊢ #i ![h,a] → - ∃∃I,K,V. ⬇*[i] L ≘ K.ⓑ{I}V & ⦃G,K⦄ ⊢ V ![h,a]. + ∃∃I,K,V. ⇩*[i] L ≘ K.ⓑ{I}V & ⦃G,K⦄ ⊢ V ![h,a]. #h #a #G #i elim i -i [ #L #H elim (cnv_inv_zero … H) -H #I #K #V #HV #H destruct @@ -52,14 +52,14 @@ qed-. lemma cnv_inv_lref_pair (h) (a) (G): ∀i,L. ⦃G,L⦄ ⊢ #i ![h,a] → - ∀I,K,V. ⬇*[i] L ≘ K.ⓑ{I}V → ⦃G,K⦄ ⊢ V ![h,a]. + ∀I,K,V. ⇩*[i] L ≘ K.ⓑ{I}V → ⦃G,K⦄ ⊢ V ![h,a]. #h #a #G #i #L #H #I #K #V #HLK elim (cnv_inv_lref_drops … H) -H #Z #Y #X #HLY #HX lapply (drops_mono … HLY … HLK) -L #H destruct // qed-. lemma cnv_inv_lref_atom (h) (a) (b) (G): - ∀i,L. ⦃G,L⦄ ⊢ #i ![h,a] → ⬇*[b,𝐔❴i❵] L ≘ ⋆ → ⊥. + ∀i,L. ⦃G,L⦄ ⊢ #i ![h,a] → ⇩*[b,𝐔❴i❵] L ≘ ⋆ → ⊥. #h #a #b #G #i #L #H #Hi elim (cnv_inv_lref_drops … H) -H #Z #Y #X #HLY #_ lapply (drops_gen b … HLY) -HLY #HLY @@ -68,7 +68,7 @@ qed-. lemma cnv_inv_lref_unit (h) (a) (G): ∀i,L. ⦃G,L⦄ ⊢ #i ![h,a] → - ∀I,K. ⬇*[i] L ≘ K.ⓤ{I} → ⊥. + ∀I,K. ⇩*[i] L ≘ K.ⓤ{I} → ⊥. #h #a #G #i #L #H #I #K #HLK elim (cnv_inv_lref_drops … H) -H #Z #Y #X #HLY #_ lapply (drops_mono … HLY … HLK) -L #H destruct diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/lsubv_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/lsubv_drops.ma index 6b0daf223..859eefd95 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/lsubv_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/lsubv_drops.ma @@ -23,8 +23,8 @@ include "basic_2/dynamic/lsubv.ma". (* Basic_2A1: includes: lsubsv_drop_O1_conf *) lemma lsubv_drops_conf_isuni (h) (a) (G): ∀L1,L2. G ⊢ L1 ⫃![h,a] L2 → - ∀b,f,K1. 𝐔⦃f⦄ → ⬇*[b,f] L1 ≘ K1 → - ∃∃K2. G ⊢ K1 ⫃![h,a] K2 & ⬇*[b,f] L2 ≘ K2. + ∀b,f,K1. 𝐔⦃f⦄ → ⇩*[b,f] L1 ≘ K1 → + ∃∃K2. G ⊢ K1 ⫃![h,a] K2 & ⇩*[b,f] L2 ≘ K2. #h #a #G #L1 #L2 #H elim H -L1 -L2 [ /2 width=3 by ex2_intro/ | #I #L1 #L2 #HL12 #IH #b #f #K1 #Hf #H @@ -48,8 +48,8 @@ qed-. (* Basic_2A1: includes: lsubsv_drop_O1_trans *) lemma lsubv_drops_trans_isuni (h) (a) (G): ∀L1,L2. G ⊢ L1 ⫃![h,a] L2 → - ∀b,f,K2. 𝐔⦃f⦄ → ⬇*[b,f] L2 ≘ K2 → - ∃∃K1. G ⊢ K1 ⫃![h,a] K2 & ⬇*[b,f] L1 ≘ K1. + ∀b,f,K2. 𝐔⦃f⦄ → ⇩*[b,f] L2 ≘ K2 → + ∃∃K1. G ⊢ K1 ⫃![h,a] K2 & ⇩*[b,f] L1 ≘ K1. #h #a #G #L1 #L2 #H elim H -L1 -L2 [ /2 width=3 by ex2_intro/ | #I #L1 #L2 #HL12 #IH #b #f #K2 #Hf #H diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_aaa.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_aaa.ma index 2a3eafa28..b0814238a 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_aaa.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_aaa.ma @@ -43,7 +43,7 @@ qed-. (* Basic_1: uses: ty3_repellent *) theorem nta_abst_repellent (h) (a) (p) (G) (K): ∀W,T,U1. ⦃G,K⦄ ⊢ ⓛ{p}W.T :[h,a] U1 → - ∀U2. ⦃G,K.ⓛW⦄ ⊢ T :[h,a] U2 → ⬆*[1] U1 ≘ U2 → ⊥. + ∀U2. ⦃G,K.ⓛW⦄ ⊢ T :[h,a] U2 → ⇧*[1] U1 ≘ U2 → ⊥. #h #a #p #G #K #W #T #U1 #H1 #U2 #H2 #HU12 elim (nta_fwd_aaa … H2) -H2 #A2 #H2T #H2U2 elim (nta_fwd_aaa … H1) -H1 #X1 #H1 #HU1 diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_cpcs.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_cpcs.ma index 4e505925c..d03ca146b 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_cpcs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_cpcs.ma @@ -54,7 +54,7 @@ qed-. lemma nta_inv_ldec_sn_cnv (h) (a) (G) (K) (V): ∀X2. ⦃G,K.ⓛV⦄ ⊢ #0 :[h,a] X2 → - ∃∃U. ⦃G,K⦄ ⊢ V ![h,a] & ⬆*[1] V ≘ U & ⦃G,K.ⓛV⦄ ⊢ U ⬌*[h] X2 & ⦃G,K.ⓛV⦄ ⊢ X2 ![h,a]. + ∃∃U. ⦃G,K⦄ ⊢ V ![h,a] & ⇧*[1] V ≘ U & ⦃G,K.ⓛV⦄ ⊢ U ⬌*[h] X2 & ⦃G,K.ⓛV⦄ ⊢ X2 ![h,a]. #h #a #G #Y #X #X2 #H elim (cnv_inv_cast … H) -H #X1 #HX2 #H1 #HX21 #H2 elim (cnv_inv_zero … H1) -H1 #Z #K #V #HV #H destruct diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_drops.ma index 29cce8c0c..e054072d2 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_drops.ma @@ -21,7 +21,7 @@ include "basic_2/dynamic/nta.ma". lemma nta_ldef (h) (a) (G) (K): ∀V,W. ⦃G,K⦄ ⊢ V :[h,a] W → - ∀U. ⬆*[1] W ≘ U → ⦃G,K.ⓓV⦄ ⊢ #0 :[h,a] U. + ∀U. ⇧*[1] W ≘ U → ⦃G,K.ⓓV⦄ ⊢ #0 :[h,a] U. #h #a #G #K #V #W #H #U #HWU elim (cnv_inv_cast … H) -H #X #HW #HV #HWX #HVX lapply (cnv_lifts … HW (Ⓣ) … (K.ⓓV) … HWU) -HW @@ -33,7 +33,7 @@ qed. lemma nta_ldec_cnv (h) (a) (G) (K): ∀W. ⦃G,K⦄ ⊢ W ![h,a] → - ∀U. ⬆*[1] W ≘ U → ⦃G,K.ⓛW⦄ ⊢ #0 :[h,a] U. + ∀U. ⇧*[1] W ≘ U → ⦃G,K.ⓛW⦄ ⊢ #0 :[h,a] U. #h #a #G #K #W #HW #U #HWU lapply (cnv_lifts … HW (Ⓣ) … (K.ⓛW) … HWU) /3 width=5 by cnv_zero, cnv_cast, cpms_ell, drops_refl, drops_drop/ @@ -41,7 +41,7 @@ qed. lemma nta_lref (h) (a) (I) (G) (K): ∀T,i. ⦃G,K⦄ ⊢ #i :[h,a] T → - ∀U. ⬆*[1] T ≘ U → ⦃G,K.ⓘ{I}⦄ ⊢ #(↑i) :[h,a] U. + ∀U. ⇧*[1] T ≘ U → ⦃G,K.ⓘ{I}⦄ ⊢ #(↑i) :[h,a] U. #h #a #I #G #K #T #i #H #U #HTU elim (cnv_inv_cast … H) -H #X #HT #Hi #HTX #H2 lapply (cnv_lifts … HT (Ⓣ) … (K.ⓘ{I}) … HTU) -HT @@ -76,7 +76,7 @@ lemma nta_lifts_bi (h) (a) (G): d_liftable2_bi … lifts (nta a h G). (* Basic_2A1: was by definition: nta_ldef ntaa_ldef *) lemma nta_ldef_drops (h) (a) (G) (K) (L) (i): ∀V,W. ⦃G,K⦄ ⊢ V :[h,a] W → - ∀U. ⬆*[↑i] W ≘ U → ⬇*[i] L ≘ K.ⓓV → ⦃G,L⦄ ⊢ #i :[h,a] U. + ∀U. ⇧*[↑i] W ≘ U → ⇩*[i] L ≘ K.ⓓV → ⦃G,L⦄ ⊢ #i :[h,a] U. #h #a #G #K #L #i #V #W #HVW #U #HWU #HLK elim (lifts_split_trans … HWU (𝐔❴1❵) (𝐔❴i❵)) [| // ] #X #HWX #HXU /3 width=9 by nta_lifts_bi, nta_ldef/ @@ -84,7 +84,7 @@ qed. lemma nta_ldec_drops_cnv (h) (a) (G) (K) (L) (i): ∀W. ⦃G,K⦄ ⊢ W ![h,a] → - ∀U. ⬆*[↑i] W ≘ U → ⬇*[i] L ≘ K.ⓛW → ⦃G,L⦄ ⊢ #i :[h,a] U. + ∀U. ⇧*[↑i] W ≘ U → ⇩*[i] L ≘ K.ⓛW → ⦃G,L⦄ ⊢ #i :[h,a] U. #h #a #G #K #L #i #W #HW #U #HWU #HLK elim (lifts_split_trans … HWU (𝐔❴1❵) (𝐔❴i❵)) [| // ] #X #HWX #HXU /3 width=9 by nta_lifts_bi, nta_ldec_cnv/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_ind.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_ind.ma index 03ed818b1..325188276 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_ind.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_ind.ma @@ -24,12 +24,12 @@ include "basic_2/dynamic/nta_preserve.ma". lemma nta_ind_rest_cnv (h) (Q:relation4 …): (∀G,L,s. Q G L (⋆s) (⋆(⫯[h]s))) → (∀G,K,V,W,U. - ⦃G,K⦄ ⊢ V :[h,𝟐] W → ⬆*[1] W ≘ U → + ⦃G,K⦄ ⊢ V :[h,𝟐] W → ⇧*[1] W ≘ U → Q G K V W → Q G (K.ⓓV) (#0) U ) → - (∀G,K,W,U. ⦃G,K⦄ ⊢ W ![h,𝟐] → ⬆*[1] W ≘ U → Q G (K.ⓛW) (#0) U) → + (∀G,K,W,U. ⦃G,K⦄ ⊢ W ![h,𝟐] → ⇧*[1] W ≘ U → Q G (K.ⓛW) (#0) U) → (∀I,G,K,W,U,i. - ⦃G,K⦄ ⊢ #i :[h,𝟐] W → ⬆*[1] W ≘ U → + ⦃G,K⦄ ⊢ #i :[h,𝟐] W → ⇧*[1] W ≘ U → Q G K (#i) W → Q G (K.ⓘ{I}) (#↑i) U ) → (∀p,I,G,K,V,T,U. @@ -81,12 +81,12 @@ qed-. lemma nta_ind_ext_cnv_mixed (h) (Q:relation4 …): (∀G,L,s. Q G L (⋆s) (⋆(⫯[h]s))) → (∀G,K,V,W,U. - ⦃G,K⦄ ⊢ V :[h,𝛚] W → ⬆*[1] W ≘ U → + ⦃G,K⦄ ⊢ V :[h,𝛚] W → ⇧*[1] W ≘ U → Q G K V W → Q G (K.ⓓV) (#0) U ) → - (∀G,K,W,U. ⦃G,K⦄ ⊢ W ![h,𝛚] → ⬆*[1] W ≘ U → Q G (K.ⓛW) (#0) U) → + (∀G,K,W,U. ⦃G,K⦄ ⊢ W ![h,𝛚] → ⇧*[1] W ≘ U → Q G (K.ⓛW) (#0) U) → (∀I,G,K,W,U,i. - ⦃G,K⦄ ⊢ #i :[h,𝛚] W → ⬆*[1] W ≘ U → + ⦃G,K⦄ ⊢ #i :[h,𝛚] W → ⇧*[1] W ≘ U → Q G K (#i) W → Q G (K.ⓘ{I}) (#↑i) U ) → (∀p,I,G,K,V,T,U. @@ -146,12 +146,12 @@ qed-. lemma nta_ind_ext_cnv (h) (Q:relation4 …): (∀G,L,s. Q G L (⋆s) (⋆(⫯[h]s))) → (∀G,K,V,W,U. - ⦃G,K⦄ ⊢ V :[h,𝛚] W → ⬆*[1] W ≘ U → + ⦃G,K⦄ ⊢ V :[h,𝛚] W → ⇧*[1] W ≘ U → Q G K V W → Q G (K.ⓓV) (#0) U ) → - (∀G,K,W,U. ⦃G,K⦄ ⊢ W ![h,𝛚] → ⬆*[1] W ≘ U → Q G (K.ⓛW) (#0) U) → + (∀G,K,W,U. ⦃G,K⦄ ⊢ W ![h,𝛚] → ⇧*[1] W ≘ U → Q G (K.ⓛW) (#0) U) → (∀I,G,K,W,U,i. - ⦃G,K⦄ ⊢ #i :[h,𝛚] W → ⬆*[1] W ≘ U → + ⦃G,K⦄ ⊢ #i :[h,𝛚] W → ⇧*[1] W ≘ U → Q G K (#i) W → Q G (K.ⓘ{I}) (#↑i) U ) → (∀p,I,G,K,V,T,U. diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma index de01c6a0d..44dac970e 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma @@ -100,7 +100,7 @@ qed-. lemma nta_inv_ldef_sn (h) (a) (G) (K) (V): ∀X2. ⦃G,K.ⓓV⦄ ⊢ #0 :[h,a] X2 → - ∃∃W,U. ⦃G,K⦄ ⊢ V :[h,a] W & ⬆*[1] W ≘ U & ⦃G,K.ⓓV⦄ ⊢ U ⬌*[h] X2 & ⦃G,K.ⓓV⦄ ⊢ X2 ![h,a]. + ∃∃W,U. ⦃G,K⦄ ⊢ V :[h,a] W & ⇧*[1] W ≘ U & ⦃G,K.ⓓV⦄ ⊢ U ⬌*[h] X2 & ⦃G,K.ⓓV⦄ ⊢ X2 ![h,a]. #h #a #G #Y #X #X2 #H elim (cnv_inv_cast … H) -H #X1 #HX2 #H1 #HX21 #H2 elim (cnv_inv_zero … H1) -H1 #Z #K #V #HV #H destruct @@ -113,7 +113,7 @@ qed-. lemma nta_inv_lref_sn (h) (a) (G) (L): ∀X2,i. ⦃G,L⦄ ⊢ #↑i :[h,a] X2 → - ∃∃I,K,T2,U2. ⦃G,K⦄ ⊢ #i :[h,a] T2 & ⬆*[1] T2 ≘ U2 & ⦃G,K.ⓘ{I}⦄ ⊢ U2 ⬌*[h] X2 & ⦃G,K.ⓘ{I}⦄ ⊢ X2 ![h,a] & L = K.ⓘ{I}. + ∃∃I,K,T2,U2. ⦃G,K⦄ ⊢ #i :[h,a] T2 & ⇧*[1] T2 ≘ U2 & ⦃G,K.ⓘ{I}⦄ ⊢ U2 ⬌*[h] X2 & ⦃G,K.ⓘ{I}⦄ ⊢ X2 ![h,a] & L = K.ⓘ{I}. #h #a #G #L #X2 #i #H elim (cnv_inv_cast … H) -H #X1 #HX2 #H1 #HX21 #H2 elim (cnv_inv_lref … H1) -H1 #I #K #Hi #H destruct @@ -126,8 +126,8 @@ qed-. lemma nta_inv_lref_sn_drops_cnv (h) (a) (G) (L): ∀X2,i. ⦃G,L⦄ ⊢ #i :[h,a] X2 → - ∨∨ ∃∃K,V,W,U. ⬇*[i] L ≘ K.ⓓV & ⦃G,K⦄ ⊢ V :[h,a] W & ⬆*[↑i] W ≘ U & ⦃G,L⦄ ⊢ U ⬌*[h] X2 & ⦃G,L⦄ ⊢ X2 ![h,a] - | ∃∃K,W,U. ⬇*[i] L ≘ K. ⓛW & ⦃G,K⦄ ⊢ W ![h,a] & ⬆*[↑i] W ≘ U & ⦃G,L⦄ ⊢ U ⬌*[h] X2 & ⦃G,L⦄ ⊢ X2 ![h,a]. + ∨∨ ∃∃K,V,W,U. ⇩*[i] L ≘ K.ⓓV & ⦃G,K⦄ ⊢ V :[h,a] W & ⇧*[↑i] W ≘ U & ⦃G,L⦄ ⊢ U ⬌*[h] X2 & ⦃G,L⦄ ⊢ X2 ![h,a] + | ∃∃K,W,U. ⇩*[i] L ≘ K. ⓛW & ⦃G,K⦄ ⊢ W ![h,a] & ⇧*[↑i] W ≘ U & ⦃G,L⦄ ⊢ U ⬌*[h] X2 & ⦃G,L⦄ ⊢ X2 ![h,a]. #h #a #G #L #X2 #i #H elim (cnv_inv_cast … H) -H #X1 #HX2 #H1 #HX21 #H2 elim (cnv_inv_lref_drops … H1) -H1 #I #K #V #HLK #HV @@ -244,8 +244,8 @@ qed-. (* Note: "⦃G, L⦄ ⊢ U2 ⬌*[h] X2" can be "⦃G, L⦄ ⊢ X2 ➡*[h] U2" *) lemma nta_inv_lifts_sn (h) (a) (G): ∀L,T2,X2. ⦃G,L⦄ ⊢ T2 :[h,a] X2 → - ∀b,f,K. ⬇*[b,f] L ≘ K → ∀T1. ⬆*[f] T1 ≘ T2 → - ∃∃U1,U2. ⦃G,K⦄ ⊢ T1 :[h,a] U1 & ⬆*[f] U1 ≘ U2 & ⦃G,L⦄ ⊢ U2 ⬌*[h] X2 & ⦃G,L⦄ ⊢ X2 ![h,a]. + ∀b,f,K. ⇩*[b,f] L ≘ K → ∀T1. ⇧*[f] T1 ≘ T2 → + ∃∃U1,U2. ⦃G,K⦄ ⊢ T1 :[h,a] U1 & ⇧*[f] U1 ≘ U2 & ⦃G,L⦄ ⊢ U2 ⬌*[h] X2 & ⦃G,L⦄ ⊢ X2 ![h,a]. #h #a #G #L #T2 #X2 #H #b #f #K #HLK #T1 #HT12 elim (cnv_inv_cast … H) -H #U2 #HX2 #HT2 #HXU2 #HTU2 lapply (cnv_inv_lifts … HT2 … HLK … HT12) -HT2 #HT1 diff --git a/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_nta_ind.ma b/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_nta_ind.ma index ec6b81822..41a304476 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_nta_ind.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_nta_ind.ma @@ -48,12 +48,12 @@ qed-. lemma nta_ind_cnv (h) (a) (Q:relation4 …): (∀G,L,s. Q G L (⋆s) (⋆(⫯[h]s))) → (∀G,K,V,W,U. - ⦃G,K⦄ ⊢ V :[h,a] W → ⬆*[1] W ≘ U → + ⦃G,K⦄ ⊢ V :[h,a] W → ⇧*[1] W ≘ U → Q G K V W → Q G (K.ⓓV) (#0) U ) → - (∀G,K,W,U. ⦃G,K⦄ ⊢ W ![h,a] → ⬆*[1] W ≘ U → Q G (K.ⓛW) (#0) U) → + (∀G,K,W,U. ⦃G,K⦄ ⊢ W ![h,a] → ⇧*[1] W ≘ U → Q G (K.ⓛW) (#0) U) → (∀I,G,K,W,U,i. - ⦃G,K⦄ ⊢ #i :[h,a] W → ⬆*[1] W ≘ U → + ⦃G,K⦄ ⊢ #i :[h,a] W → ⇧*[1] W ≘ U → Q G K (#i) W → Q G (K.ⓘ{I}) (#↑i) U ) → (∀p,I,G,K,V,T,U. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cnuw_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cnuw_drops.ma index 374aa1284..6492a3b1b 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cnuw_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cnuw_drops.ma @@ -49,7 +49,7 @@ elim (cpms_inv_lref_sn … H) -H * qed. lemma cnuw_atom_drops (h) (b) (G) (L): - ∀i. ⬇*[b,𝐔❴i❵] L ≘ ⋆ → ⦃G,L⦄ ⊢ ➡𝐍𝐖*[h] #i. + ∀i. ⇩*[b,𝐔❴i❵] L ≘ ⋆ → ⦃G,L⦄ ⊢ ➡𝐍𝐖*[h] #i. #h #b #G #L #i #Hi #n #X #H elim (cpms_inv_lref1_drops … H) -H * [ // || #m ] #K #V1 #V2 #HLK lapply (drops_gen b … HLK) -HLK #HLK @@ -57,7 +57,7 @@ lapply (drops_mono … Hi … HLK) -L #H destruct qed. lemma cnuw_unit_drops (h) (I) (G) (L): - ∀K,i. ⬇*[i] L ≘ K.ⓤ{I} → ⦃G,L⦄ ⊢ ➡𝐍𝐖*[h] #i. + ∀K,i. ⇩*[i] L ≘ K.ⓤ{I} → ⦃G,L⦄ ⊢ ➡𝐍𝐖*[h] #i. #h #I #G #L #K #i #HLK #n #X #H elim (cpms_inv_lref1_drops … H) -H * [ // || #m ] #Y #V1 #V2 #HLY lapply (drops_mono … HLK … HLY) -L #H destruct diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma index d422aaf22..081eece9b 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma @@ -80,7 +80,7 @@ lemma cpms_appl_dx (n) (h) (G) (L): qed. lemma cpms_zeta (n) (h) (G) (L): - ∀T1,T. ⬆*[1] T ≘ T1 → + ∀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/ @@ -88,7 +88,7 @@ qed. (* Basic_2A1: uses: cprs_zeta *) lemma cpms_zeta_dx (n) (h) (G) (L): - ∀T2,T. ⬆*[1] T2 ≘ T → + ∀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/ @@ -125,7 +125,7 @@ qed. (* Basic_2A1: uses: cprs_theta_dx *) lemma cpms_theta_dx (n) (h) (G) (L): ∀V1,V. ⦃G,L⦄ ⊢ V1 ➡[h] V → - ∀V2. ⬆*[1] V ≘ V2 → + ∀V2. ⇧*[1] V ≘ V2 → ∀W1,W2. ⦃G,L⦄ ⊢ W1 ➡[h] W2 → ∀T1,T2. ⦃G,L.ⓓW1⦄ ⊢ T1 ➡*[n,h] T2 → ∀p. ⦃G,L⦄ ⊢ ⓐV1.ⓓ{p}W1.T1 ➡*[n,h] ⓓ{p}W2.ⓐV2.T2. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cpms.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cpms.ma index 0e09b27f0..245d44f9c 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cpms.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cpms.ma @@ -72,7 +72,7 @@ qed. (* Basic_2A1: includes: cprs_theta_rc *) theorem cpms_theta_rc (n) (h) (G) (L): - ∀V1,V. ⦃G,L⦄ ⊢ V1 ➡[h] V → ∀V2. ⬆*[1] V ≘ V2 → + ∀V1,V. ⦃G,L⦄ ⊢ V1 ➡[h] V → ∀V2. ⇧*[1] V ≘ V2 → ∀W1,T1,T2. ⦃G,L.ⓓW1⦄ ⊢ T1 ➡*[n,h] T2 → ∀W2. ⦃G,L⦄ ⊢ W1 ➡*[h] W2 → ∀p. ⦃G,L⦄ ⊢ ⓐV1.ⓓ{p}W1.T1 ➡*[n,h] ⓓ{p}W2.ⓐV2.T2. @@ -85,7 +85,7 @@ qed. (* Basic_2A1: includes: cprs_theta *) theorem cpms_theta (n) (h) (G) (L): - ∀V,V2. ⬆*[1] V ≘ V2 → ∀W1,W2. ⦃G,L⦄ ⊢ W1 ➡*[h] W2 → + ∀V,V2. ⇧*[1] V ≘ V2 → ∀W1,W2. ⦃G,L⦄ ⊢ W1 ➡*[h] W2 → ∀T1,T2. ⦃G,L.ⓓW1⦄ ⊢ T1 ➡*[n,h] T2 → ∀V1. ⦃G,L⦄ ⊢ V1 ➡*[h] V → ∀p. ⦃G,L⦄ ⊢ ⓐV1.ⓓ{p}W1.T1 ➡*[n,h] ⓓ{p}W2.ⓐV2.T2. @@ -120,7 +120,7 @@ lemma cpms_inv_appl_sn (n) (h) (G) (L): ⦃G,L⦄ ⊢ T1 ➡*[n1,h] ⓛ{p}W.T & ⦃G,L⦄ ⊢ ⓓ{p}ⓝW.V1.T ➡*[n2,h] X2 & n1 + n2 = n | ∃∃n1,n2,p,V0,V2,V,T. - ⦃G,L⦄ ⊢ V1 ➡*[h] V0 & ⬆*[1] V0 ≘ V2 & + ⦃G,L⦄ ⊢ V1 ➡*[h] V0 & ⇧*[1] V0 ≘ V2 & ⦃G,L⦄ ⊢ T1 ➡*[n1,h] ⓓ{p}V.T & ⦃G,L⦄ ⊢ ⓓ{p}V.ⓐV2.T ➡*[n2,h] X2 & n1 + n2 = n. #n #h #G #L #V1 #T1 #U2 #H diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_drops.ma index 12f11ae45..f98626953 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_drops.ma @@ -47,7 +47,7 @@ qed-. (* Advanced properties ******************************************************) lemma cpms_delta (n) (h) (G): ∀K,V1,V2. ⦃G,K⦄ ⊢ V1 ➡*[n,h] V2 → - ∀W2. ⬆*[1] V2 ≘ W2 → ⦃G,K.ⓓV1⦄ ⊢ #0 ➡*[n,h] W2. + ∀W2. ⇧*[1] V2 ≘ W2 → ⦃G,K.ⓓV1⦄ ⊢ #0 ➡*[n,h] W2. #n #h #G #K #V1 #V2 #H @(cpms_ind_dx … H) -V2 [ /3 width=3 by cpm_cpms, cpm_delta/ | #n1 #n2 #V #V2 #_ #IH #HV2 #W2 #HVW2 @@ -57,7 +57,7 @@ lemma cpms_delta (n) (h) (G): ∀K,V1,V2. ⦃G,K⦄ ⊢ V1 ➡*[n,h] V2 → qed. lemma cpms_ell (n) (h) (G): ∀K,V1,V2. ⦃G,K⦄ ⊢ V1 ➡*[n,h] V2 → - ∀W2. ⬆*[1] V2 ≘ W2 → ⦃G,K.ⓛV1⦄ ⊢ #0 ➡*[↑n,h] W2. + ∀W2. ⇧*[1] V2 ≘ W2 → ⦃G,K.ⓛV1⦄ ⊢ #0 ➡*[↑n,h] W2. #n #h #G #K #V1 #V2 #H @(cpms_ind_dx … H) -V2 [ /3 width=3 by cpm_cpms, cpm_ell/ | #n1 #n2 #V #V2 #_ #IH #HV2 #W2 #HVW2 @@ -67,7 +67,7 @@ lemma cpms_ell (n) (h) (G): ∀K,V1,V2. ⦃G,K⦄ ⊢ V1 ➡*[n,h] V2 → qed. lemma cpms_lref (n) (h) (I) (G): ∀K,T,i. ⦃G,K⦄ ⊢ #i ➡*[n,h] T → - ∀U. ⬆*[1] T ≘ U → ⦃G,K.ⓘ{I}⦄ ⊢ #↑i ➡*[n,h] U. + ∀U. ⇧*[1] T ≘ U → ⦃G,K.ⓘ{I}⦄ ⊢ #↑i ➡*[n,h] U. #n #h #I #G #K #T #i #H @(cpms_ind_dx … H) -T [ /3 width=3 by cpm_cpms, cpm_lref/ | #n1 #n2 #T #T2 #_ #IH #HT2 #U2 #HTU2 @@ -91,9 +91,9 @@ qed. (* Note: apparently this was missing in basic_1 *) (* Basic_2A1: uses: cprs_delta *) lemma cpms_delta_drops (n) (h) (G): - ∀L,K,V,i. ⬇*[i] L ≘ K.ⓓV → + ∀L,K,V,i. ⇩*[i] L ≘ K.ⓓV → ∀V2. ⦃G,K⦄ ⊢ V ➡*[n,h] V2 → - ∀W2. ⬆*[↑i] V2 ≘ W2 → ⦃G,L⦄ ⊢ #i ➡*[n,h] W2. + ∀W2. ⇧*[↑i] V2 ≘ W2 → ⦃G,L⦄ ⊢ #i ➡*[n,h] W2. #n #h #G #L #K #V #i #HLK #V2 #H @(cpms_ind_dx … H) -V2 [ /3 width=6 by cpm_cpms, cpm_delta_drops/ | #n1 #n2 #V1 #V2 #_ #IH #HV12 #W2 #HVW2 @@ -104,9 +104,9 @@ lemma cpms_delta_drops (n) (h) (G): qed. lemma cpms_ell_drops (n) (h) (G): - ∀L,K,W,i. ⬇*[i] L ≘ K.ⓛW → + ∀L,K,W,i. ⇩*[i] L ≘ K.ⓛW → ∀W2. ⦃G,K⦄ ⊢ W ➡*[n,h] W2 → - ∀V2. ⬆*[↑i] W2 ≘ V2 → ⦃G,L⦄ ⊢ #i ➡*[↑n,h] V2. + ∀V2. ⇧*[↑i] W2 ≘ V2 → ⦃G,L⦄ ⊢ #i ➡*[↑n,h] V2. #n #h #G #L #K #W #i #HLK #W2 #H @(cpms_ind_dx … H) -W2 [ /3 width=6 by cpm_cpms, cpm_ell_drops/ | #n1 #n2 #W1 #W2 #_ #IH #HW12 #V2 #HWV2 @@ -121,10 +121,10 @@ qed. lemma cpms_inv_lref1_drops (n) (h) (G): ∀L,T2,i. ⦃G,L⦄ ⊢ #i ➡*[n,h] T2 → ∨∨ ∧∧ T2 = #i & n = 0 - | ∃∃K,V,V2. ⬇*[i] L ≘ K.ⓓV & ⦃G,K⦄ ⊢ V ➡*[n,h] V2 & - ⬆*[↑i] V2 ≘ T2 - | ∃∃m,K,V,V2. ⬇*[i] L ≘ K.ⓛV & ⦃G,K⦄ ⊢ V ➡*[m,h] V2 & - ⬆*[↑i] V2 ≘ T2 & n = ↑m. + | ∃∃K,V,V2. ⇩*[i] L ≘ K.ⓓV & ⦃G,K⦄ ⊢ V ➡*[n,h] V2 & + ⇧*[↑i] V2 ≘ T2 + | ∃∃m,K,V,V2. ⇩*[i] L ≘ K.ⓛV & ⦃G,K⦄ ⊢ V ➡*[m,h] V2 & + ⇧*[↑i] V2 ≘ T2 & n = ↑m. #n #h #G #L #T2 #i #H @(cpms_ind_dx … H) -T2 [ /3 width=1 by or3_intro0, conj/ | #n1 #n2 #T #T2 #_ #IH #HT2 cases IH -IH * @@ -149,7 +149,7 @@ qed-. lemma cpms_inv_delta_sn (n) (h) (G) (K) (V): ∀T2. ⦃G,K.ⓓV⦄ ⊢ #0 ➡*[n,h] T2 → ∨∨ ∧∧ T2 = #0 & n = 0 - | ∃∃V2. ⦃G,K⦄ ⊢ V ➡*[n,h] V2 & ⬆*[1] V2 ≘ T2. + | ∃∃V2. ⦃G,K⦄ ⊢ V ➡*[n,h] V2 & ⇧*[1] V2 ≘ T2. #n #h #G #K #V #T2 #H elim (cpms_inv_lref1_drops … H) -H * [ /3 width=1 by or_introl, conj/ @@ -164,7 +164,7 @@ qed-. lemma cpms_inv_ell_sn (n) (h) (G) (K) (V): ∀T2. ⦃G,K.ⓛV⦄ ⊢ #0 ➡*[n,h] T2 → ∨∨ ∧∧ T2 = #0 & n = 0 - | ∃∃m,V2. ⦃G,K⦄ ⊢ V ➡*[m,h] V2 & ⬆*[1] V2 ≘ T2 & n = ↑m. + | ∃∃m,V2. ⦃G,K⦄ ⊢ V ➡*[m,h] V2 & ⇧*[1] V2 ≘ T2 & n = ↑m. #n #h #G #K #V #T2 #H elim (cpms_inv_lref1_drops … H) -H * [ /3 width=1 by or_introl, conj/ @@ -179,7 +179,7 @@ qed-. lemma cpms_inv_lref_sn (n) (h) (G) (I) (K): ∀U2,i. ⦃G,K.ⓘ{I}⦄ ⊢ #↑i ➡*[n,h] U2 → ∨∨ ∧∧ U2 = #↑i & n = 0 - | ∃∃T2. ⦃G,K⦄ ⊢ #i ➡*[n,h] T2 & ⬆*[1] T2 ≘ U2. + | ∃∃T2. ⦃G,K⦄ ⊢ #i ➡*[n,h] T2 & ⇧*[1] T2 ≘ U2. #n #h #G #I #K #U2 #i #H elim (cpms_inv_lref1_drops … H) -H * [ /3 width=1 by or_introl, conj/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_cprs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_cprs.ma index 069323fb4..3fa433c0f 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_cprs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_cprs.ma @@ -58,7 +58,7 @@ lemma cprs_inv_appl_sn (h) (G) (L): X2 = ⓐV2. T2 | ∃∃p,W,T. ⦃G,L⦄ ⊢ T1 ➡*[h] ⓛ{p}W.T & ⦃G,L⦄ ⊢ ⓓ{p}ⓝW.V1.T ➡*[h] X2 - | ∃∃p,V0,V2,V,T. ⦃G,L⦄ ⊢ V1 ➡*[h] V0 & ⬆*[1] V0 ≘ V2 & + | ∃∃p,V0,V2,V,T. ⦃G,L⦄ ⊢ V1 ➡*[h] V0 & ⇧*[1] V0 ≘ V2 & ⦃G,L⦄ ⊢ T1 ➡*[h] ⓓ{p}V.T & ⦃G,L⦄ ⊢ ⓓ{p}V.ⓐV2.T ➡*[h] X2. #h #G #L #V1 #T1 #X2 #H elim (cpms_inv_appl_sn … H) -H * diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_drops.ma index bd1afeec3..bbc0b19a5 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_drops.ma @@ -22,8 +22,8 @@ include "basic_2/rt_computation/cpms_drops.ma". (* Basic_2A1: was: cprs_inv_lref1 *) lemma cprs_inv_lref1_drops (h) (G): ∀L,T2,i. ⦃G,L⦄ ⊢ #i ➡*[h] T2 → ∨∨ T2 = #i - | ∃∃K,V1,T1. ⬇*[i] L ≘ K.ⓓV1 & ⦃G,K⦄ ⊢ V1 ➡*[h] T1 & - ⬆*[↑i] T1 ≘ T2. + | ∃∃K,V1,T1. ⇩*[i] L ≘ K.ⓓV1 & ⦃G,K⦄ ⊢ V1 ➡*[h] T1 & + ⇧*[↑i] T1 ≘ T2. #h #G #L #T2 #i #H elim (cpms_inv_lref1_drops … H) -H * [ /2 width=1 by or_introl/ | /3 width=6 by ex3_3_intro, or_intror/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs.ma index e0048f7d7..4a0550473 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs.ma @@ -90,7 +90,7 @@ lemma cpxs_pair_sn: ∀h,I,G,L,V1,V2. ⦃G,L⦄ ⊢ V1 ⬈*[h] V2 → qed. lemma cpxs_zeta (h) (G) (L) (V): - ∀T1,T. ⬆*[1] T ≘ T1 → + ∀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/ @@ -98,7 +98,7 @@ qed. (* Basic_2A1: was: cpxs_zeta *) lemma cpxs_zeta_dx (h) (G) (L) (V): - ∀T2,T. ⬆*[1] T2 ≘ T → + ∀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/ @@ -125,7 +125,7 @@ lemma cpxs_beta_dx: ∀h,p,G,L,V1,V2,W1,W2,T1,T2. qed. lemma cpxs_theta_dx: ∀h,p,G,L,V1,V,V2,W1,W2,T1,T2. - ⦃G,L⦄ ⊢ V1 ⬈[h] V → ⬆*[1] V ≘ V2 → ⦃G,L.ⓓW1⦄ ⊢ T1 ⬈*[h] T2 → + ⦃G,L⦄ ⊢ V1 ⬈[h] V → ⇧*[1] V ≘ V2 → ⦃G,L.ⓓW1⦄ ⊢ T1 ⬈*[h] T2 → ⦃G,L⦄ ⊢ W1 ⬈[h] W2 → ⦃G,L⦄ ⊢ ⓐV1.ⓓ{p}W1.T1 ⬈*[h] ⓓ{p}W2.ⓐV2.T2. #h #p #G #L #V1 #V #V2 #W1 #W2 #T1 #T2 #HV1 #HV2 * -T2 /4 width=9 by cpx_cpxs, cpxs_strap1, cpxs_bind_dx, cpxs_flat_dx, cpx_theta/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cpxs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cpxs.ma index 60ddf6394..949e6902c 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cpxs.ma @@ -51,7 +51,7 @@ theorem cpxs_beta: ∀h,p,G,L,V1,V2,W1,W2,T1,T2. qed. theorem cpxs_theta_rc: ∀h,p,G,L,V1,V,V2,W1,W2,T1,T2. - ⦃G,L⦄ ⊢ V1 ⬈[h] V → ⬆*[1] V ≘ V2 → + ⦃G,L⦄ ⊢ V1 ⬈[h] V → ⇧*[1] V ≘ V2 → ⦃G,L.ⓓW1⦄ ⊢ T1 ⬈*[h] T2 → ⦃G,L⦄ ⊢ W1 ⬈*[h] W2 → ⦃G,L⦄ ⊢ ⓐV1.ⓓ{p}W1.T1 ⬈*[h] ⓓ{p}W2.ⓐV2.T2. #h #p #G #L #V1 #V #V2 #W1 #W2 #T1 #T2 #HV1 #HV2 #HT12 #H @(cpxs_ind … H) -W2 @@ -59,7 +59,7 @@ theorem cpxs_theta_rc: ∀h,p,G,L,V1,V,V2,W1,W2,T1,T2. qed. theorem cpxs_theta: ∀h,p,G,L,V1,V,V2,W1,W2,T1,T2. - ⬆*[1] V ≘ V2 → ⦃G,L⦄ ⊢ W1 ⬈*[h] W2 → + ⇧*[1] V ≘ V2 → ⦃G,L⦄ ⊢ W1 ⬈*[h] W2 → ⦃G,L.ⓓW1⦄ ⊢ T1 ⬈*[h] T2 → ⦃G,L⦄ ⊢ V1 ⬈*[h] V → ⦃G,L⦄ ⊢ ⓐV1.ⓓ{p}W1.T1 ⬈*[h] ⓓ{p}W2.ⓐV2.T2. #h #p #G #L #V1 #V #V2 #W1 #W2 #T1 #T2 #HV2 #HW12 #HT12 #H @(TC_ind_dx … V1 H) -V1 @@ -72,7 +72,7 @@ lemma cpxs_inv_appl1: ∀h,G,L,V1,T1,U2. ⦃G,L⦄ ⊢ ⓐV1.T1 ⬈*[h] U2 → ∨∨ ∃∃V2,T2. ⦃G,L⦄ ⊢ V1 ⬈*[h] V2 & ⦃G,L⦄ ⊢ T1 ⬈*[h] T2 & U2 = ⓐV2.T2 | ∃∃p,W,T. ⦃G,L⦄ ⊢ T1 ⬈*[h] ⓛ{p}W.T & ⦃G,L⦄ ⊢ ⓓ{p}ⓝW.V1.T ⬈*[h] U2 - | ∃∃p,V0,V2,V,T. ⦃G,L⦄ ⊢ V1 ⬈*[h] V0 & ⬆*[1] V0 ≘ V2 & + | ∃∃p,V0,V2,V,T. ⦃G,L⦄ ⊢ V1 ⬈*[h] V0 & ⇧*[1] V0 ≘ V2 & ⦃G,L⦄ ⊢ T1 ⬈*[h] ⓓ{p}V.T & ⦃G,L⦄ ⊢ ⓓ{p}V.ⓐV2.T ⬈*[h] U2. #h #G #L #V1 #T1 #U2 #H @(cpxs_ind … H) -U2 [ /3 width=5 by or3_intro0, ex3_2_intro/ ] #U #U2 #_ #HU2 * * diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_drops.ma index 09ba0f251..92c0ca4b6 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_drops.ma @@ -21,7 +21,7 @@ include "basic_2/rt_computation/cpxs.ma". (* Advanced properties ******************************************************) lemma cpxs_delta: ∀h,I,G,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈*[h] V2 → - ∀W2. ⬆*[1] V2 ≘ W2 → ⦃G,K.ⓑ{I}V1⦄ ⊢ #0 ⬈*[h] W2. + ∀W2. ⇧*[1] V2 ≘ W2 → ⦃G,K.ⓑ{I}V1⦄ ⊢ #0 ⬈*[h] W2. #h #I #G #K #V1 #V2 #H @(cpxs_ind … H) -V2 [ /3 width=3 by cpx_cpxs, cpx_delta/ | #V #V2 #_ #HV2 #IH #W2 #HVW2 @@ -31,7 +31,7 @@ lemma cpxs_delta: ∀h,I,G,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈*[h] V2 → qed. lemma cpxs_lref: ∀h,I,G,K,T,i. ⦃G,K⦄ ⊢ #i ⬈*[h] T → - ∀U. ⬆*[1] T ≘ U → ⦃G,K.ⓘ{I}⦄ ⊢ #↑i ⬈*[h] U. + ∀U. ⇧*[1] T ≘ U → ⦃G,K.ⓘ{I}⦄ ⊢ #↑i ⬈*[h] U. #h #I #G #K #T #i #H @(cpxs_ind … H) -T [ /3 width=3 by cpx_cpxs, cpx_lref/ | #T0 #T #_ #HT2 #IH #U #HTU @@ -42,8 +42,8 @@ qed. (* Basic_2A1: was: cpxs_delta *) lemma cpxs_delta_drops: ∀h,I,G,L,K,V1,V2,i. - ⬇*[i] L ≘ K.ⓑ{I}V1 → ⦃G,K⦄ ⊢ V1 ⬈*[h] V2 → - ∀W2. ⬆*[↑i] V2 ≘ W2 → ⦃G,L⦄ ⊢ #i ⬈*[h] W2. + ⇩*[i] L ≘ K.ⓑ{I}V1 → ⦃G,K⦄ ⊢ V1 ⬈*[h] V2 → + ∀W2. ⇧*[↑i] V2 ≘ W2 → ⦃G,L⦄ ⊢ #i ⬈*[h] W2. #h #I #G #L #K #V1 #V2 #i #HLK #H @(cpxs_ind … H) -V2 [ /3 width=7 by cpx_cpxs, cpx_delta_drops/ | #V #V2 #_ #HV2 #IH #W2 #HVW2 @@ -56,7 +56,7 @@ qed. lemma cpxs_inv_zero1: ∀h,G,L,T2. ⦃G,L⦄ ⊢ #0 ⬈*[h] T2 → T2 = #0 ∨ - ∃∃I,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈*[h] V2 & ⬆*[1] V2 ≘ T2 & + ∃∃I,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈*[h] V2 & ⇧*[1] V2 ≘ T2 & L = K.ⓑ{I}V1. #h #G #L #T2 #H @(cpxs_ind … H) -T2 /2 width=1 by or_introl/ #T #T2 #_ #HT2 * @@ -71,7 +71,7 @@ qed-. lemma cpxs_inv_lref1: ∀h,G,L,T2,i. ⦃G,L⦄ ⊢ #↑i ⬈*[h] T2 → T2 = #(↑i) ∨ - ∃∃I,K,T. ⦃G,K⦄ ⊢ #i ⬈*[h] T & ⬆*[1] T ≘ T2 & L = K.ⓘ{I}. + ∃∃I,K,T. ⦃G,K⦄ ⊢ #i ⬈*[h] T & ⇧*[1] T ≘ T2 & L = K.ⓘ{I}. #h #G #L #T2 #i #H @(cpxs_ind … H) -T2 /2 width=1 by or_introl/ #T #T2 #_ #HT2 * [ #H destruct @@ -86,8 +86,8 @@ qed-. (* Basic_2A1: was: cpxs_inv_lref1 *) lemma cpxs_inv_lref1_drops: ∀h,G,L,T2,i. ⦃G,L⦄ ⊢ #i ⬈*[h] T2 → T2 = #i ∨ - ∃∃I,K,V1,T1. ⬇*[i] L ≘ K.ⓑ{I}V1 & ⦃G,K⦄ ⊢ V1 ⬈*[h] T1 & - ⬆*[↑i] T1 ≘ T2. + ∃∃I,K,V1,T1. ⇩*[i] L ≘ K.ⓑ{I}V1 & ⦃G,K⦄ ⊢ V1 ⬈*[h] T1 & + ⇧*[↑i] T1 ≘ T2. #h #G #L #T2 #i #H @(cpxs_ind … H) -T2 /2 width=1 by or_introl/ #T #T2 #_ #HT2 * [ #H destruct diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_toeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_toeq.ma index f0782e12c..8b6725af0 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_toeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_toeq.ma @@ -30,8 +30,8 @@ qed-. (* Note: probably this is an inversion lemma *) (* Basic_2A1: was: cpxs_fwd_delta *) lemma cpxs_fwd_delta_drops (h) (I) (G) (L) (K): - ∀V1,i. ⬇*[i] L ≘ K.ⓑ{I}V1 → - ∀V2. ⬆*[↑i] V1 ≘ V2 → + ∀V1,i. ⇩*[i] L ≘ K.ⓑ{I}V1 → + ∀V2. ⇧*[↑i] V1 ≘ V2 → ∀X2. ⦃G,L⦄ ⊢ #i ⬈*[h] X2 → ∨∨ #i ⩳ X2 | ⦃G,L⦄ ⊢ V2 ⬈*[h] X2. #h #I #G #L #K #V1 #i #HLK #V2 #HV12 #X2 #H @@ -58,7 +58,7 @@ qed-. lemma cpxs_fwd_theta (h) (p) (G) (L): ∀V1,V,T,X2. ⦃G,L⦄ ⊢ ⓐV1.ⓓ{p}V.T ⬈*[h] X2 → - ∀V2. ⬆*[1] V1 ≘ V2 → + ∀V2. ⇧*[1] V1 ≘ V2 → ∨∨ ⓐV1.ⓓ{p}V.T ⩳ X2 | ⦃G,L⦄ ⊢ ⓓ{p}V.ⓐV2.T ⬈*[h] X2. #h #p #G #L #V1 #V #T #X2 #H #V2 #HV12 elim (cpxs_inv_appl1 … H) -H * diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_toeq_vector.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_toeq_vector.ma index bbd7c5c9d..20702a354 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_toeq_vector.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_toeq_vector.ma @@ -37,8 +37,8 @@ qed-. (* Basic_2A1: was: cpxs_fwd_delta_vector *) lemma cpxs_fwd_delta_drops_vector (h) (I) (G) (L) (K): - ∀V1,i. ⬇*[i] L ≘ K.ⓑ{I}V1 → - ∀V2. ⬆*[↑i] V1 ≘ V2 → + ∀V1,i. ⇩*[i] L ≘ K.ⓑ{I}V1 → + ∀V2. ⇧*[↑i] V1 ≘ V2 → ∀Vs,X2. ⦃G,L⦄ ⊢ ⒶVs.#i ⬈*[h] X2 → ∨∨ ⒶVs.#i ⩳ X2 | ⦃G,L⦄ ⊢ ⒶVs.V2 ⬈*[h] X2. #h #I #G #L #K #V1 #i #HLK #V2 #HV12 #Vs @@ -90,7 +90,7 @@ qed-. (* Basic_1: was just: pr3_iso_appls_abbr *) lemma cpxs_fwd_theta_vector (h) (G) (L): - ∀V1b,V2b. ⬆*[1] V1b ≘ V2b → + ∀V1b,V2b. ⇧*[1] V1b ≘ V2b → ∀p,V,T,X2. ⦃G,L⦄ ⊢ ⒶV1b.ⓓ{p}V.T ⬈*[h] X2 → ∨∨ ⒶV1b.ⓓ{p}V.T ⩳ X2 | ⦃G,L⦄ ⊢ ⓓ{p}V.ⒶV2b.T ⬈*[h] X2. #h #G #L #V1b #V2b * -V1b -V2b /3 width=1 by or_intror/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_csx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_csx.ma index b0921440d..07cace3d3 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_csx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_csx.ma @@ -55,7 +55,7 @@ qed. (* Basic_1: was just: sn3_abbr *) (* Basic_2A1: was: csx_lref_bind *) lemma csx_lref_pair_drops (h) (G): - ∀I,L,K,V,i. ⬇*[i] L ≘ K.ⓑ{I}V → + ∀I,L,K,V,i. ⇩*[i] L ≘ K.ⓑ{I}V → ⦃G,K⦄ ⊢ ⬈*[h] 𝐒⦃V⦄ → ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃#i⦄. #h #G #I #L #K #V #i #HLK #HV @csx_intro #X #H #Hi elim (cpx_inv_lref1_drops … H) -H @@ -71,7 +71,7 @@ qed. (* Basic_1: was: sn3_gen_def *) (* Basic_2A1: was: csx_inv_lref_bind *) lemma csx_inv_lref_pair_drops (h) (G): - ∀I,L,K,V,i. ⬇*[i] L ≘ K.ⓑ{I}V → + ∀I,L,K,V,i. ⇩*[i] L ≘ K.ⓑ{I}V → ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃#i⦄ → ⦃G,K⦄ ⊢ ⬈*[h] 𝐒⦃V⦄. #h #G #I #L #K #V #i #HLK #Hi elim (lifts_total V (𝐔❴↑i❵)) @@ -80,9 +80,9 @@ qed-. lemma csx_inv_lref_drops (h) (G): ∀L,i. ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃#i⦄ → - ∨∨ ⬇*[Ⓕ,𝐔❴i❵] L ≘ ⋆ - | ∃∃I,K. ⬇*[i] L ≘ K.ⓤ{I} - | ∃∃I,K,V. ⬇*[i] L ≘ K.ⓑ{I}V & ⦃G,K⦄ ⊢ ⬈*[h] 𝐒⦃V⦄. + ∨∨ ⇩*[Ⓕ,𝐔❴i❵] L ≘ ⋆ + | ∃∃I,K. ⇩*[i] L ≘ K.ⓤ{I} + | ∃∃I,K,V. ⇩*[i] L ≘ K.ⓑ{I}V & ⦃G,K⦄ ⊢ ⬈*[h] 𝐒⦃V⦄. #h #G #L #i #H elim (drops_F_uni L i) /2 width=1 by or3_intro0/ * * /4 width=9 by csx_inv_lref_pair_drops, ex2_3_intro, ex1_2_intro, or3_intro2, or3_intro1/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_csx_vector.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_csx_vector.ma index 571a81546..53473452e 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_csx_vector.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_csx_vector.ma @@ -39,8 +39,8 @@ elim (cpxs_fwd_beta_vector … H) -H #H qed. lemma csx_applv_delta_drops (h) (G): - ∀I,L,K,V1,i. ⬇*[i] L ≘ K.ⓑ{I}V1 → - ∀V2. ⬆*[↑i] V1 ≘ V2 → + ∀I,L,K,V1,i. ⇩*[i] L ≘ K.ⓑ{I}V1 → + ∀V2. ⇧*[↑i] V1 ≘ V2 → ∀Vs. ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃ⒶVs.V2⦄ → ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃ⒶVs.#i⦄. #h #G #I #L #K #V1 #i #HLK #V2 #HV12 #Vs elim Vs -Vs [ /4 width=11 by csx_inv_lifts, csx_lref_pair_drops, drops_isuni_fwd_drop2/ @@ -58,7 +58,7 @@ qed. (* Basic_1: was just: sn3_appls_abbr *) lemma csx_applv_theta (h) (G): - ∀p,L,V1b,V2b. ⬆*[1] V1b ≘ V2b → + ∀p,L,V1b,V2b. ⇧*[1] V1b ≘ V2b → ∀V,T. ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃ⓓ{p}V.ⒶV2b.T⦄ → ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃ⒶV1b.ⓓ{p}V.T⦄. #h #G #p #L #V1b #V2b * -V1b -V2b /2 width=1 by/ #V1b #V2b #V1 #V2 #HV12 #H diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lpx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lpx.ma index 8c4f35b6c..92e42f1f9 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lpx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lpx.ma @@ -71,7 +71,7 @@ lemma csx_bind (h) (G): qed. fact csx_appl_theta_aux (h) (G): - ∀p,L,U. ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃U⦄ → ∀V1,V2. ⬆*[1] V1 ≘ V2 → + ∀p,L,U. ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃U⦄ → ∀V1,V2. ⇧*[1] V1 ≘ V2 → ∀V,T. U = ⓓ{p}V.ⓐV2.T → ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃ⓐV1.ⓓ{p}V.T⦄. #h #G #p #L #X #H @(csx_ind_cpxs … H) -X #X #HVT #IHVT #V1 #V2 #HV12 #V #T #H destruct @@ -107,5 +107,5 @@ qed-. lemma csx_appl_theta (h) (G): ∀p,L,V,V2,T. ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃ⓓ{p}V.ⓐV2.T⦄ → - ∀V1. ⬆*[1] V1 ≘ V2 → ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃ⓐV1.ⓓ{p}V.T⦄. + ∀V1. ⇧*[1] V1 ≘ V2 → ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃ⓐV1.ⓓ{p}V.T⦄. /2 width=5 by csx_appl_theta_aux/ qed. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/jsx_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/jsx_drops.ma index 93368d554..7ac21a90d 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/jsx_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/jsx_drops.ma @@ -21,7 +21,7 @@ include "basic_2/rt_computation/jsx.ma". lemma jsx_fwd_drops_atom_sn (h) (b) (G): ∀L1,L2. G ⊢ L1 ⊒[h] L2 → - ∀f. 𝐔⦃f⦄ → ⬇*[b,f]L1 ≘ ⋆ → ⬇*[b,f]L2 ≘ ⋆. + ∀f. 𝐔⦃f⦄ → ⇩*[b,f]L1 ≘ ⋆ → ⇩*[b,f]L2 ≘ ⋆. #h #b #G #L1 #L2 #H elim H -L1 -L2 [ #f #_ #H // | #I #K1 #K2 #_ #IH #f #Hf #H @@ -35,8 +35,8 @@ qed-. lemma jsx_fwd_drops_unit_sn (h) (b) (G): ∀L1,L2. G ⊢ L1 ⊒[h] L2 → - ∀f. 𝐔⦃f⦄ → ∀I,K1. ⬇*[b,f]L1 ≘ K1.ⓤ{I} → - ∃∃K2. G ⊢ K1 ⊒[h] K2 & ⬇*[b,f]L2 ≘ K2.ⓤ{I}. + ∀f. 𝐔⦃f⦄ → ∀I,K1. ⇩*[b,f]L1 ≘ K1.ⓤ{I} → + ∃∃K2. G ⊢ K1 ⊒[h] K2 & ⇩*[b,f]L2 ≘ K2.ⓤ{I}. #h #b #G #L1 #L2 #H elim H -L1 -L2 [ #f #_ #J #Y1 #H lapply (drops_inv_atom1 … H) -H * #H #_ destruct @@ -54,9 +54,9 @@ qed-. lemma jsx_fwd_drops_pair_sn (h) (b) (G): ∀L1,L2. G ⊢ L1 ⊒[h] L2 → - ∀f. 𝐔⦃f⦄ → ∀I,K1,V. ⬇*[b,f]L1 ≘ K1.ⓑ{I}V → - ∨∨ ∃∃K2. G ⊢ K1 ⊒[h] K2 & ⬇*[b,f]L2 ≘ K2.ⓑ{I}V - | ∃∃K2. G ⊢ K1 ⊒[h] K2 & ⬇*[b,f]L2 ≘ K2.ⓧ & G ⊢ ⬈*[h,V] 𝐒⦃K2⦄. + ∀f. 𝐔⦃f⦄ → ∀I,K1,V. ⇩*[b,f]L1 ≘ K1.ⓑ{I}V → + ∨∨ ∃∃K2. G ⊢ K1 ⊒[h] K2 & ⇩*[b,f]L2 ≘ K2.ⓑ{I}V + | ∃∃K2. G ⊢ K1 ⊒[h] K2 & ⇩*[b,f]L2 ≘ K2.ⓧ & G ⊢ ⬈*[h,V] 𝐒⦃K2⦄. #h #b #G #L1 #L2 #H elim H -L1 -L2 [ #f #_ #J #Y1 #X1 #H lapply (drops_inv_atom1 … H) -H * #H #_ destruct diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_cpms.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_cpms.ma index 591dbd1c1..c75c79f8f 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_cpms.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_cpms.ma @@ -75,7 +75,7 @@ qed-. 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 = Ⓣ. + | ∃∃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 #_ * * @@ -96,7 +96,7 @@ qed-. (* Basic_2A1: uses: scpds_inv_abbr_abst *) 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 = Ⓣ. + ∃∃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_dx … H) -H * [ #V #T #_ #_ #H destruct diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_cpxs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_cpxs.ma index 611aab47b..bf54e6acc 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_cpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_cpxs.ma @@ -41,7 +41,7 @@ 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 = Ⓣ. + | ∃∃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 * * diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_csx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_csx.ma index 2e129485d..a4c10c8e9 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_csx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_csx.ma @@ -38,7 +38,7 @@ lemma rsx_fwd_lref_pair_csx (h) (G): /2 width=4 by rsx_fwd_lref_pair_csx_aux/ qed-. lemma rsx_fwd_lref_pair_csx_drops (h) (G): - ∀I,K,V,i,L. ⬇*[i] L ≘ K.ⓑ{I}V → G ⊢ ⬈*[h,#i] 𝐒⦃L⦄ → ⦃G,K⦄ ⊢ ⬈*[h] 𝐒⦃V⦄. + ∀I,K,V,i,L. ⇩*[i] L ≘ K.ⓑ{I}V → G ⊢ ⬈*[h,#i] 𝐒⦃L⦄ → ⦃G,K⦄ ⊢ ⬈*[h] 𝐒⦃V⦄. #h #G #I #K #V #i elim i -i [ #L #H >(drops_fwd_isid … H) -H /2 width=2 by rsx_fwd_lref_pair_csx/ @@ -57,15 +57,15 @@ lemma rsx_inv_lref_pair (h) (G): /3 width=2 by rsx_fwd_lref_pair_csx, rsx_fwd_pair, conj/ qed-. lemma rsx_inv_lref_pair_drops (h) (G): - ∀I,K,V,i,L. ⬇*[i] L ≘ K.ⓑ{I}V → G ⊢ ⬈*[h,#i] 𝐒⦃L⦄ → + ∀I,K,V,i,L. ⇩*[i] L ≘ K.ⓑ{I}V → G ⊢ ⬈*[h,#i] 𝐒⦃L⦄ → ∧∧ ⦃G,K⦄ ⊢ ⬈*[h] 𝐒⦃V⦄ & G ⊢ ⬈*[h,V] 𝐒⦃K⦄. /3 width=5 by rsx_fwd_lref_pair_csx_drops, rsx_fwd_lref_pair_drops, conj/ qed-. lemma rsx_inv_lref_drops (h) (G): ∀L,i. G ⊢ ⬈*[h,#i] 𝐒⦃L⦄ → - ∨∨ ⬇*[Ⓕ,𝐔❴i❵] L ≘ ⋆ - | ∃∃I,K. ⬇*[i] L ≘ K.ⓤ{I} - | ∃∃I,K,V. ⬇*[i] L ≘ K.ⓑ{I}V & ⦃G,K⦄ ⊢ ⬈*[h] 𝐒⦃V⦄ & G ⊢ ⬈*[h,V] 𝐒⦃K⦄. + ∨∨ ⇩*[Ⓕ,𝐔❴i❵] L ≘ ⋆ + | ∃∃I,K. ⇩*[i] L ≘ K.ⓤ{I} + | ∃∃I,K,V. ⇩*[i] L ≘ K.ⓑ{I}V & ⦃G,K⦄ ⊢ ⬈*[h] 𝐒⦃V⦄ & G ⊢ ⬈*[h,V] 𝐒⦃K⦄. #h #G #L #i #H elim (drops_F_uni L i) [ /2 width=1 by or3_intro0/ | * * /4 width=10 by rsx_fwd_lref_pair_csx_drops, rsx_fwd_lref_pair_drops, ex3_3_intro, ex1_2_intro, or3_intro2, or3_intro1/ @@ -102,7 +102,7 @@ lemma rsx_lref_pair (h) (G): (* Basic_2A1: uses: lsx_lref_be *) lemma rsx_lref_pair_drops (h) (G): ∀K,V. ⦃G,K⦄ ⊢ ⬈*[h] 𝐒⦃V⦄ → G ⊢ ⬈*[h,V] 𝐒⦃K⦄ → - ∀I,i,L. ⬇*[i] L ≘ K.ⓑ{I}V → G ⊢ ⬈*[h,#i] 𝐒⦃L⦄. + ∀I,i,L. ⇩*[i] L ≘ K.ⓑ{I}V → G ⊢ ⬈*[h,#i] 𝐒⦃L⦄. #h #G #K #V #HV #HK #I #i elim i -i [ #L #H >(drops_fwd_isid … H) -H /2 width=1 by rsx_lref_pair/ | #i #IH #L #H diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_drops.ma index 64ebcd666..15c7d4dfb 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_drops.ma @@ -43,13 +43,13 @@ qed-. (* Advanced properties ******************************************************) (* Basic_2A1: uses: lsx_lref_free *) -lemma rsx_lref_atom_drops (h) (G): ∀L,i. ⬇*[Ⓕ,𝐔❴i❵] L ≘ ⋆ → G ⊢ ⬈*[h,#i] 𝐒⦃L⦄. +lemma rsx_lref_atom_drops (h) (G): ∀L,i. ⇩*[Ⓕ,𝐔❴i❵] L ≘ ⋆ → G ⊢ ⬈*[h,#i] 𝐒⦃L⦄. #h #G #L1 #i #HL1 @(rsx_lifts … (#0) … HL1) -HL1 // qed. (* Basic_2A1: uses: lsx_lref_skip *) -lemma rsx_lref_unit_drops (h) (G): ∀I,L,K,i. ⬇*[i] L ≘ K.ⓤ{I} → G ⊢ ⬈*[h,#i] 𝐒⦃L⦄. +lemma rsx_lref_unit_drops (h) (G): ∀I,L,K,i. ⇩*[i] L ≘ K.ⓤ{I} → G ⊢ ⬈*[h,#i] 𝐒⦃L⦄. #h #G #I #L1 #K1 #i #HL1 @(rsx_lifts … (#0) … HL1) -HL1 // qed. @@ -59,7 +59,7 @@ qed. (* Basic_2A1: uses: lsx_fwd_lref_be *) lemma rsx_fwd_lref_pair_drops (h) (G): ∀L,i. G ⊢ ⬈*[h,#i] 𝐒⦃L⦄ → - ∀I,K,V. ⬇*[i] L ≘ K.ⓑ{I}V → G ⊢ ⬈*[h,V] 𝐒⦃K⦄. + ∀I,K,V. ⇩*[i] L ≘ K.ⓑ{I}V → G ⊢ ⬈*[h,V] 𝐒⦃K⦄. #h #G #L #i #HL #I #K #V #HLK lapply (rsx_inv_lifts … HL … HLK … (#0) ?) -L /2 width=2 by rsx_fwd_pair/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/cpce.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/cpce.ma index 3da6a1598..7deb96dab 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/cpce.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/cpce.ma @@ -25,9 +25,9 @@ inductive cpce (h): relation4 genv lenv term term ≝ | cpce_zero: ∀G,K,I. (∀n,p,W,V,U. I = BPair Abst W → ⦃G,K⦄ ⊢ W ➡*[n,h] ⓛ{p}V.U → ⊥) → cpce h G (K.ⓘ{I}) (#0) (#0) | cpce_eta : ∀n,p,G,K,W,V1,V2,W2,U. ⦃G,K⦄ ⊢ W ➡*[n,h] ⓛ{p}V1.U → - cpce h G K V1 V2 → ⬆*[1] V2 ≘ W2 → cpce h G (K.ⓛW) (#0) (+ⓛW2.ⓐ#0.#1) + cpce h G K V1 V2 → ⇧*[1] V2 ≘ W2 → cpce h G (K.ⓛW) (#0) (+ⓛW2.ⓐ#0.#1) | cpce_lref: ∀I,G,K,T,U,i. cpce h G K (#i) T → - ⬆*[1] T ≘ U → cpce h G (K.ⓘ{I}) (#↑i) U + ⇧*[1] T ≘ U → cpce h G (K.ⓘ{I}) (#↑i) U | cpce_gref: ∀G,L,l. cpce h G L (§l) (§l) | cpce_bind: ∀p,I,G,K,V1,V2,T1,T2. cpce h G K V1 V2 → cpce h G (K.ⓑ{I}V1) T1 T2 → @@ -79,7 +79,7 @@ lemma cpce_inv_zero_sn (h) (G) (K) (X2): ∀I. ⦃G,K.ⓘ{I}⦄ ⊢ #0 ⬌η[h] X2 → ∨∨ ∧∧ ∀n,p,W,V,U. I = BPair Abst W → ⦃G,K⦄ ⊢ W ➡*[n,h] ⓛ{p}V.U → ⊥ & #0 = X2 | ∃∃n,p,W,V1,V2,W2,U. ⦃G,K⦄ ⊢ W ➡*[n,h] ⓛ{p}V1.U & ⦃G,K⦄ ⊢ V1 ⬌η[h] V2 - & ⬆*[1] V2 ≘ W2 & I = BPair Abst W & +ⓛW2.ⓐ#0.#1 = X2. + & ⇧*[1] V2 ≘ W2 & I = BPair Abst W & +ⓛW2.ⓐ#0.#1 = X2. #h #G #Y0 #X2 #Z @(insert_eq_0 … (Y0.ⓘ{Z})) #Y @(insert_eq_0 … (#0)) #X1 @@ -97,7 +97,7 @@ qed-. lemma cpce_inv_lref_sn (h) (G) (K) (X2): ∀I,i. ⦃G,K.ⓘ{I}⦄ ⊢ #↑i ⬌η[h] X2 → - ∃∃T2. ⦃G,K⦄ ⊢ #i ⬌η[h] T2 & ⬆*[1] T2 ≘ X2. + ∃∃T2. ⦃G,K⦄ ⊢ #i ⬌η[h] T2 & ⇧*[1] T2 ≘ X2. #h #G #Y0 #X2 #Z #j @(insert_eq_0 … (Y0.ⓘ{Z})) #Y @(insert_eq_0 … (#↑j)) #X1 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/cpce_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/cpce_drops.ma index 49bf1e885..6e8afb63c 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/cpce_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_conversion/cpce_drops.ma @@ -22,8 +22,8 @@ include "basic_2/rt_conversion/cpce.ma". lemma cpce_eta_drops (h) (n) (G) (K): ∀p,W,V1,U. ⦃G,K⦄ ⊢ W ➡*[n,h] ⓛ{p}V1.U → ∀V2. ⦃G,K⦄ ⊢ V1 ⬌η[h] V2 → - ∀i,L. ⬇*[i] L ≘ K.ⓛW → - ∀W2. ⬆*[↑i] V2 ≘ W2 → ⦃G,L⦄ ⊢ #i ⬌η[h] +ⓛW2.ⓐ#0.#↑i. + ∀i,L. ⇩*[i] L ≘ K.ⓛW → + ∀W2. ⇧*[↑i] V2 ≘ W2 → ⦃G,L⦄ ⊢ #i ⬌η[h] +ⓛW2.ⓐ#0.#↑i. #h #n #G #K #p #W #V1 #U #HWU #V2 #HV12 #i elim i -i [ #L #HLK #W2 #HVW2 >(drops_fwd_isid … HLK) -L [| // ] /2 width=8 by cpce_eta/ @@ -35,7 +35,7 @@ lemma cpce_eta_drops (h) (n) (G) (K): qed. lemma cpce_zero_drops (h) (G): - ∀i,L. (∀n,p,K,W,V,U. ⬇*[i] L ≘ K.ⓛW → ⦃G,K⦄ ⊢ W ➡*[n,h] ⓛ{p}V.U → ⊥) → + ∀i,L. (∀n,p,K,W,V,U. ⇩*[i] L ≘ K.ⓛW → ⦃G,K⦄ ⊢ W ➡*[n,h] ⓛ{p}V.U → ⊥) → ⦃G,L⦄ ⊢ #i ⬌η[h] #i. #h #G #i elim i -i [ * [ #_ // ] #L #I #Hi diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_drops.ma index 8d9a8ce0e..2eebfb16d 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_drops.ma @@ -21,7 +21,7 @@ include "basic_2/rt_transition/cnr.ma". (* Basic_1: was only: nf2_csort_lref *) lemma cnr_lref_atom (h) (b) (G) (L): - ∀i. ⬇*[b,𝐔❴i❵] L ≘ ⋆ → ⦃G,L⦄ ⊢ ➡[h] 𝐍⦃#i⦄. + ∀i. ⇩*[b,𝐔❴i❵] L ≘ ⋆ → ⦃G,L⦄ ⊢ ➡[h] 𝐍⦃#i⦄. #h #b #G #L #i #Hi #X #H elim (cpr_inv_lref1_drops … H) -H // * #K #V1 #V2 #HLK lapply (drops_gen b … HLK) -HLK #HLK @@ -30,7 +30,7 @@ qed. (* Basic_1: was: nf2_lref_abst *) lemma cnr_lref_abst (h) (G) (L): - ∀K,V,i. ⬇*[i] L ≘ K.ⓛV → ⦃G,L⦄ ⊢ ➡[h] 𝐍⦃#i⦄. + ∀K,V,i. ⇩*[i] L ≘ K.ⓛV → ⦃G,L⦄ ⊢ ➡[h] 𝐍⦃#i⦄. #h #G #L #K #V #i #HLK #X #H elim (cpr_inv_lref1_drops … H) -H // * #K0 #V1 #V2 #HLK0 #_ #_ @@ -38,7 +38,7 @@ lapply (drops_mono … HLK … HLK0) -L #H destruct qed. lemma cnr_lref_unit (h) (I) (G) (L): - ∀K,i. ⬇*[i] L ≘ K.ⓤ{I} → ⦃G,L⦄ ⊢ ➡[h] 𝐍⦃#i⦄. + ∀K,i. ⇩*[i] L ≘ K.ⓤ{I} → ⦃G,L⦄ ⊢ ➡[h] 𝐍⦃#i⦄. #h #I #G #L #K #i #HLK #X #H elim (cpr_inv_lref1_drops … H) -H // * #K0 #V1 #V2 #HLK0 #_ #_ @@ -59,7 +59,7 @@ qed-. (* Basic_2A1: was: cnr_inv_delta *) lemma cnr_inv_lref_abbr (h) (G) (L): - ∀K,V,i. ⬇*[i] L ≘ K.ⓓV → ⦃G,L⦄ ⊢ ➡[h] 𝐍⦃#i⦄ → ⊥. + ∀K,V,i. ⇩*[i] L ≘ K.ⓓV → ⦃G,L⦄ ⊢ ➡[h] 𝐍⦃#i⦄ → ⊥. #h #G #L #K #V #i #HLK #H elim (lifts_total V 𝐔❴↑i❵) #W #HVW lapply (H W ?) -H [ /3 width=6 by cpm_delta_drops/ ] -HLK #H destruct diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_drops.ma index e532b364a..70cffc7bd 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_drops.ma @@ -20,12 +20,12 @@ include "basic_2/rt_transition/cnx.ma". (* Properties with generic slicing ******************************************) -lemma cnx_lref_atom: ∀h,G,L,i. ⬇*[i] L ≘ ⋆ → ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃#i⦄. +lemma cnx_lref_atom: ∀h,G,L,i. ⇩*[i] L ≘ ⋆ → ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃#i⦄. #h #G #L #i #Hi #X #H elim (cpx_inv_lref1_drops … H) -H // * #I #K #V1 #V2 #HLK lapply (drops_mono … Hi … HLK) -L #H destruct qed. -lemma cnx_lref_unit: ∀h,I,G,L,K,i. ⬇*[i] L ≘ K.ⓤ{I} → ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃#i⦄. +lemma cnx_lref_unit: ∀h,I,G,L,K,i. ⇩*[i] L ≘ K.ⓤ{I} → ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃#i⦄. #h #I #G #L #K #i #HLK #X #H elim (cpx_inv_lref1_drops … H) -H // * #Z #Y #V1 #V2 #HLY lapply (drops_mono … HLK … HLY) -L #H destruct qed. @@ -40,7 +40,7 @@ qed-. (* Inversion lemmas with generic slicing ************************************) (* Basic_2A1: was: cnx_inv_delta *) -lemma cnx_inv_lref_pair: ∀h,I,G,L,K,V,i. ⬇*[i] L ≘ K.ⓑ{I}V → ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃#i⦄ → ⊥. +lemma cnx_inv_lref_pair: ∀h,I,G,L,K,V,i. ⇩*[i] L ≘ K.ⓑ{I}V → ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃#i⦄ → ⊥. #h #I #G #L #K #V #i #HLK #H elim (lifts_total V (𝐔❴↑i❵)) #W #HVW lapply (H W ?) -H /2 width=7 by cpx_delta_drops/ -HLK diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg.ma index 72656dd1a..75e0211d5 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg.ma @@ -27,11 +27,11 @@ inductive cpg (Rt:relation rtc) (h): rtc → relation4 genv lenv term term ≝ | cpg_atom : ∀I,G,L. cpg Rt h (𝟘𝟘) G L (⓪{I}) (⓪{I}) | cpg_ess : ∀G,L,s. cpg Rt h (𝟘𝟙) G L (⋆s) (⋆(⫯[h]s)) | cpg_delta: ∀c,G,L,V1,V2,W2. cpg Rt h c G L V1 V2 → - ⬆*[1] V2 ≘ W2 → cpg Rt h c G (L.ⓓV1) (#0) W2 + ⇧*[1] V2 ≘ W2 → cpg Rt h c G (L.ⓓV1) (#0) W2 | cpg_ell : ∀c,G,L,V1,V2,W2. cpg Rt h c G L V1 V2 → - ⬆*[1] V2 ≘ W2 → cpg Rt h (c+𝟘𝟙) G (L.ⓛV1) (#0) W2 + ⇧*[1] V2 ≘ W2 → cpg Rt h (c+𝟘𝟙) G (L.ⓛV1) (#0) W2 | cpg_lref : ∀c,I,G,L,T,U,i. cpg Rt h c G L (#i) T → - ⬆*[1] T ≘ U → cpg Rt h c G (L.ⓘ{I}) (#↑i) U + ⇧*[1] T ≘ U → cpg Rt h c G (L.ⓘ{I}) (#↑i) U | cpg_bind : ∀cV,cT,p,I,G,L,V1,V2,T1,T2. cpg Rt h cV G L V1 V2 → cpg Rt h cT G (L.ⓑ{I}V1) T1 T2 → cpg Rt h ((↕*cV)∨cT) G L (ⓑ{p,I}V1.T1) (ⓑ{p,I}V2.T2) @@ -41,7 +41,7 @@ inductive cpg (Rt:relation rtc) (h): rtc → relation4 genv lenv term term ≝ | cpg_cast : ∀cU,cT,G,L,U1,U2,T1,T2. Rt cU cT → cpg Rt h cU G L U1 U2 → cpg Rt h cT G L T1 T2 → cpg Rt h (cU∨cT) G L (ⓝU1.T1) (ⓝU2.T2) -| cpg_zeta : ∀c,G,L,V,T1,T,T2. ⬆*[1] T ≘ T1 → cpg Rt h c G L T T2 → +| cpg_zeta : ∀c,G,L,V,T1,T,T2. ⇧*[1] T ≘ T1 → cpg Rt h c G L T T2 → cpg Rt h (c+𝟙𝟘) G L (+ⓓV.T1) T2 | cpg_eps : ∀c,G,L,V,T1,T2. cpg Rt h c G L T1 T2 → cpg Rt h (c+𝟙𝟘) G L (ⓝV.T1) T2 | cpg_ee : ∀c,G,L,V1,V2,T. cpg Rt h c G L V1 V2 → cpg Rt h (c+𝟘𝟙) G L (ⓝV1.T) V2 @@ -49,7 +49,7 @@ inductive cpg (Rt:relation rtc) (h): rtc → relation4 genv lenv term term ≝ cpg Rt h cV G L V1 V2 → cpg Rt h cW G L W1 W2 → cpg Rt h cT G (L.ⓛW1) T1 T2 → cpg Rt h (((↕*cV)∨(↕*cW)∨cT)+𝟙𝟘) G L (ⓐV1.ⓛ{p}W1.T1) (ⓓ{p}ⓝW2.V2.T2) | cpg_theta: ∀cV,cW,cT,p,G,L,V1,V,V2,W1,W2,T1,T2. - cpg Rt h cV G L V1 V → ⬆*[1] V ≘ V2 → cpg Rt h cW G L W1 W2 → + cpg Rt h cV G L V1 V → ⇧*[1] V ≘ V2 → cpg Rt h cW G L W1 W2 → cpg Rt h cT G (L.ⓓW1) T1 T2 → cpg Rt h (((↕*cV)∨(↕*cW)∨cT)+𝟙𝟘) G L (ⓐV1.ⓓ{p}W1.T1) (ⓓ{p}W2.ⓐV2.T2) . @@ -71,11 +71,11 @@ qed. fact cpg_inv_atom1_aux: ∀Rt,c,h,G,L,T1,T2. ⦃G,L⦄ ⊢ T1 ⬈[Rt,c,h] T2 → ∀J. T1 = ⓪{J} → ∨∨ T2 = ⓪{J} ∧ c = 𝟘𝟘 | ∃∃s. J = Sort s & T2 = ⋆(⫯[h]s) & c = 𝟘𝟙 - | ∃∃cV,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⬆*[1] V2 ≘ T2 & + | ∃∃cV,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⇧*[1] V2 ≘ T2 & L = K.ⓓV1 & J = LRef 0 & c = cV - | ∃∃cV,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⬆*[1] V2 ≘ T2 & + | ∃∃cV,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⇧*[1] V2 ≘ T2 & L = K.ⓛV1 & J = LRef 0 & c = cV+𝟘𝟙 - | ∃∃I,K,T,i. ⦃G,K⦄ ⊢ #i ⬈[Rt,c,h] T & ⬆*[1] T ≘ T2 & + | ∃∃I,K,T,i. ⦃G,K⦄ ⊢ #i ⬈[Rt,c,h] T & ⇧*[1] T ≘ T2 & L = K.ⓘ{I} & J = LRef (↑i). #Rt #c #h #G #L #T1 #T2 * -c -G -L -T1 -T2 [ #I #G #L #J #H destruct /3 width=1 by or5_intro0, conj/ @@ -97,11 +97,11 @@ qed-. lemma cpg_inv_atom1: ∀Rt,c,h,J,G,L,T2. ⦃G,L⦄ ⊢ ⓪{J} ⬈[Rt,c,h] T2 → ∨∨ T2 = ⓪{J} ∧ c = 𝟘𝟘 | ∃∃s. J = Sort s & T2 = ⋆(⫯[h]s) & c = 𝟘𝟙 - | ∃∃cV,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⬆*[1] V2 ≘ T2 & + | ∃∃cV,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⇧*[1] V2 ≘ T2 & L = K.ⓓV1 & J = LRef 0 & c = cV - | ∃∃cV,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⬆*[1] V2 ≘ T2 & + | ∃∃cV,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⇧*[1] V2 ≘ T2 & L = K.ⓛV1 & J = LRef 0 & c = cV+𝟘𝟙 - | ∃∃I,K,T,i. ⦃G,K⦄ ⊢ #i ⬈[Rt,c,h] T & ⬆*[1] T ≘ T2 & + | ∃∃I,K,T,i. ⦃G,K⦄ ⊢ #i ⬈[Rt,c,h] T & ⇧*[1] T ≘ T2 & L = K.ⓘ{I} & J = LRef (↑i). /2 width=3 by cpg_inv_atom1_aux/ qed-. @@ -117,9 +117,9 @@ qed-. lemma cpg_inv_zero1: ∀Rt,c,h,G,L,T2. ⦃G,L⦄ ⊢ #0 ⬈[Rt,c,h] T2 → ∨∨ T2 = #0 ∧ c = 𝟘𝟘 - | ∃∃cV,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⬆*[1] V2 ≘ T2 & + | ∃∃cV,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⇧*[1] V2 ≘ T2 & L = K.ⓓV1 & c = cV - | ∃∃cV,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⬆*[1] V2 ≘ T2 & + | ∃∃cV,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⇧*[1] V2 ≘ T2 & L = K.ⓛV1 & c = cV+𝟘𝟙. #Rt #c #h #G #L #T2 #H elim (cpg_inv_atom1 … H) -H * /3 width=1 by or3_intro0, conj/ @@ -131,7 +131,7 @@ qed-. lemma cpg_inv_lref1: ∀Rt,c,h,G,L,T2,i. ⦃G,L⦄ ⊢ #↑i ⬈[Rt,c,h] T2 → ∨∨ T2 = #(↑i) ∧ c = 𝟘𝟘 - | ∃∃I,K,T. ⦃G,K⦄ ⊢ #i ⬈[Rt,c,h] T & ⬆*[1] T ≘ T2 & L = K.ⓘ{I}. + | ∃∃I,K,T. ⦃G,K⦄ ⊢ #i ⬈[Rt,c,h] T & ⇧*[1] T ≘ T2 & L = K.ⓘ{I}. #Rt #c #h #G #L #T2 #i #H elim (cpg_inv_atom1 … H) -H * /3 width=1 by or_introl, conj/ [ #s #H destruct @@ -153,7 +153,7 @@ fact cpg_inv_bind1_aux: ∀Rt,c,h,G,L,U,U2. ⦃G,L⦄ ⊢ U ⬈[Rt,c,h] U2 → ∀p,J,V1,U1. U = ⓑ{p,J}V1.U1 → ∨∨ ∃∃cV,cT,V2,T2. ⦃G,L⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⦃G,L.ⓑ{J}V1⦄ ⊢ U1 ⬈[Rt,cT,h] T2 & U2 = ⓑ{p,J}V2.T2 & c = ((↕*cV)∨cT) - | ∃∃cT,T. ⬆*[1] T ≘ U1 & ⦃G,L⦄ ⊢ T ⬈[Rt,cT,h] U2 & + | ∃∃cT,T. ⇧*[1] T ≘ U1 & ⦃G,L⦄ ⊢ T ⬈[Rt,cT,h] U2 & p = true & J = Abbr & c = cT+𝟙𝟘. #Rt #c #h #G #L #U #U2 * -c -G -L -U -U2 [ #I #G #L #q #J #W #U1 #H destruct @@ -175,14 +175,14 @@ qed-. lemma cpg_inv_bind1: ∀Rt,c,h,p,I,G,L,V1,T1,U2. ⦃G,L⦄ ⊢ ⓑ{p,I}V1.T1 ⬈[Rt,c,h] U2 → ∨∨ ∃∃cV,cT,V2,T2. ⦃G,L⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⦃G,L.ⓑ{I}V1⦄ ⊢ T1 ⬈[Rt,cT,h] T2 & U2 = ⓑ{p,I}V2.T2 & c = ((↕*cV)∨cT) - | ∃∃cT,T. ⬆*[1] T ≘ T1 & ⦃G,L⦄ ⊢ T ⬈[Rt,cT,h] U2 & + | ∃∃cT,T. ⇧*[1] T ≘ T1 & ⦃G,L⦄ ⊢ T ⬈[Rt,cT,h] U2 & p = true & I = Abbr & c = cT+𝟙𝟘. /2 width=3 by cpg_inv_bind1_aux/ qed-. lemma cpg_inv_abbr1: ∀Rt,c,h,p,G,L,V1,T1,U2. ⦃G,L⦄ ⊢ ⓓ{p}V1.T1 ⬈[Rt,c,h] U2 → ∨∨ ∃∃cV,cT,V2,T2. ⦃G,L⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⦃G,L.ⓓV1⦄ ⊢ T1 ⬈[Rt,cT,h] T2 & U2 = ⓓ{p}V2.T2 & c = ((↕*cV)∨cT) - | ∃∃cT,T. ⬆*[1] T ≘ T1 & ⦃G,L⦄ ⊢ T ⬈[Rt,cT,h] U2 & + | ∃∃cT,T. ⇧*[1] T ≘ T1 & ⦃G,L⦄ ⊢ T ⬈[Rt,cT,h] U2 & p = true & c = cT+𝟙𝟘. #Rt #c #h #p #G #L #V1 #T1 #U2 #H elim (cpg_inv_bind1 … H) -H * /3 width=8 by ex4_4_intro, ex4_2_intro, or_introl, or_intror/ @@ -203,7 +203,7 @@ fact cpg_inv_appl1_aux: ∀Rt,c,h,G,L,U,U2. ⦃G,L⦄ ⊢ U ⬈[Rt,c,h] U2 → U2 = ⓐV2.T2 & c = ((↕*cV)∨cT) | ∃∃cV,cW,cT,p,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⦃G,L⦄ ⊢ W1 ⬈[Rt,cW,h] W2 & ⦃G,L.ⓛW1⦄ ⊢ T1 ⬈[Rt,cT,h] T2 & U1 = ⓛ{p}W1.T1 & U2 = ⓓ{p}ⓝW2.V2.T2 & c = ((↕*cV)∨(↕*cW)∨cT)+𝟙𝟘 - | ∃∃cV,cW,cT,p,V,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ⬈[Rt,cV,h] V & ⬆*[1] V ≘ V2 & ⦃G,L⦄ ⊢ W1 ⬈[Rt,cW,h] W2 & ⦃G,L.ⓓW1⦄ ⊢ T1 ⬈[Rt,cT,h] T2 & + | ∃∃cV,cW,cT,p,V,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ⬈[Rt,cV,h] V & ⇧*[1] V ≘ V2 & ⦃G,L⦄ ⊢ W1 ⬈[Rt,cW,h] W2 & ⦃G,L.ⓓW1⦄ ⊢ T1 ⬈[Rt,cT,h] T2 & U1 = ⓓ{p}W1.T1 & U2 = ⓓ{p}W2.ⓐV2.T2 & c = ((↕*cV)∨(↕*cW)∨cT)+𝟙𝟘. #Rt #c #h #G #L #U #U2 * -c -G -L -U -U2 [ #I #G #L #W #U1 #H destruct @@ -227,7 +227,7 @@ lemma cpg_inv_appl1: ∀Rt,c,h,G,L,V1,U1,U2. ⦃G,L⦄ ⊢ ⓐV1.U1 ⬈[Rt,c,h] U2 = ⓐV2.T2 & c = ((↕*cV)∨cT) | ∃∃cV,cW,cT,p,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⦃G,L⦄ ⊢ W1 ⬈[Rt,cW,h] W2 & ⦃G,L.ⓛW1⦄ ⊢ T1 ⬈[Rt,cT,h] T2 & U1 = ⓛ{p}W1.T1 & U2 = ⓓ{p}ⓝW2.V2.T2 & c = ((↕*cV)∨(↕*cW)∨cT)+𝟙𝟘 - | ∃∃cV,cW,cT,p,V,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ⬈[Rt,cV,h] V & ⬆*[1] V ≘ V2 & ⦃G,L⦄ ⊢ W1 ⬈[Rt,cW,h] W2 & ⦃G,L.ⓓW1⦄ ⊢ T1 ⬈[Rt,cT,h] T2 & + | ∃∃cV,cW,cT,p,V,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ⬈[Rt,cV,h] V & ⇧*[1] V ≘ V2 & ⦃G,L⦄ ⊢ W1 ⬈[Rt,cW,h] W2 & ⦃G,L.ⓓW1⦄ ⊢ T1 ⬈[Rt,cT,h] T2 & U1 = ⓓ{p}W1.T1 & U2 = ⓓ{p}W2.ⓐV2.T2 & c = ((↕*cV)∨(↕*cW)∨cT)+𝟙𝟘. /2 width=3 by cpg_inv_appl1_aux/ qed-. @@ -265,9 +265,9 @@ lemma cpg_inv_cast1: ∀Rt,c,h,G,L,V1,U1,U2. ⦃G,L⦄ ⊢ ⓝV1.U1 ⬈[Rt,c,h] lemma cpg_inv_zero1_pair: ∀Rt,c,h,I,G,K,V1,T2. ⦃G,K.ⓑ{I}V1⦄ ⊢ #0 ⬈[Rt,c,h] T2 → ∨∨ T2 = #0 ∧ c = 𝟘𝟘 - | ∃∃cV,V2. ⦃G,K⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⬆*[1] V2 ≘ T2 & + | ∃∃cV,V2. ⦃G,K⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⇧*[1] V2 ≘ T2 & I = Abbr & c = cV - | ∃∃cV,V2. ⦃G,K⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⬆*[1] V2 ≘ T2 & + | ∃∃cV,V2. ⦃G,K⦄ ⊢ V1 ⬈[Rt,cV,h] V2 & ⇧*[1] V2 ≘ T2 & I = Abst & c = cV+𝟘𝟙. #Rt #c #h #I #G #K #V1 #T2 #H elim (cpg_inv_zero1 … H) -H /2 width=1 by or3_intro0/ * #z #Y #X1 #X2 #HX12 #HXT2 #H1 #H2 destruct /3 width=5 by or3_intro1, or3_intro2, ex4_2_intro/ @@ -275,7 +275,7 @@ qed-. lemma cpg_inv_lref1_bind: ∀Rt,c,h,I,G,K,T2,i. ⦃G,K.ⓘ{I}⦄ ⊢ #↑i ⬈[Rt,c,h] T2 → ∨∨ T2 = #(↑i) ∧ c = 𝟘𝟘 - | ∃∃T. ⦃G,K⦄ ⊢ #i ⬈[Rt,c,h] T & ⬆*[1] T ≘ T2. + | ∃∃T. ⦃G,K⦄ ⊢ #i ⬈[Rt,c,h] T & ⇧*[1] T ≘ T2. #Rt #c #h #I #G #L #T2 #i #H elim (cpg_inv_lref1 … H) -H /2 width=1 by or_introl/ * #Z #Y #T #HT #HT2 #H destruct /3 width=3 by ex2_intro, or_intror/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg_drops.ma index 977ec175d..3a0796055 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg_drops.ma @@ -21,8 +21,8 @@ include "basic_2/rt_transition/cpg.ma". (* Advanced properties ******************************************************) -lemma cpg_delta_drops: ∀Rt,c,h,G,K,V,V2,i,L,T2. ⬇*[i] L ≘ K.ⓓV → ⦃G,K⦄ ⊢ V ⬈[Rt,c,h] V2 → - ⬆*[↑i] V2 ≘ T2 → ⦃G,L⦄ ⊢ #i ⬈[Rt,c,h] T2. +lemma cpg_delta_drops: ∀Rt,c,h,G,K,V,V2,i,L,T2. ⇩*[i] L ≘ K.ⓓV → ⦃G,K⦄ ⊢ V ⬈[Rt,c,h] V2 → + ⇧*[↑i] V2 ≘ T2 → ⦃G,L⦄ ⊢ #i ⬈[Rt,c,h] T2. #Rt #c #h #G #K #V #V2 #i elim i -i [ #L #T2 #HLK lapply (drops_fwd_isid … HLK ?) // #H destruct /3 width=3 by cpg_delta/ | #i #IH #L0 #T0 #H0 #HV2 #HVT2 @@ -31,8 +31,8 @@ lemma cpg_delta_drops: ∀Rt,c,h,G,K,V,V2,i,L,T2. ⬇*[i] L ≘ K.ⓓV → ⦃G, ] qed. -lemma cpg_ell_drops: ∀Rt,c,h,G,K,V,V2,i,L,T2. ⬇*[i] L ≘ K.ⓛV → ⦃G,K⦄ ⊢ V ⬈[Rt,c,h] V2 → - ⬆*[↑i] V2 ≘ T2 → ⦃G,L⦄ ⊢ #i ⬈[Rt,c+𝟘𝟙,h] T2. +lemma cpg_ell_drops: ∀Rt,c,h,G,K,V,V2,i,L,T2. ⇩*[i] L ≘ K.ⓛV → ⦃G,K⦄ ⊢ V ⬈[Rt,c,h] V2 → + ⇧*[↑i] V2 ≘ T2 → ⦃G,L⦄ ⊢ #i ⬈[Rt,c+𝟘𝟙,h] T2. #Rt #c #h #G #K #V #V2 #i elim i -i [ #L #T2 #HLK lapply (drops_fwd_isid … HLK ?) // #H destruct /3 width=3 by cpg_ell/ | #i #IH #L0 #T0 #H0 #HV2 #HVT2 @@ -45,10 +45,10 @@ qed. lemma cpg_inv_lref1_drops: ∀Rt,c,h,G,i,L,T2. ⦃G,L⦄ ⊢ #i ⬈[Rt,c,h] T2 → ∨∨ T2 = #i ∧ c = 𝟘𝟘 - | ∃∃cV,K,V,V2. ⬇*[i] L ≘ K.ⓓV & ⦃G,K⦄ ⊢ V ⬈[Rt,cV,h] V2 & - ⬆*[↑i] V2 ≘ T2 & c = cV - | ∃∃cV,K,V,V2. ⬇*[i] L ≘ K.ⓛV & ⦃G,K⦄ ⊢ V ⬈[Rt,cV,h] V2 & - ⬆*[↑i] V2 ≘ T2 & c = cV + 𝟘𝟙. + | ∃∃cV,K,V,V2. ⇩*[i] L ≘ K.ⓓV & ⦃G,K⦄ ⊢ V ⬈[Rt,cV,h] V2 & + ⇧*[↑i] V2 ≘ T2 & c = cV + | ∃∃cV,K,V,V2. ⇩*[i] L ≘ K.ⓛV & ⦃G,K⦄ ⊢ V ⬈[Rt,cV,h] V2 & + ⇧*[↑i] V2 ≘ T2 & c = cV + 𝟘𝟙. #Rt #c #h #G #i elim i -i [ #L #T2 #H elim (cpg_inv_zero1 … H) -H * /3 width=1 by or3_intro0, conj/ /4 width=8 by drops_refl, ex4_4_intro, or3_intro2, or3_intro1/ @@ -64,10 +64,10 @@ qed-. lemma cpg_inv_atom1_drops: ∀Rt,c,h,I,G,L,T2. ⦃G,L⦄ ⊢ ⓪{I} ⬈[Rt,c,h] T2 → ∨∨ T2 = ⓪{I} ∧ c = 𝟘𝟘 | ∃∃s. T2 = ⋆(⫯[h]s) & I = Sort s & c = 𝟘𝟙 - | ∃∃cV,i,K,V,V2. ⬇*[i] L ≘ K.ⓓV & ⦃G,K⦄ ⊢ V ⬈[Rt,cV,h] V2 & - ⬆*[↑i] V2 ≘ T2 & I = LRef i & c = cV - | ∃∃cV,i,K,V,V2. ⬇*[i] L ≘ K.ⓛV & ⦃G,K⦄ ⊢ V ⬈[Rt,cV,h] V2 & - ⬆*[↑i] V2 ≘ T2 & I = LRef i & c = cV + 𝟘𝟙. + | ∃∃cV,i,K,V,V2. ⇩*[i] L ≘ K.ⓓV & ⦃G,K⦄ ⊢ V ⬈[Rt,cV,h] V2 & + ⇧*[↑i] V2 ≘ T2 & I = LRef i & c = cV + | ∃∃cV,i,K,V,V2. ⇩*[i] L ≘ K.ⓛV & ⦃G,K⦄ ⊢ V ⬈[Rt,cV,h] V2 & + ⇧*[↑i] V2 ≘ T2 & I = LRef i & c = cV + 𝟘𝟙. #Rt #c #h * #n #G #L #T2 #H [ elim (cpg_inv_sort1 … H) -H * /3 width=3 by or4_intro0, or4_intro1, ex3_intro, conj/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm.ma index c069b4ca0..4a937f119 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm.ma @@ -36,19 +36,19 @@ lemma cpm_ess: ∀h,G,L,s. ⦃G,L⦄ ⊢ ⋆s ➡[1,h] ⋆(⫯[h]s). /2 width=3 by cpg_ess, ex2_intro/ qed. lemma cpm_delta: ∀n,h,G,K,V1,V2,W2. ⦃G,K⦄ ⊢ V1 ➡[n,h] V2 → - ⬆*[1] V2 ≘ W2 → ⦃G,K.ⓓV1⦄ ⊢ #0 ➡[n,h] W2. + ⇧*[1] V2 ≘ W2 → ⦃G,K.ⓓV1⦄ ⊢ #0 ➡[n,h] W2. #n #h #G #K #V1 #V2 #W2 * /3 width=5 by cpg_delta, ex2_intro/ qed. lemma cpm_ell: ∀n,h,G,K,V1,V2,W2. ⦃G,K⦄ ⊢ V1 ➡[n,h] V2 → - ⬆*[1] V2 ≘ W2 → ⦃G,K.ⓛV1⦄ ⊢ #0 ➡[↑n,h] W2. + ⇧*[1] V2 ≘ W2 → ⦃G,K.ⓛV1⦄ ⊢ #0 ➡[↑n,h] W2. #n #h #G #K #V1 #V2 #W2 * /3 width=5 by cpg_ell, ex2_intro, isrt_succ/ qed. lemma cpm_lref: ∀n,h,I,G,K,T,U,i. ⦃G,K⦄ ⊢ #i ➡[n,h] T → - ⬆*[1] T ≘ U → ⦃G,K.ⓘ{I}⦄ ⊢ #↑i ➡[n,h] U. + ⇧*[1] T ≘ U → ⦃G,K.ⓘ{I}⦄ ⊢ #↑i ➡[n,h] U. #n #h #I #G #K #T #U #i * /3 width=5 by cpg_lref, ex2_intro/ qed. @@ -77,7 +77,7 @@ qed. (* Basic_2A1: includes: cpr_zeta *) lemma cpm_zeta (n) (h) (G) (L): - ∀T1,T. ⬆*[1] T ≘ T1 → ∀T2. ⦃G,L⦄ ⊢ T ➡[n,h] T2 → + ∀T1,T. ⇧*[1] T ≘ T1 → ∀T2. ⦃G,L⦄ ⊢ T ➡[n,h] T2 → ∀V. ⦃G,L⦄ ⊢ +ⓓV.T1 ➡[n,h] T2. #n #h #G #L #T1 #T #HT1 #T2 * /3 width=5 by cpg_zeta, isrt_plus_O2, ex2_intro/ @@ -104,7 +104,7 @@ qed. (* Basic_2A1: includes: cpr_theta *) lemma cpm_theta: ∀n,h,p,G,L,V1,V,V2,W1,W2,T1,T2. - ⦃G,L⦄ ⊢ V1 ➡[h] V → ⬆*[1] V ≘ V2 → ⦃G,L⦄ ⊢ W1 ➡[h] W2 → + ⦃G,L⦄ ⊢ V1 ➡[h] V → ⇧*[1] V ≘ V2 → ⦃G,L⦄ ⊢ W1 ➡[h] W2 → ⦃G,L.ⓓW1⦄ ⊢ T1 ➡[n,h] T2 → ⦃G,L⦄ ⊢ ⓐV1.ⓓ{p}W1.T1 ➡[n,h] ⓓ{p}W2.ⓐV2.T2. #n #h #p #G #L #V1 #V #V2 #W1 #W2 #T1 #T2 * #riV #rhV #HV1 #HV2 * #riW #rhW #HW12 * @@ -132,11 +132,11 @@ qed. lemma cpm_inv_atom1: ∀n,h,J,G,L,T2. ⦃G,L⦄ ⊢ ⓪{J} ➡[n,h] T2 → ∨∨ T2 = ⓪{J} ∧ n = 0 | ∃∃s. T2 = ⋆(⫯[h]s) & J = Sort s & n = 1 - | ∃∃K,V1,V2. ⦃G,K⦄ ⊢ V1 ➡[n,h] V2 & ⬆*[1] V2 ≘ T2 & + | ∃∃K,V1,V2. ⦃G,K⦄ ⊢ V1 ➡[n,h] V2 & ⇧*[1] V2 ≘ T2 & L = K.ⓓV1 & J = LRef 0 - | ∃∃m,K,V1,V2. ⦃G,K⦄ ⊢ V1 ➡[m,h] V2 & ⬆*[1] V2 ≘ T2 & + | ∃∃m,K,V1,V2. ⦃G,K⦄ ⊢ V1 ➡[m,h] V2 & ⇧*[1] V2 ≘ T2 & L = K.ⓛV1 & J = LRef 0 & n = ↑m - | ∃∃I,K,T,i. ⦃G,K⦄ ⊢ #i ➡[n,h] T & ⬆*[1] T ≘ T2 & + | ∃∃I,K,T,i. ⦃G,K⦄ ⊢ #i ➡[n,h] T & ⇧*[1] T ≘ T2 & L = K.ⓘ{I} & J = LRef (↑i). #n #h #J #G #L #T2 * #c #Hc #H elim (cpg_inv_atom1 … H) -H * [ #H1 #H2 destruct /4 width=1 by isrt_inv_00, or5_intro0, conj/ @@ -161,9 +161,9 @@ qed-. lemma cpm_inv_zero1: ∀n,h,G,L,T2. ⦃G,L⦄ ⊢ #0 ➡[n,h] T2 → ∨∨ T2 = #0 ∧ n = 0 - | ∃∃K,V1,V2. ⦃G,K⦄ ⊢ V1 ➡[n,h] V2 & ⬆*[1] V2 ≘ T2 & + | ∃∃K,V1,V2. ⦃G,K⦄ ⊢ V1 ➡[n,h] V2 & ⇧*[1] V2 ≘ T2 & L = K.ⓓV1 - | ∃∃m,K,V1,V2. ⦃G,K⦄ ⊢ V1 ➡[m,h] V2 & ⬆*[1] V2 ≘ T2 & + | ∃∃m,K,V1,V2. ⦃G,K⦄ ⊢ V1 ➡[m,h] V2 & ⇧*[1] V2 ≘ T2 & L = K.ⓛV1 & n = ↑m. #n #h #G #L #T2 * #c #Hc #H elim (cpg_inv_zero1 … H) -H * [ #H1 #H2 destruct /4 width=1 by isrt_inv_00, or3_intro0, conj/ @@ -187,7 +187,7 @@ qed. lemma cpm_inv_lref1: ∀n,h,G,L,T2,i. ⦃G,L⦄ ⊢ #↑i ➡[n,h] T2 → ∨∨ T2 = #(↑i) ∧ n = 0 - | ∃∃I,K,T. ⦃G,K⦄ ⊢ #i ➡[n,h] T & ⬆*[1] T ≘ T2 & L = K.ⓘ{I}. + | ∃∃I,K,T. ⦃G,K⦄ ⊢ #i ➡[n,h] T & ⇧*[1] T ≘ T2 & L = K.ⓘ{I}. #n #h #G #L #T2 #i * #c #Hc #H elim (cpg_inv_lref1 … H) -H * [ #H1 #H2 destruct /4 width=1 by isrt_inv_00, or_introl, conj/ | #I #K #V2 #HV2 #HVT2 #H destruct @@ -219,7 +219,7 @@ qed-. lemma cpm_inv_bind1: ∀n,h,p,I,G,L,V1,T1,U2. ⦃G,L⦄ ⊢ ⓑ{p,I}V1.T1 ➡[n,h] U2 → ∨∨ ∃∃V2,T2. ⦃G,L⦄ ⊢ V1 ➡[h] V2 & ⦃G,L.ⓑ{I}V1⦄ ⊢ T1 ➡[n,h] T2 & U2 = ⓑ{p,I}V2.T2 - | ∃∃T. ⬆*[1] T ≘ T1 & ⦃G,L⦄ ⊢ T ➡[n,h] U2 & + | ∃∃T. ⇧*[1] T ≘ T1 & ⦃G,L⦄ ⊢ T ➡[n,h] U2 & p = true & I = Abbr. #n #h #p #I #G #L #V1 #T1 #U2 * #c #Hc #H elim (cpg_inv_bind1 … H) -H * [ #cV #cT #V2 #T2 #HV12 #HT12 #H1 #H2 destruct @@ -236,7 +236,7 @@ qed-. lemma cpm_inv_abbr1: ∀n,h,p,G,L,V1,T1,U2. ⦃G,L⦄ ⊢ ⓓ{p}V1.T1 ➡[n,h] U2 → ∨∨ ∃∃V2,T2. ⦃G,L⦄ ⊢ V1 ➡[h] V2 & ⦃G,L.ⓓV1⦄ ⊢ T1 ➡[n,h] T2 & U2 = ⓓ{p}V2.T2 - | ∃∃T. ⬆*[1] T ≘ T1 & ⦃G,L⦄ ⊢ T ➡[n,h] U2 & p = true. + | ∃∃T. ⇧*[1] T ≘ T1 & ⦃G,L⦄ ⊢ T ➡[n,h] U2 & p = true. #n #h #p #G #L #V1 #T1 #U2 #H elim (cpm_inv_bind1 … H) -H [ /3 width=1 by or_introl/ @@ -271,7 +271,7 @@ lemma cpm_inv_appl1: ∀n,h,G,L,V1,U1,U2. ⦃G,L⦄ ⊢ ⓐ V1.U1 ➡[n,h] U2 | ∃∃p,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ➡[h] V2 & ⦃G,L⦄ ⊢ W1 ➡[h] W2 & ⦃G,L.ⓛW1⦄ ⊢ T1 ➡[n,h] T2 & U1 = ⓛ{p}W1.T1 & U2 = ⓓ{p}ⓝW2.V2.T2 - | ∃∃p,V,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ➡[h] V & ⬆*[1] V ≘ V2 & + | ∃∃p,V,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ➡[h] V & ⇧*[1] V ≘ V2 & ⦃G,L⦄ ⊢ W1 ➡[h] W2 & ⦃G,L.ⓓW1⦄ ⊢ T1 ➡[n,h] T2 & U1 = ⓓ{p}W1.T1 & U2 = ⓓ{p}W2.ⓐV2.T2. #n #h #G #L #V1 #U1 #U2 * #c #Hc #H elim (cpg_inv_appl1 … H) -H * @@ -331,18 +331,18 @@ lemma cpm_ind (h): ∀Q:relation5 nat genv lenv term term. (∀I,G,L. Q 0 G L (⓪{I}) (⓪{I})) → (∀G,L,s. Q 1 G L (⋆s) (⋆(⫯[h]s))) → (∀n,G,K,V1,V2,W2. ⦃G,K⦄ ⊢ V1 ➡[n,h] V2 → Q n G K V1 V2 → - ⬆*[1] V2 ≘ W2 → Q n G (K.ⓓV1) (#0) W2 + ⇧*[1] V2 ≘ W2 → Q n G (K.ⓓV1) (#0) W2 ) → (∀n,G,K,V1,V2,W2. ⦃G,K⦄ ⊢ V1 ➡[n,h] V2 → Q n G K V1 V2 → - ⬆*[1] V2 ≘ W2 → Q (↑n) G (K.ⓛV1) (#0) W2 + ⇧*[1] V2 ≘ W2 → Q (↑n) G (K.ⓛV1) (#0) W2 ) → (∀n,I,G,K,T,U,i. ⦃G,K⦄ ⊢ #i ➡[n,h] T → Q n G K (#i) T → - ⬆*[1] T ≘ U → Q n G (K.ⓘ{I}) (#↑i) (U) + ⇧*[1] T ≘ U → Q n G (K.ⓘ{I}) (#↑i) (U) ) → (∀n,p,I,G,L,V1,V2,T1,T2. ⦃G,L⦄ ⊢ V1 ➡[h] V2 → ⦃G,L.ⓑ{I}V1⦄ ⊢ T1 ➡[n,h] T2 → Q 0 G L V1 V2 → Q n G (L.ⓑ{I}V1) T1 T2 → Q n G L (ⓑ{p,I}V1.T1) (ⓑ{p,I}V2.T2) ) → (∀n,G,L,V1,V2,T1,T2. ⦃G,L⦄ ⊢ V1 ➡[h] V2 → ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → Q 0 G L V1 V2 → Q n G L T1 T2 → Q n G L (ⓐV1.T1) (ⓐV2.T2) ) → (∀n,G,L,V1,V2,T1,T2. ⦃G,L⦄ ⊢ V1 ➡[n,h] V2 → ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → Q n G L V1 V2 → Q n G L T1 T2 → Q n G L (ⓝV1.T1) (ⓝV2.T2) - ) → (∀n,G,L,V,T1,T,T2. ⬆*[1] T ≘ T1 → ⦃G,L⦄ ⊢ T ➡[n,h] T2 → + ) → (∀n,G,L,V,T1,T,T2. ⇧*[1] T ≘ T1 → ⦃G,L⦄ ⊢ T ➡[n,h] T2 → Q n G L T T2 → Q n G L (+ⓓV.T1) T2 ) → (∀n,G,L,V,T1,T2. ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → Q n G L T1 T2 → Q n G L (ⓝV.T1) T2 @@ -353,7 +353,7 @@ lemma cpm_ind (h): ∀Q:relation5 nat genv lenv term term. Q n G L (ⓐV1.ⓛ{p}W1.T1) (ⓓ{p}ⓝW2.V2.T2) ) → (∀n,p,G,L,V1,V,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ➡[h] V → ⦃G,L⦄ ⊢ W1 ➡[h] W2 → ⦃G,L.ⓓW1⦄ ⊢ T1 ➡[n,h] T2 → Q 0 G L V1 V → Q 0 G L W1 W2 → Q n G (L.ⓓW1) T1 T2 → - ⬆*[1] V ≘ V2 → Q n G L (ⓐV1.ⓓ{p}W1.T1) (ⓓ{p}W2.ⓐV2.T2) + ⇧*[1] V ≘ V2 → Q n G L (ⓐV1.ⓓ{p}W1.T1) (ⓓ{p}W2.ⓐV2.T2) ) → ∀n,G,L,T1,T2. ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → Q n G L T1 T2. #h #Q #IH1 #IH2 #IH3 #IH4 #IH5 #IH6 #IH7 #IH8 #IH9 #IH10 #IH11 #IH12 #IH13 #n #G #L #T1 #T2 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_drops.ma index bc9463c95..3d465a950 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_drops.ma @@ -50,15 +50,15 @@ qed-. (* Basic_1: includes: pr2_delta1 *) (* Basic_2A1: includes: cpr_delta *) lemma cpm_delta_drops: ∀n,h,G,L,K,V,V2,W2,i. - ⬇*[i] L ≘ K.ⓓV → ⦃G,K⦄ ⊢ V ➡[n,h] V2 → - ⬆*[↑i] V2 ≘ W2 → ⦃G,L⦄ ⊢ #i ➡[n,h] W2. + ⇩*[i] L ≘ K.ⓓV → ⦃G,K⦄ ⊢ V ➡[n,h] V2 → + ⇧*[↑i] V2 ≘ W2 → ⦃G,L⦄ ⊢ #i ➡[n,h] W2. #n #h #G #L #K #V #V2 #W2 #i #HLK * /3 width=8 by cpg_delta_drops, ex2_intro/ qed. lemma cpm_ell_drops: ∀n,h,G,L,K,V,V2,W2,i. - ⬇*[i] L ≘ K.ⓛV → ⦃G,K⦄ ⊢ V ➡[n,h] V2 → - ⬆*[↑i] V2 ≘ W2 → ⦃G,L⦄ ⊢ #i ➡[↑n,h] W2. + ⇩*[i] L ≘ K.ⓛV → ⦃G,K⦄ ⊢ V ➡[n,h] V2 → + ⇧*[↑i] V2 ≘ W2 → ⦃G,L⦄ ⊢ #i ➡[↑n,h] W2. #n #h #G #L #K #V #V2 #W2 #i #HLK * /3 width=8 by cpg_ell_drops, isrt_succ, ex2_intro/ qed. @@ -68,10 +68,10 @@ qed. lemma cpm_inv_atom1_drops: ∀n,h,I,G,L,T2. ⦃G,L⦄ ⊢ ⓪{I} ➡[n,h] T2 → ∨∨ T2 = ⓪{I} ∧ n = 0 | ∃∃s. T2 = ⋆(⫯[h]s) & I = Sort s & n = 1 - | ∃∃K,V,V2,i. ⬇*[i] L ≘ K.ⓓV & ⦃G,K⦄ ⊢ V ➡[n,h] V2 & - ⬆*[↑i] V2 ≘ T2 & I = LRef i - | ∃∃m,K,V,V2,i. ⬇*[i] L ≘ K.ⓛV & ⦃G,K⦄ ⊢ V ➡[m,h] V2 & - ⬆*[↑i] V2 ≘ T2 & I = LRef i & n = ↑m. + | ∃∃K,V,V2,i. ⇩*[i] L ≘ K.ⓓV & ⦃G,K⦄ ⊢ V ➡[n,h] V2 & + ⇧*[↑i] V2 ≘ T2 & I = LRef i + | ∃∃m,K,V,V2,i. ⇩*[i] L ≘ K.ⓛV & ⦃G,K⦄ ⊢ V ➡[m,h] V2 & + ⇧*[↑i] V2 ≘ T2 & I = LRef i & n = ↑m. #n #h #I #G #L #T2 * #c #Hc #H elim (cpg_inv_atom1_drops … H) -H * [ #H1 #H2 destruct lapply (isrt_inv_00 … Hc) -Hc /3 width=1 by or4_intro0, conj/ @@ -87,10 +87,10 @@ qed-. lemma cpm_inv_lref1_drops: ∀n,h,G,L,T2,i. ⦃G,L⦄ ⊢ #i ➡[n,h] T2 → ∨∨ T2 = #i ∧ n = 0 - | ∃∃K,V,V2. ⬇*[i] L ≘ K.ⓓV & ⦃G,K⦄ ⊢ V ➡[n,h] V2 & - ⬆*[↑i] V2 ≘ T2 - | ∃∃m,K,V,V2. ⬇*[i] L ≘ K. ⓛV & ⦃G,K⦄ ⊢ V ➡[m,h] V2 & - ⬆*[↑i] V2 ≘ T2 & n = ↑m. + | ∃∃K,V,V2. ⇩*[i] L ≘ K.ⓓV & ⦃G,K⦄ ⊢ V ➡[n,h] V2 & + ⇧*[↑i] V2 ≘ T2 + | ∃∃m,K,V,V2. ⇩*[i] L ≘ K. ⓛV & ⦃G,K⦄ ⊢ V ➡[m,h] V2 & + ⇧*[↑i] V2 ≘ T2 & n = ↑m. #n #h #G #L #T2 #i * #c #Hc #H elim (cpg_inv_lref1_drops … H) -H * [ #H1 #H2 destruct lapply (isrt_inv_00 … Hc) -Hc /3 width=1 by or3_intro0, conj/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr.ma index 9d984e384..ee72b6149 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr.ma @@ -37,9 +37,9 @@ qed. lemma cpr_inv_atom1: ∀h,J,G,L,T2. ⦃G,L⦄ ⊢ ⓪{J} ➡[h] T2 → ∨∨ T2 = ⓪{J} - | ∃∃K,V1,V2. ⦃G,K⦄ ⊢ V1 ➡[h] V2 & ⬆*[1] V2 ≘ T2 & + | ∃∃K,V1,V2. ⦃G,K⦄ ⊢ V1 ➡[h] V2 & ⇧*[1] V2 ≘ T2 & L = K.ⓓV1 & J = LRef 0 - | ∃∃I,K,T,i. ⦃G,K⦄ ⊢ #i ➡[h] T & ⬆*[1] T ≘ T2 & + | ∃∃I,K,T,i. ⦃G,K⦄ ⊢ #i ➡[h] T & ⇧*[1] T ≘ T2 & L = K.ⓘ{I} & J = LRef (↑i). #h #J #G #L #T2 #H elim (cpm_inv_atom1 … H) -H * [2,4:|*: /3 width=8 by or3_intro0, or3_intro1, or3_intro2, ex4_4_intro, ex4_3_intro/ ] @@ -55,7 +55,7 @@ qed-. lemma cpr_inv_zero1: ∀h,G,L,T2. ⦃G,L⦄ ⊢ #0 ➡[h] T2 → ∨∨ T2 = #0 - | ∃∃K,V1,V2. ⦃G,K⦄ ⊢ V1 ➡[h] V2 & ⬆*[1] V2 ≘ T2 & + | ∃∃K,V1,V2. ⦃G,K⦄ ⊢ V1 ➡[h] V2 & ⇧*[1] V2 ≘ T2 & L = K.ⓓV1. #h #G #L #T2 #H elim (cpm_inv_zero1 … H) -H * /3 width=6 by ex3_3_intro, or_introl, or_intror/ @@ -64,7 +64,7 @@ qed-. lemma cpr_inv_lref1: ∀h,G,L,T2,i. ⦃G,L⦄ ⊢ #↑i ➡[h] T2 → ∨∨ T2 = #(↑i) - | ∃∃I,K,T. ⦃G,K⦄ ⊢ #i ➡[h] T & ⬆*[1] T ≘ T2 & L = K.ⓘ{I}. + | ∃∃I,K,T. ⦃G,K⦄ ⊢ #i ➡[h] T & ⇧*[1] T ≘ T2 & L = K.ⓘ{I}. #h #G #L #T2 #i #H elim (cpm_inv_lref1 … H) -H * /3 width=6 by ex3_3_intro, or_introl, or_intror/ qed-. @@ -89,7 +89,7 @@ lemma cpr_inv_flat1: ∀h,I,G,L,V1,U1,U2. ⦃G,L⦄ ⊢ ⓕ{I}V1.U1 ➡[h] U2 | ∃∃p,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ➡[h] V2 & ⦃G,L⦄ ⊢ W1 ➡[h] W2 & ⦃G,L.ⓛW1⦄ ⊢ T1 ➡[h] T2 & U1 = ⓛ{p}W1.T1 & U2 = ⓓ{p}ⓝW2.V2.T2 & I = Appl - | ∃∃p,V,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ➡[h] V & ⬆*[1] V ≘ V2 & + | ∃∃p,V,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ➡[h] V & ⇧*[1] V ≘ V2 & ⦃G,L⦄ ⊢ W1 ➡[h] W2 & ⦃G,L.ⓓW1⦄ ⊢ T1 ➡[h] T2 & U1 = ⓓ{p}W1.T1 & U2 = ⓓ{p}W2.ⓐV2.T2 & I = Appl. @@ -106,14 +106,14 @@ qed-. lemma cpr_ind (h): ∀Q:relation4 genv lenv term term. (∀I,G,L. Q G L (⓪{I}) (⓪{I})) → (∀G,K,V1,V2,W2. ⦃G,K⦄ ⊢ V1 ➡[h] V2 → Q G K V1 V2 → - ⬆*[1] V2 ≘ W2 → Q G (K.ⓓV1) (#0) W2 + ⇧*[1] V2 ≘ W2 → Q G (K.ⓓV1) (#0) W2 ) → (∀I,G,K,T,U,i. ⦃G,K⦄ ⊢ #i ➡[h] T → Q G K (#i) T → - ⬆*[1] T ≘ U → Q G (K.ⓘ{I}) (#↑i) (U) + ⇧*[1] T ≘ U → Q G (K.ⓘ{I}) (#↑i) (U) ) → (∀p,I,G,L,V1,V2,T1,T2. ⦃G,L⦄ ⊢ V1 ➡[h] V2 → ⦃G,L.ⓑ{I}V1⦄ ⊢ T1 ➡[h] T2 → Q G L V1 V2 → Q G (L.ⓑ{I}V1) T1 T2 → Q G L (ⓑ{p,I}V1.T1) (ⓑ{p,I}V2.T2) ) → (∀I,G,L,V1,V2,T1,T2. ⦃G,L⦄ ⊢ V1 ➡[h] V2 → ⦃G,L⦄ ⊢ T1 ➡[h] T2 → Q G L V1 V2 → Q G L T1 T2 → Q G L (ⓕ{I}V1.T1) (ⓕ{I}V2.T2) - ) → (∀G,L,V,T1,T,T2. ⬆*[1] T ≘ T1 → ⦃G,L⦄ ⊢ T ➡[h] T2 → + ) → (∀G,L,V,T1,T,T2. ⇧*[1] T ≘ T1 → ⦃G,L⦄ ⊢ T ➡[h] T2 → Q G L T T2 → Q G L (+ⓓV.T1) T2 ) → (∀G,L,V,T1,T2. ⦃G,L⦄ ⊢ T1 ➡[h] T2 → Q G L T1 T2 → Q G L (ⓝV.T1) T2 @@ -122,7 +122,7 @@ lemma cpr_ind (h): ∀Q:relation4 genv lenv term term. Q G L (ⓐV1.ⓛ{p}W1.T1) (ⓓ{p}ⓝW2.V2.T2) ) → (∀p,G,L,V1,V,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ➡[h] V → ⦃G,L⦄ ⊢ W1 ➡[h] W2 → ⦃G,L.ⓓW1⦄ ⊢ T1 ➡[h] T2 → Q G L V1 V → Q G L W1 W2 → Q G (L.ⓓW1) T1 T2 → - ⬆*[1] V ≘ V2 → Q G L (ⓐV1.ⓓ{p}W1.T1) (ⓓ{p}W2.ⓐV2.T2) + ⇧*[1] V ≘ V2 → Q G L (ⓐV1.ⓓ{p}W1.T1) (ⓓ{p}W2.ⓐV2.T2) ) → ∀G,L,T1,T2. ⦃G,L⦄ ⊢ T1 ➡[h] T2 → Q G L T1 T2. #h #Q #IH1 #IH2 #IH3 #IH4 #IH5 #IH6 #IH7 #IH8 #IH9 #G #L #T1 #T2 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_drops.ma index afd2d3fda..9fd1974a1 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_drops.ma @@ -21,8 +21,8 @@ include "basic_2/rt_transition/cpm_drops.ma". (* Basic_2A1: includes: cpr_inv_atom1 *) lemma cpr_inv_atom1_drops: ∀h,I,G,L,T2. ⦃G,L⦄ ⊢ ⓪{I} ➡[h] T2 → ∨∨ T2 = ⓪{I} - | ∃∃K,V,V2,i. ⬇*[i] L ≘ K.ⓓV & ⦃G,K⦄ ⊢ V ➡[h] V2 & - ⬆*[↑i] V2 ≘ T2 & I = LRef i. + | ∃∃K,V,V2,i. ⇩*[i] L ≘ K.ⓓV & ⦃G,K⦄ ⊢ V ➡[h] V2 & + ⇧*[↑i] V2 ≘ T2 & I = LRef i. #h #I #G #L #T2 #H elim (cpm_inv_atom1_drops … H) -H * [ /2 width=1 by or_introl/ | #s #_ #_ #H destruct @@ -35,8 +35,8 @@ qed-. (* Basic_2A1: includes: cpr_inv_lref1 *) lemma cpr_inv_lref1_drops: ∀h,G,L,T2,i. ⦃G,L⦄ ⊢ #i ➡[h] T2 → ∨∨ T2 = #i - | ∃∃K,V,V2. ⬇*[i] L ≘ K. ⓓV & ⦃G,K⦄ ⊢ V ➡[h] V2 & - ⬆*[↑i] V2 ≘ T2. + | ∃∃K,V,V2. ⇩*[i] L ≘ K. ⓓV & ⦃G,K⦄ ⊢ V ➡[h] V2 & + ⇧*[↑i] V2 ≘ T2. #h #G #L #T2 #i #H elim (cpm_inv_lref1_drops … H) -H * [ /2 width=1 by or_introl/ | /3 width=6 by ex3_3_intro, or_intror/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_drops_basic.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_drops_basic.ma index ab99dbfca..e01180f09 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_drops_basic.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_drops_basic.ma @@ -21,8 +21,8 @@ include "basic_2/rt_transition/cpr.ma". (* Properties with basic relocation *****************************************) lemma cpr_subst (h) (G) (L) (U1) (i): - ∀K,V. ⬇*[i] L ≘ K.ⓓV → - ∃∃U2,T2. ⦃G,L⦄ ⊢ U1 ➡[h] U2 & ⬆[i,1] T2 ≘ U2. + ∀K,V. ⇩*[i] L ≘ K.ⓓV → + ∃∃U2,T2. ⦃G,L⦄ ⊢ U1 ➡[h] U2 & ⇧[i,1] T2 ≘ U2. #h #G #L #U1 @(fqup_wf_ind_eq (Ⓣ) … G L U1) -G -L -U1 #G0 #L0 #U0 #IH #G #L * * [ #s #HG #HL #HT #i #K #V #_ destruct -IH diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx.ma index 005c43355..f8978f460 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx.ma @@ -31,13 +31,13 @@ lemma cpx_ess: ∀h,G,L,s. ⦃G,L⦄ ⊢ ⋆s ⬈[h] ⋆(⫯[h]s). /2 width=2 by cpg_ess, ex_intro/ qed. lemma cpx_delta: ∀h,I,G,K,V1,V2,W2. ⦃G,K⦄ ⊢ V1 ⬈[h] V2 → - ⬆*[1] V2 ≘ W2 → ⦃G,K.ⓑ{I}V1⦄ ⊢ #0 ⬈[h] W2. + ⇧*[1] V2 ≘ W2 → ⦃G,K.ⓑ{I}V1⦄ ⊢ #0 ⬈[h] W2. #h * #G #K #V1 #V2 #W2 * /3 width=4 by cpg_delta, cpg_ell, ex_intro/ qed. lemma cpx_lref: ∀h,I,G,K,T,U,i. ⦃G,K⦄ ⊢ #i ⬈[h] T → - ⬆*[1] T ≘ U → ⦃G,K.ⓘ{I}⦄ ⊢ #↑i ⬈[h] U. + ⇧*[1] T ≘ U → ⦃G,K.ⓘ{I}⦄ ⊢ #↑i ⬈[h] U. #h #I #G #K #T #U #i * /3 width=4 by cpg_lref, ex_intro/ qed. @@ -57,7 +57,7 @@ lemma cpx_flat: ∀h,I,G,L,V1,V2,T1,T2. qed. lemma cpx_zeta (h) (G) (L): - ∀T1,T. ⬆*[1] T ≘ T1 → ∀T2. ⦃G,L⦄ ⊢ T ⬈[h] T2 → + ∀T1,T. ⇧*[1] T ≘ T1 → ∀T2. ⦃G,L⦄ ⊢ T ⬈[h] T2 → ∀V. ⦃G,L⦄ ⊢ +ⓓV.T1 ⬈[h] T2. #h #G #L #T1 #T #HT1 #T2 * /3 width=4 by cpg_zeta, ex_intro/ @@ -82,7 +82,7 @@ lemma cpx_beta: ∀h,p,G,L,V1,V2,W1,W2,T1,T2. qed. lemma cpx_theta: ∀h,p,G,L,V1,V,V2,W1,W2,T1,T2. - ⦃G,L⦄ ⊢ V1 ⬈[h] V → ⬆*[1] V ≘ V2 → ⦃G,L⦄ ⊢ W1 ⬈[h] W2 → + ⦃G,L⦄ ⊢ V1 ⬈[h] V → ⇧*[1] V ≘ V2 → ⦃G,L⦄ ⊢ W1 ⬈[h] W2 → ⦃G,L.ⓓW1⦄ ⊢ T1 ⬈[h] T2 → ⦃G,L⦄ ⊢ ⓐV1.ⓓ{p}W1.T1 ⬈[h] ⓓ{p}W2.ⓐV2.T2. #h #p #G #L #V1 #V #V2 #W1 #W2 #T1 #T2 * #cV #HV1 #HV2 * #cW #HW12 * @@ -111,9 +111,9 @@ qed. lemma cpx_inv_atom1: ∀h,J,G,L,T2. ⦃G,L⦄ ⊢ ⓪{J} ⬈[h] T2 → ∨∨ T2 = ⓪{J} | ∃∃s. T2 = ⋆(⫯[h]s) & J = Sort s - | ∃∃I,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈[h] V2 & ⬆*[1] V2 ≘ T2 & + | ∃∃I,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈[h] V2 & ⇧*[1] V2 ≘ T2 & L = K.ⓑ{I}V1 & J = LRef 0 - | ∃∃I,K,T,i. ⦃G,K⦄ ⊢ #i ⬈[h] T & ⬆*[1] T ≘ T2 & + | ∃∃I,K,T,i. ⦃G,K⦄ ⊢ #i ⬈[h] T & ⇧*[1] T ≘ T2 & L = K.ⓘ{I} & J = LRef (↑i). #h #J #G #L #T2 * #c #H elim (cpg_inv_atom1 … H) -H * /4 width=8 by or4_intro0, or4_intro1, or4_intro2, or4_intro3, ex4_4_intro, ex2_intro, ex_intro/ @@ -127,7 +127,7 @@ qed-. lemma cpx_inv_zero1: ∀h,G,L,T2. ⦃G,L⦄ ⊢ #0 ⬈[h] T2 → ∨∨ T2 = #0 - | ∃∃I,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈[h] V2 & ⬆*[1] V2 ≘ T2 & + | ∃∃I,K,V1,V2. ⦃G,K⦄ ⊢ V1 ⬈[h] V2 & ⇧*[1] V2 ≘ T2 & L = K.ⓑ{I}V1. #h #G #L #T2 * #c #H elim (cpg_inv_zero1 … H) -H * /4 width=7 by ex3_4_intro, ex_intro, or_introl, or_intror/ @@ -135,7 +135,7 @@ qed-. lemma cpx_inv_lref1: ∀h,G,L,T2,i. ⦃G,L⦄ ⊢ #↑i ⬈[h] T2 → ∨∨ T2 = #(↑i) - | ∃∃I,K,T. ⦃G,K⦄ ⊢ #i ⬈[h] T & ⬆*[1] T ≘ T2 & L = K.ⓘ{I}. + | ∃∃I,K,T. ⦃G,K⦄ ⊢ #i ⬈[h] T & ⇧*[1] T ≘ T2 & L = K.ⓘ{I}. #h #G #L #T2 #i * #c #H elim (cpg_inv_lref1 … H) -H * /4 width=6 by ex3_3_intro, ex_intro, or_introl, or_intror/ qed-. @@ -147,7 +147,7 @@ qed-. lemma cpx_inv_bind1: ∀h,p,I,G,L,V1,T1,U2. ⦃G,L⦄ ⊢ ⓑ{p,I}V1.T1 ⬈[h] U2 → ∨∨ ∃∃V2,T2. ⦃G,L⦄ ⊢ V1 ⬈[h] V2 & ⦃G,L.ⓑ{I}V1⦄ ⊢ T1 ⬈[h] T2 & U2 = ⓑ{p,I}V2.T2 - | ∃∃T. ⬆*[1] T ≘ T1 & ⦃G,L⦄ ⊢ T ⬈[h] U2 & + | ∃∃T. ⇧*[1] T ≘ T1 & ⦃G,L⦄ ⊢ T ⬈[h] U2 & p = true & I = Abbr. #h #p #I #G #L #V1 #T1 #U2 * #c #H elim (cpg_inv_bind1 … H) -H * /4 width=5 by ex4_intro, ex3_2_intro, ex_intro, or_introl, or_intror/ @@ -156,7 +156,7 @@ qed-. lemma cpx_inv_abbr1: ∀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 - | ∃∃T. ⬆*[1] T ≘ T1 & ⦃G,L⦄ ⊢ T ⬈[h] U2 & p = true. + | ∃∃T. ⇧*[1] T ≘ T1 & ⦃G,L⦄ ⊢ T ⬈[h] U2 & p = true. #h #p #G #L #V1 #T1 #U2 * #c #H elim (cpg_inv_abbr1 … H) -H * /4 width=5 by ex3_2_intro, ex3_intro, ex_intro, or_introl, or_intror/ qed-. @@ -174,7 +174,7 @@ lemma cpx_inv_appl1: ∀h,G,L,V1,U1,U2. ⦃G,L⦄ ⊢ ⓐ V1.U1 ⬈[h] U2 → | ∃∃p,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ⬈[h] V2 & ⦃G,L⦄ ⊢ W1 ⬈[h] W2 & ⦃G,L.ⓛW1⦄ ⊢ T1 ⬈[h] T2 & U1 = ⓛ{p}W1.T1 & U2 = ⓓ{p}ⓝW2.V2.T2 - | ∃∃p,V,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ⬈[h] V & ⬆*[1] V ≘ V2 & + | ∃∃p,V,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ⬈[h] V & ⇧*[1] V ≘ V2 & ⦃G,L⦄ ⊢ W1 ⬈[h] W2 & ⦃G,L.ⓓW1⦄ ⊢ T1 ⬈[h] T2 & U1 = ⓓ{p}W1.T1 & U2 = ⓓ{p}W2.ⓐV2.T2. #h #G #L #V1 #U1 #U2 * #c #H elim (cpg_inv_appl1 … H) -H * @@ -194,14 +194,14 @@ qed-. lemma cpx_inv_zero1_pair: ∀h,I,G,K,V1,T2. ⦃G,K.ⓑ{I}V1⦄ ⊢ #0 ⬈[h] T2 → ∨∨ T2 = #0 - | ∃∃V2. ⦃G,K⦄ ⊢ V1 ⬈[h] V2 & ⬆*[1] V2 ≘ T2. + | ∃∃V2. ⦃G,K⦄ ⊢ V1 ⬈[h] V2 & ⇧*[1] V2 ≘ T2. #h #I #G #L #V1 #T2 * #c #H elim (cpg_inv_zero1_pair … H) -H * /4 width=3 by ex2_intro, ex_intro, or_intror, or_introl/ qed-. lemma cpx_inv_lref1_bind: ∀h,I,G,K,T2,i. ⦃G,K.ⓘ{I}⦄ ⊢ #↑i ⬈[h] T2 → ∨∨ T2 = #(↑i) - | ∃∃T. ⦃G,K⦄ ⊢ #i ⬈[h] T & ⬆*[1] T ≘ T2. + | ∃∃T. ⦃G,K⦄ ⊢ #i ⬈[h] T & ⇧*[1] T ≘ T2. #h #I #G #L #T2 #i * #c #H elim (cpg_inv_lref1_bind … H) -H * /4 width=3 by ex2_intro, ex_intro, or_introl, or_intror/ qed-. @@ -215,7 +215,7 @@ lemma cpx_inv_flat1: ∀h,I,G,L,V1,U1,U2. ⦃G,L⦄ ⊢ ⓕ{I}V1.U1 ⬈[h] U2 ⦃G,L.ⓛW1⦄ ⊢ T1 ⬈[h] T2 & U1 = ⓛ{p}W1.T1 & U2 = ⓓ{p}ⓝW2.V2.T2 & I = Appl - | ∃∃p,V,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ⬈[h] V & ⬆*[1] V ≘ V2 & + | ∃∃p,V,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ⬈[h] V & ⇧*[1] V ≘ V2 & ⦃G,L⦄ ⊢ W1 ⬈[h] W2 & ⦃G,L.ⓓW1⦄ ⊢ T1 ⬈[h] T2 & U1 = ⓓ{p}W1.T1 & U2 = ⓓ{p}W2.ⓐV2.T2 & I = Appl. @@ -242,14 +242,14 @@ lemma cpx_ind: ∀h. ∀Q:relation4 genv lenv term term. (∀I,G,L. Q G L (⓪{I}) (⓪{I})) → (∀G,L,s. Q G L (⋆s) (⋆(⫯[h]s))) → (∀I,G,K,V1,V2,W2. ⦃G,K⦄ ⊢ V1 ⬈[h] V2 → Q G K V1 V2 → - ⬆*[1] V2 ≘ W2 → Q G (K.ⓑ{I}V1) (#0) W2 + ⇧*[1] V2 ≘ W2 → Q G (K.ⓑ{I}V1) (#0) W2 ) → (∀I,G,K,T,U,i. ⦃G,K⦄ ⊢ #i ⬈[h] T → Q G K (#i) T → - ⬆*[1] T ≘ U → Q G (K.ⓘ{I}) (#↑i) (U) + ⇧*[1] T ≘ U → Q G (K.ⓘ{I}) (#↑i) (U) ) → (∀p,I,G,L,V1,V2,T1,T2. ⦃G,L⦄ ⊢ V1 ⬈[h] V2 → ⦃G,L.ⓑ{I}V1⦄ ⊢ T1 ⬈[h] T2 → Q G L V1 V2 → Q G (L.ⓑ{I}V1) T1 T2 → Q G L (ⓑ{p,I}V1.T1) (ⓑ{p,I}V2.T2) ) → (∀I,G,L,V1,V2,T1,T2. ⦃G,L⦄ ⊢ V1 ⬈[h] V2 → ⦃G,L⦄ ⊢ T1 ⬈[h] T2 → Q G L V1 V2 → Q G L T1 T2 → Q G L (ⓕ{I}V1.T1) (ⓕ{I}V2.T2) - ) → (∀G,L,V,T1,T,T2. ⬆*[1] T ≘ T1 → ⦃G,L⦄ ⊢ T ⬈[h] T2 → Q G L T T2 → + ) → (∀G,L,V,T1,T,T2. ⇧*[1] T ≘ T1 → ⦃G,L⦄ ⊢ T ⬈[h] T2 → Q G L T T2 → Q G L (+ⓓV.T1) T2 ) → (∀G,L,V,T1,T2. ⦃G,L⦄ ⊢ T1 ⬈[h] T2 → Q G L T1 T2 → Q G L (ⓝV.T1) T2 @@ -260,7 +260,7 @@ lemma cpx_ind: ∀h. ∀Q:relation4 genv lenv term term. Q G L (ⓐV1.ⓛ{p}W1.T1) (ⓓ{p}ⓝW2.V2.T2) ) → (∀p,G,L,V1,V,V2,W1,W2,T1,T2. ⦃G,L⦄ ⊢ V1 ⬈[h] V → ⦃G,L⦄ ⊢ W1 ⬈[h] W2 → ⦃G,L.ⓓW1⦄ ⊢ T1 ⬈[h] T2 → Q G L V1 V → Q G L W1 W2 → Q G (L.ⓓW1) T1 T2 → - ⬆*[1] V ≘ V2 → Q G L (ⓐV1.ⓓ{p}W1.T1) (ⓓ{p}W2.ⓐV2.T2) + ⇧*[1] V ≘ V2 → Q G L (ⓐV1.ⓓ{p}W1.T1) (ⓓ{p}W2.ⓐV2.T2) ) → ∀G,L,T1,T2. ⦃G,L⦄ ⊢ T1 ⬈[h] T2 → Q G L T1 T2. #h #Q #IH1 #IH2 #IH3 #IH4 #IH5 #IH6 #IH7 #IH8 #IH9 #IH10 #IH11 #G #L #T1 #T2 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops.ma index 500929b1d..eb52d5300 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops.ma @@ -21,8 +21,8 @@ include "basic_2/rt_transition/cpx.ma". (* Basic_2A1: was: cpx_delta *) lemma cpx_delta_drops: ∀h,I,G,L,K,V,V2,W2,i. - ⬇*[i] L ≘ K.ⓑ{I}V → ⦃G,K⦄ ⊢ V ⬈[h] V2 → - ⬆*[↑i] V2 ≘ W2 → ⦃G,L⦄ ⊢ #i ⬈[h] W2. + ⇩*[i] L ≘ K.ⓑ{I}V → ⦃G,K⦄ ⊢ V ⬈[h] V2 → + ⇧*[↑i] V2 ≘ W2 → ⦃G,L⦄ ⊢ #i ⬈[h] W2. #h * #G #L #K #V #V2 #W2 #i #HLK * /3 width=7 by cpg_ell_drops, cpg_delta_drops, ex_intro/ qed. @@ -33,8 +33,8 @@ qed. lemma cpx_inv_atom1_drops: ∀h,I,G,L,T2. ⦃G,L⦄ ⊢ ⓪{I} ⬈[h] T2 → ∨∨ T2 = ⓪{I} | ∃∃s. T2 = ⋆(⫯[h]s) & I = Sort s - | ∃∃J,K,V,V2,i. ⬇*[i] L ≘ K.ⓑ{J}V & ⦃G,K⦄ ⊢ V ⬈[h] V2 & - ⬆*[↑i] V2 ≘ T2 & I = LRef i. + | ∃∃J,K,V,V2,i. ⇩*[i] L ≘ K.ⓑ{J}V & ⦃G,K⦄ ⊢ V ⬈[h] V2 & + ⇧*[↑i] V2 ≘ T2 & I = LRef i. #h #I #G #L #T2 * #c #H elim (cpg_inv_atom1_drops … H) -H * /4 width=9 by or3_intro0, or3_intro1, or3_intro2, ex4_5_intro, ex2_intro, ex_intro/ qed-. @@ -42,8 +42,8 @@ qed-. (* Basic_2A1: was: cpx_inv_lref1 *) lemma cpx_inv_lref1_drops: ∀h,G,L,T2,i. ⦃G,L⦄ ⊢ #i ⬈[h] T2 → T2 = #i ∨ - ∃∃J,K,V,V2. ⬇*[i] L ≘ K. ⓑ{J}V & ⦃G,K⦄ ⊢ V ⬈[h] V2 & - ⬆*[↑i] V2 ≘ T2. + ∃∃J,K,V,V2. ⇩*[i] L ≘ K. ⓑ{J}V & ⦃G,K⦄ ⊢ V ⬈[h] V2 & + ⇧*[↑i] V2 ≘ T2. #h #G #L #T1 #i * #c #H elim (cpg_inv_lref1_drops … H) -H * /4 width=7 by ex3_4_intro, ex_intro, or_introl, or_intror/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops_basic.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops_basic.ma index 12d23e217..022810c73 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops_basic.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops_basic.ma @@ -20,8 +20,8 @@ include "basic_2/rt_transition/cpx_drops.ma". (* Properties with basic relocation *****************************************) lemma cpx_subst (h) (G) (L) (U1) (i): - ∀I,K,V. ⬇*[i] L ≘ K.ⓑ{I}V → - ∃∃U2,T2. ⦃G,L⦄ ⊢ U1 ⬈[h] U2 & ⬆[i,1] T2 ≘ U2. + ∀I,K,V. ⇩*[i] L ≘ K.ⓑ{I}V → + ∃∃U2,T2. ⦃G,L⦄ ⊢ U1 ⬈[h] U2 & ⇧[i,1] T2 ≘ U2. #h #G #L #U1 @(fqup_wf_ind_eq (Ⓣ) … G L U1) -G -L -U1 #G0 #L0 #U0 #IH #G #L * * [ #s #HG #HL #HT #i #I #K #V #_ destruct -IH diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_lpr.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_lpr.ma index 54d5d3bc8..184d91406 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_lpr.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_lpr.ma @@ -35,8 +35,8 @@ fact cpr_conf_lpr_atom_delta (h): ∀G0,L0,i. ( ∀G,L,T. ⦃G0,L0,#i⦄ ⬂+ ⦃G,L,T⦄ → IH_cpr_conf_lpr h G L T ) → - ∀K0,V0. ⬇*[i] L0 ≘ K0.ⓓV0 → - ∀V2. ⦃G0,K0⦄ ⊢ V0 ➡[h] V2 → ∀T2. ⬆*[↑i] V2 ≘ T2 → + ∀K0,V0. ⇩*[i] L0 ≘ K0.ⓓV0 → + ∀V2. ⦃G0,K0⦄ ⊢ V0 ➡[h] V2 → ∀T2. ⇧*[↑i] V2 ≘ T2 → ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 → ∃∃T. ⦃G0,L1⦄ ⊢ #i ➡[h] T & ⦃G0,L2⦄ ⊢ T2 ➡[h] T. #h #G0 #L0 #i #IH #K0 #V0 #HLK0 #V2 #HV02 #T2 #HVT2 #L1 #HL01 #L2 #HL02 @@ -56,10 +56,10 @@ fact cpr_conf_lpr_delta_delta (h): ∀G0,L0,i. ( ∀G,L,T. ⦃G0,L0,#i⦄ ⬂+ ⦃G,L,T⦄ → IH_cpr_conf_lpr h G L T ) → - ∀K0,V0. ⬇*[i] L0 ≘ K0.ⓓV0 → - ∀V1. ⦃G0,K0⦄ ⊢ V0 ➡[h] V1 → ∀T1. ⬆*[↑i] V1 ≘ T1 → - ∀KX,VX. ⬇*[i] L0 ≘ KX.ⓓVX → - ∀V2. ⦃G0,KX⦄ ⊢ VX ➡[h] V2 → ∀T2. ⬆*[↑i] V2 ≘ T2 → + ∀K0,V0. ⇩*[i] L0 ≘ K0.ⓓV0 → + ∀V1. ⦃G0,K0⦄ ⊢ V0 ➡[h] V1 → ∀T1. ⇧*[↑i] V1 ≘ T1 → + ∀KX,VX. ⇩*[i] L0 ≘ KX.ⓓVX → + ∀V2. ⦃G0,KX⦄ ⊢ VX ➡[h] V2 → ∀T2. ⇧*[↑i] V2 ≘ T2 → ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 → ∃∃T. ⦃G0,L1⦄ ⊢ T1 ➡[h] T & ⦃G0,L2⦄ ⊢ T2 ➡[h] T. #h #G0 #L0 #i #IH #K0 #V0 #HLK0 #V1 #HV01 #T1 #HVT1 @@ -97,7 +97,7 @@ fact cpr_conf_lpr_bind_zeta (h): ∀G,L,T. ⦃G0,L0,+ⓓV0.T0⦄ ⬂+ ⦃G,L,T⦄ → IH_cpr_conf_lpr h G L T ) → ∀V1. ⦃G0,L0⦄ ⊢ V0 ➡[h] V1 → ∀T1. ⦃G0,L0.ⓓV0⦄ ⊢ T0 ➡[h] T1 → - ∀T2. ⬆*[1]T2 ≘ T0 → ∀X2. ⦃G0,L0⦄ ⊢ T2 ➡[h] X2 → + ∀T2. ⇧*[1]T2 ≘ T0 → ∀X2. ⦃G0,L0⦄ ⊢ T2 ➡[h] X2 → ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 → ∃∃T. ⦃G0,L1⦄ ⊢ +ⓓV1.T1 ➡[h] T & ⦃G0,L2⦄ ⊢ X2 ➡[h] T. #h #G0 #L0 #V0 #T0 #IH #V1 #HV01 #T1 #HT01 @@ -111,8 +111,8 @@ fact cpr_conf_lpr_zeta_zeta (h): ∀G0,L0,V0,T0. ( ∀G,L,T. ⦃G0,L0,+ⓓV0.T0⦄ ⬂+ ⦃G,L,T⦄ → IH_cpr_conf_lpr h G L T ) → - ∀T1. ⬆*[1] T1 ≘ T0 → ∀X1. ⦃G0,L0⦄ ⊢ T1 ➡[h] X1 → - ∀T2. ⬆*[1] T2 ≘ T0 → ∀X2. ⦃G0,L0⦄ ⊢ T2 ➡[h] X2 → + ∀T1. ⇧*[1] T1 ≘ T0 → ∀X1. ⦃G0,L0⦄ ⊢ T1 ➡[h] X1 → + ∀T2. ⇧*[1] T2 ≘ T0 → ∀X2. ⦃G0,L0⦄ ⊢ T2 ➡[h] X2 → ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 → ∃∃T. ⦃G0,L1⦄ ⊢ X1 ➡[h] T & ⦃G0,L2⦄ ⊢ X2 ➡[h] T. #h #G0 #L0 #V0 #T0 #IH #T1 #HT10 #X1 #HTX1 @@ -190,7 +190,7 @@ fact cpr_conf_lpr_flat_theta (h): ∀G,L,T. ⦃G0,L0,ⓐV0.ⓓ{p}W0.T0⦄ ⬂+ ⦃G,L,T⦄ → IH_cpr_conf_lpr h G L T ) → ∀V1. ⦃G0,L0⦄ ⊢ V0 ➡[h] V1 → ∀T1. ⦃G0,L0⦄ ⊢ ⓓ{p}W0.T0 ➡[h] T1 → - ∀V2. ⦃G0,L0⦄ ⊢ V0 ➡[h] V2 → ∀U2. ⬆*[1] V2 ≘ U2 → + ∀V2. ⦃G0,L0⦄ ⊢ V0 ➡[h] V2 → ∀U2. ⇧*[1] V2 ≘ U2 → ∀W2. ⦃G0,L0⦄ ⊢ W0 ➡[h] W2 → ∀T2. ⦃G0,L0.ⓓW0⦄ ⊢ T0 ➡[h] T2 → ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 → ∃∃T. ⦃G0,L1⦄ ⊢ ⓐV1.T1 ➡[h] T & ⦃G0,L2⦄ ⊢ ⓓ{p}W2.ⓐU2.T2 ➡[h] T. @@ -233,9 +233,9 @@ fact cpr_conf_lpr_theta_theta (h): ∀p,G0,L0,V0,W0,T0. ( ∀G,L,T. ⦃G0,L0,ⓐV0.ⓓ{p}W0.T0⦄ ⬂+ ⦃G,L,T⦄ → IH_cpr_conf_lpr h G L T ) → - ∀V1. ⦃G0,L0⦄ ⊢ V0 ➡[h] V1 → ∀U1. ⬆*[1] V1 ≘ U1 → + ∀V1. ⦃G0,L0⦄ ⊢ V0 ➡[h] V1 → ∀U1. ⇧*[1] V1 ≘ U1 → ∀W1. ⦃G0,L0⦄ ⊢ W0 ➡[h] W1 → ∀T1. ⦃G0,L0.ⓓW0⦄ ⊢ T0 ➡[h] T1 → - ∀V2. ⦃G0,L0⦄ ⊢ V0 ➡[h] V2 → ∀U2. ⬆*[1] V2 ≘ U2 → + ∀V2. ⦃G0,L0⦄ ⊢ V0 ➡[h] V2 → ∀U2. ⇧*[1] V2 ≘ U2 → ∀W2. ⦃G0,L0⦄ ⊢ W0 ➡[h] W2 → ∀T2. ⦃G0,L0.ⓓW0⦄ ⊢ T0 ➡[h] T2 → ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 → ∃∃T. ⦃G0,L1⦄ ⊢ ⓓ{p}W1.ⓐU1.T1 ➡[h] T & ⦃G0,L2⦄ ⊢ ⓓ{p}W2.ⓐU2.T2 ➡[h] T. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_drops.ma index ea4d62114..eaf81190d 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_drops.ma @@ -33,6 +33,6 @@ lemma rpx_inv_lifts_dx (h) (G): f_dropable_dx (cpx h G). lemma rpx_inv_lifts_bi (h) (G): ∀L1,L2,U. ⦃G,L1⦄ ⊢ ⬈[h,U] L2 → ∀b,f. 𝐔⦃f⦄ → - ∀K1,K2. ⬇*[b,f] L1 ≘ K1 → ⬇*[b,f] L2 ≘ K2 → - ∀T. ⬆*[f]T ≘ U → ⦃G,K1⦄ ⊢ ⬈[h,T] K2. + ∀K1,K2. ⇩*[b,f] L1 ≘ K1 → ⇩*[b,f] L2 ≘ K2 → + ∀T. ⇧*[f]T ≘ U → ⦃G,K1⦄ ⊢ ⬈[h,T] K2. /2 width=10 by rex_inv_lifts_bi/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_fsle.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_fsle.ma index b610f0958..4f811399e 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_fsle.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_fsle.ma @@ -23,7 +23,7 @@ include "basic_2/rt_transition/rpx_fqup.ma". (* Forward lemmas with free variables inclusion for restricted closures *****) (* Note: "⦃L2, T1⦄ ⊆ ⦃L2, T0⦄" does not hold *) -(* Note: Take L0 = K0.ⓓ(ⓝW.V), L2 = K0.ⓓW, T0 = #0, T1 = ⬆*[1]V *) +(* Note: Take L0 = K0.ⓓ(ⓝW.V), L2 = K0.ⓓW, T0 = #0, T1 = ⇧*[1]V *) (* Note: This invalidates rpxs_cpx_conf: "∀h, G. s_r_confluent1 … (cpx h G) (rpxs h G)" *) lemma rpx_cpx_conf_fsge (h) (G): ∀L0,T0,T1. ⦃G,L0⦄ ⊢ T0 ⬈[h] T1 → ∀L2. ⦃G,L0⦄ ⊢⬈[h,T0] L2 → ⦃L2,T1⦄ ⊆ ⦃L0,T0⦄. diff --git a/matita/matita/contribs/lambdadelta/basic_2/web/basic_2_src.tbl b/matita/matita/contribs/lambdadelta/basic_2/web/basic_2_src.tbl index 3fe0cbccb..62987557d 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/web/basic_2_src.tbl +++ b/matita/matita/contribs/lambdadelta/basic_2/web/basic_2_src.tbl @@ -192,7 +192,7 @@ class "italic" { 2 } } ] [ { "global env. slicing" * } { - [ [ "" ] "gget ( ⬇[?] ? ≘ ? )" "gget_gget" * ] + [ [ "" ] "gget ( ⇩[?] ? ≘ ? )" "gget_gget" * ] } ] [ { "context-sensitive ordinary rt-substitution" * } { diff --git a/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_drops.ma b/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_drops.ma index 11025a4a1..e146211fd 100644 --- a/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/i_static/rexs_drops.ma @@ -19,19 +19,19 @@ include "static_2/i_static/rexs.ma". (* ITERATED EXTENSION ON REFERRED ENTRIES OF A CONTEXT-SENSITIVE REALTION ***) definition tc_f_dedropable_sn: predicate (relation3 lenv term term) ≝ - λR. ∀b,f,L1,K1. ⬇*[b,f] L1 ≘ K1 → - ∀K2,T. K1 ⪤*[R,T] K2 → ∀U. ⬆*[f] T ≘ U → - ∃∃L2. L1 ⪤*[R,U] L2 & ⬇*[b,f] L2 ≘ K2 & L1 ≡[f] L2. + λR. ∀b,f,L1,K1. ⇩*[b,f] L1 ≘ K1 → + ∀K2,T. K1 ⪤*[R,T] K2 → ∀U. ⇧*[f] T ≘ U → + ∃∃L2. L1 ⪤*[R,U] L2 & ⇩*[b,f] L2 ≘ K2 & L1 ≡[f] L2. definition tc_f_dropable_sn: predicate (relation3 lenv term term) ≝ - λR. ∀b,f,L1,K1. ⬇*[b,f] L1 ≘ K1 → 𝐔⦃f⦄ → - ∀L2,U. L1 ⪤*[R,U] L2 → ∀T. ⬆*[f] T ≘ U → - ∃∃K2. K1 ⪤*[R,T] K2 & ⬇*[b,f] L2 ≘ K2. + λR. ∀b,f,L1,K1. ⇩*[b,f] L1 ≘ K1 → 𝐔⦃f⦄ → + ∀L2,U. L1 ⪤*[R,U] L2 → ∀T. ⇧*[f] T ≘ U → + ∃∃K2. K1 ⪤*[R,T] K2 & ⇩*[b,f] L2 ≘ K2. definition tc_f_dropable_dx: predicate (relation3 lenv term term) ≝ λR. ∀L1,L2,U. L1 ⪤*[R,U] L2 → - ∀b,f,K2. ⬇*[b,f] L2 ≘ K2 → 𝐔⦃f⦄ → ∀T. ⬆*[f] T ≘ U → - ∃∃K1. ⬇*[b,f] L1 ≘ K1 & K1 ⪤*[R,T] K2. + ∀b,f,K2. ⇩*[b,f] L2 ≘ K2 → 𝐔⦃f⦄ → ∀T. ⇧*[f] T ≘ U → + ∃∃K1. ⇩*[b,f] L1 ≘ K1 & K1 ⪤*[R,T] K2. (* Properties with generic slicing for local environments *******************) diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/relations/rdropstar_3.ma b/matita/matita/contribs/lambdadelta/static_2/notation/relations/rdropstar_3.ma index 0e0a3273d..9135f3760 100644 --- a/matita/matita/contribs/lambdadelta/static_2/notation/relations/rdropstar_3.ma +++ b/matita/matita/contribs/lambdadelta/static_2/notation/relations/rdropstar_3.ma @@ -14,6 +14,6 @@ (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************) -notation "hvbox( ⬇ * [ term 46 i ] break term 46 L1 ≘ break term 46 L2 )" +notation "hvbox( ⇩ * [ term 46 i ] break term 46 L1 ≘ break term 46 L2 )" non associative with precedence 45 for @{ 'RDropStar $i $L1 $L2 }. diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/relations/rdropstar_4.ma b/matita/matita/contribs/lambdadelta/static_2/notation/relations/rdropstar_4.ma index ce4ce12b9..5cb9c3bf8 100644 --- a/matita/matita/contribs/lambdadelta/static_2/notation/relations/rdropstar_4.ma +++ b/matita/matita/contribs/lambdadelta/static_2/notation/relations/rdropstar_4.ma @@ -14,6 +14,6 @@ (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************) -notation "hvbox( ⬇ * [ term 46 b, break term 46 f ] break term 46 L1 ≘ break term 46 L2 )" +notation "hvbox( ⇩ * [ term 46 b, break term 46 f ] break term 46 L1 ≘ break term 46 L2 )" non associative with precedence 45 for @{ 'RDropStar $b $f $L1 $L2 }. diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/relations/rlift_4.ma b/matita/matita/contribs/lambdadelta/static_2/notation/relations/rlift_4.ma index fb0fc24a7..f3bf32e34 100644 --- a/matita/matita/contribs/lambdadelta/static_2/notation/relations/rlift_4.ma +++ b/matita/matita/contribs/lambdadelta/static_2/notation/relations/rlift_4.ma @@ -14,6 +14,6 @@ (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************) -notation "hvbox( ⬆[ term 46 m, break term 46 n ] break term 46 T1 ≘ break term 46 T2 )" +notation "hvbox( ⇧[ term 46 m, break term 46 n ] break term 46 T1 ≘ break term 46 T2 )" non associative with precedence 45 for @{ 'RLift $m $n $T1 $T2 }. diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/relations/rliftstar_3.ma b/matita/matita/contribs/lambdadelta/static_2/notation/relations/rliftstar_3.ma index 26d0262de..109f973ed 100644 --- a/matita/matita/contribs/lambdadelta/static_2/notation/relations/rliftstar_3.ma +++ b/matita/matita/contribs/lambdadelta/static_2/notation/relations/rliftstar_3.ma @@ -14,6 +14,6 @@ (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************) -notation "hvbox( ⬆ * [ term 46 f ] break term 46 T1 ≘ break term 46 T2 )" +notation "hvbox( ⇧ * [ term 46 f ] break term 46 T1 ≘ break term 46 T2 )" non associative with precedence 45 for @{ 'RLiftStar $f $T1 $T2 }. diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/drops.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/drops.ma index dc4d6d75c..801bbd059 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/drops.ma @@ -28,7 +28,7 @@ inductive drops (b:bool): rtmap → relation lenv ≝ | drops_atom: ∀f. (b = Ⓣ → 𝐈⦃f⦄) → drops b (f) (⋆) (⋆) | drops_drop: ∀f,I,L1,L2. drops b f L1 L2 → drops b (↑f) (L1.ⓘ{I}) L2 | drops_skip: ∀f,I1,I2,L1,L2. - drops b f L1 L2 → ⬆*[f] I2 ≘ I1 → + drops b f L1 L2 → ⇧*[f] I2 ≘ I1 → drops b (⫯f) (L1.ⓘ{I1}) (L2.ⓘ{I2}) . @@ -39,68 +39,68 @@ interpretation "generic slicing (local environment)" 'RDropStar b f L1 L2 = (drops b f L1 L2). definition d_liftable1: predicate (relation2 lenv term) ≝ - λR. ∀K,T. R K T → ∀b,f,L. ⬇*[b,f] L ≘ K → - ∀U. ⬆*[f] T ≘ U → R L U. + λR. ∀K,T. R K T → ∀b,f,L. ⇩*[b,f] L ≘ K → + ∀U. ⇧*[f] T ≘ U → R L U. definition d_liftable1_isuni: predicate (relation2 lenv term) ≝ - λR. ∀K,T. R K T → ∀b,f,L. ⬇*[b,f] L ≘ K → 𝐔⦃f⦄ → - ∀U. ⬆*[f] T ≘ U → R L U. + λR. ∀K,T. R K T → ∀b,f,L. ⇩*[b,f] L ≘ K → 𝐔⦃f⦄ → + ∀U. ⇧*[f] T ≘ U → R L U. definition d_deliftable1: predicate (relation2 lenv term) ≝ - λR. ∀L,U. R L U → ∀b,f,K. ⬇*[b,f] L ≘ K → - ∀T. ⬆*[f] T ≘ U → R K T. + λR. ∀L,U. R L U → ∀b,f,K. ⇩*[b,f] L ≘ K → + ∀T. ⇧*[f] T ≘ U → R K T. definition d_deliftable1_isuni: predicate (relation2 lenv term) ≝ - λR. ∀L,U. R L U → ∀b,f,K. ⬇*[b,f] L ≘ K → 𝐔⦃f⦄ → - ∀T. ⬆*[f] T ≘ U → R K T. + λR. ∀L,U. R L U → ∀b,f,K. ⇩*[b,f] L ≘ K → 𝐔⦃f⦄ → + ∀T. ⇧*[f] T ≘ U → R K T. definition d_liftable2_sn: ∀C:Type[0]. ∀S:rtmap → relation C. predicate (lenv → relation C) ≝ - λC,S,R. ∀K,T1,T2. R K T1 T2 → ∀b,f,L. ⬇*[b,f] L ≘ K → + λC,S,R. ∀K,T1,T2. R K T1 T2 → ∀b,f,L. ⇩*[b,f] L ≘ K → ∀U1. S f T1 U1 → ∃∃U2. S f T2 U2 & R L U1 U2. definition d_deliftable2_sn: ∀C:Type[0]. ∀S:rtmap → relation C. predicate (lenv → relation C) ≝ - λC,S,R. ∀L,U1,U2. R L U1 U2 → ∀b,f,K. ⬇*[b,f] L ≘ K → + λC,S,R. ∀L,U1,U2. R L U1 U2 → ∀b,f,K. ⇩*[b,f] L ≘ K → ∀T1. S f T1 U1 → ∃∃T2. S f T2 U2 & R K T1 T2. definition d_liftable2_bi: ∀C:Type[0]. ∀S:rtmap → relation C. predicate (lenv → relation C) ≝ - λC,S,R. ∀K,T1,T2. R K T1 T2 → ∀b,f,L. ⬇*[b,f] L ≘ K → + λC,S,R. ∀K,T1,T2. R K T1 T2 → ∀b,f,L. ⇩*[b,f] L ≘ K → ∀U1. S f T1 U1 → ∀U2. S f T2 U2 → R L U1 U2. definition d_deliftable2_bi: ∀C:Type[0]. ∀S:rtmap → relation C. predicate (lenv → relation C) ≝ - λC,S,R. ∀L,U1,U2. R L U1 U2 → ∀b,f,K. ⬇*[b,f] L ≘ K → + λC,S,R. ∀L,U1,U2. R L U1 U2 → ∀b,f,K. ⇩*[b,f] L ≘ K → ∀T1. S f T1 U1 → ∀T2. S f T2 U2 → R K T1 T2. definition co_dropable_sn: predicate (rtmap → relation lenv) ≝ - λR. ∀b,f,L1,K1. ⬇*[b,f] L1 ≘ K1 → 𝐔⦃f⦄ → + λR. ∀b,f,L1,K1. ⇩*[b,f] L1 ≘ K1 → 𝐔⦃f⦄ → ∀f2,L2. R f2 L1 L2 → ∀f1. f ~⊚ f1 ≘ f2 → - ∃∃K2. R f1 K1 K2 & ⬇*[b,f] L2 ≘ K2. + ∃∃K2. R f1 K1 K2 & ⇩*[b,f] L2 ≘ K2. definition co_dropable_dx: predicate (rtmap → relation lenv) ≝ λR. ∀f2,L1,L2. R f2 L1 L2 → - ∀b,f,K2. ⬇*[b,f] L2 ≘ K2 → 𝐔⦃f⦄ → + ∀b,f,K2. ⇩*[b,f] L2 ≘ K2 → 𝐔⦃f⦄ → ∀f1. f ~⊚ f1 ≘ f2 → - ∃∃K1. ⬇*[b,f] L1 ≘ K1 & R f1 K1 K2. + ∃∃K1. ⇩*[b,f] L1 ≘ K1 & R f1 K1 K2. definition co_dedropable_sn: predicate (rtmap → relation lenv) ≝ - λR. ∀b,f,L1,K1. ⬇*[b,f] L1 ≘ K1 → ∀f1,K2. R f1 K1 K2 → + λR. ∀b,f,L1,K1. ⇩*[b,f] L1 ≘ K1 → ∀f1,K2. R f1 K1 K2 → ∀f2. f ~⊚ f1 ≘ f2 → - ∃∃L2. R f2 L1 L2 & ⬇*[b,f] L2 ≘ K2 & L1 ≡[f] L2. + ∃∃L2. R f2 L1 L2 & ⇩*[b,f] L2 ≘ K2 & L1 ≡[f] L2. (* Basic properties *********************************************************) -lemma drops_atom_F: ∀f. ⬇*[Ⓕ,f] ⋆ ≘ ⋆. +lemma drops_atom_F: ∀f. ⇩*[Ⓕ,f] ⋆ ≘ ⋆. #f @drops_atom #H destruct qed. -lemma drops_eq_repl_back: ∀b,L1,L2. eq_repl_back … (λf. ⬇*[b,f] L1 ≘ L2). +lemma drops_eq_repl_back: ∀b,L1,L2. eq_repl_back … (λf. ⇩*[b,f] L1 ≘ L2). #b #L1 #L2 #f1 #H elim H -f1 -L1 -L2 [ /4 width=3 by drops_atom, isid_eq_repl_back/ | #f1 #I #L1 #L2 #_ #IH #f2 #H elim (eq_inv_nx … H) -H @@ -110,23 +110,23 @@ lemma drops_eq_repl_back: ∀b,L1,L2. eq_repl_back … (λf. ⬇*[b,f] L1 ≘ L2 ] qed-. -lemma drops_eq_repl_fwd: ∀b,L1,L2. eq_repl_fwd … (λf. ⬇*[b,f] L1 ≘ L2). +lemma drops_eq_repl_fwd: ∀b,L1,L2. eq_repl_fwd … (λf. ⇩*[b,f] L1 ≘ L2). #b #L1 #L2 @eq_repl_sym /2 width=3 by drops_eq_repl_back/ (**) (* full auto fails *) qed-. (* Basic_2A1: includes: drop_FT *) -lemma drops_TF: ∀f,L1,L2. ⬇*[Ⓣ,f] L1 ≘ L2 → ⬇*[Ⓕ,f] L1 ≘ L2. +lemma drops_TF: ∀f,L1,L2. ⇩*[Ⓣ,f] L1 ≘ L2 → ⇩*[Ⓕ,f] L1 ≘ L2. #f #L1 #L2 #H elim H -f -L1 -L2 /3 width=1 by drops_atom, drops_drop, drops_skip/ qed. (* Basic_2A1: includes: drop_gen *) -lemma drops_gen: ∀b,f,L1,L2. ⬇*[Ⓣ,f] L1 ≘ L2 → ⬇*[b,f] L1 ≘ L2. +lemma drops_gen: ∀b,f,L1,L2. ⇩*[Ⓣ,f] L1 ≘ L2 → ⇩*[b,f] L1 ≘ L2. * /2 width=1 by drops_TF/ qed-. (* Basic_2A1: includes: drop_T *) -lemma drops_F: ∀b,f,L1,L2. ⬇*[b,f] L1 ≘ L2 → ⬇*[Ⓕ,f] L1 ≘ L2. +lemma drops_F: ∀b,f,L1,L2. ⇩*[b,f] L1 ≘ L2 → ⇩*[Ⓕ,f] L1 ≘ L2. * /2 width=1 by drops_TF/ qed-. @@ -146,7 +146,7 @@ qed-. (* Basic inversion lemmas ***************************************************) -fact drops_inv_atom1_aux: ∀b,f,X,Y. ⬇*[b,f] X ≘ Y → X = ⋆ → +fact drops_inv_atom1_aux: ∀b,f,X,Y. ⇩*[b,f] X ≘ Y → X = ⋆ → Y = ⋆ ∧ (b = Ⓣ → 𝐈⦃f⦄). #b #f #X #Y * -f -X -Y [ /3 width=1 by conj/ @@ -157,11 +157,11 @@ qed-. (* Basic_1: includes: drop_gen_sort *) (* Basic_2A1: includes: drop_inv_atom1 *) -lemma drops_inv_atom1: ∀b,f,Y. ⬇*[b,f] ⋆ ≘ Y → Y = ⋆ ∧ (b = Ⓣ → 𝐈⦃f⦄). +lemma drops_inv_atom1: ∀b,f,Y. ⇩*[b,f] ⋆ ≘ Y → Y = ⋆ ∧ (b = Ⓣ → 𝐈⦃f⦄). /2 width=3 by drops_inv_atom1_aux/ qed-. -fact drops_inv_drop1_aux: ∀b,f,X,Y. ⬇*[b,f] X ≘ Y → ∀g,I,K. X = K.ⓘ{I} → f = ↑g → - ⬇*[b,g] K ≘ Y. +fact drops_inv_drop1_aux: ∀b,f,X,Y. ⇩*[b,f] X ≘ Y → ∀g,I,K. X = K.ⓘ{I} → f = ↑g → + ⇩*[b,g] K ≘ Y. #b #f #X #Y * -f -X -Y [ #f #Hf #g #J #K #H destruct | #f #I #L1 #L2 #HL #g #J #K #H1 #H2 <(injective_next … H2) -g destruct // @@ -171,11 +171,11 @@ qed-. (* Basic_1: includes: drop_gen_drop *) (* Basic_2A1: includes: drop_inv_drop1_lt drop_inv_drop1 *) -lemma drops_inv_drop1: ∀b,f,I,K,Y. ⬇*[b,↑f] K.ⓘ{I} ≘ Y → ⬇*[b,f] K ≘ Y. +lemma drops_inv_drop1: ∀b,f,I,K,Y. ⇩*[b,↑f] K.ⓘ{I} ≘ Y → ⇩*[b,f] K ≘ Y. /2 width=6 by drops_inv_drop1_aux/ qed-. -fact drops_inv_skip1_aux: ∀b,f,X,Y. ⬇*[b,f] X ≘ Y → ∀g,I1,K1. X = K1.ⓘ{I1} → f = ⫯g → - ∃∃I2,K2. ⬇*[b,g] K1 ≘ K2 & ⬆*[g] I2 ≘ I1 & Y = K2.ⓘ{I2}. +fact drops_inv_skip1_aux: ∀b,f,X,Y. ⇩*[b,f] X ≘ Y → ∀g,I1,K1. X = K1.ⓘ{I1} → f = ⫯g → + ∃∃I2,K2. ⇩*[b,g] K1 ≘ K2 & ⇧*[g] I2 ≘ I1 & Y = K2.ⓘ{I2}. #b #f #X #Y * -f -X -Y [ #f #Hf #g #J1 #K1 #H destruct | #f #I #L1 #L2 #_ #g #J1 #K1 #_ #H2 elim (discr_next_push … H2) @@ -186,12 +186,12 @@ qed-. (* Basic_1: includes: drop_gen_skip_l *) (* Basic_2A1: includes: drop_inv_skip1 *) -lemma drops_inv_skip1: ∀b,f,I1,K1,Y. ⬇*[b,⫯f] K1.ⓘ{I1} ≘ Y → - ∃∃I2,K2. ⬇*[b,f] K1 ≘ K2 & ⬆*[f] I2 ≘ I1 & Y = K2.ⓘ{I2}. +lemma drops_inv_skip1: ∀b,f,I1,K1,Y. ⇩*[b,⫯f] K1.ⓘ{I1} ≘ Y → + ∃∃I2,K2. ⇩*[b,f] K1 ≘ K2 & ⇧*[f] I2 ≘ I1 & Y = K2.ⓘ{I2}. /2 width=5 by drops_inv_skip1_aux/ qed-. -fact drops_inv_skip2_aux: ∀b,f,X,Y. ⬇*[b,f] X ≘ Y → ∀g,I2,K2. Y = K2.ⓘ{I2} → f = ⫯g → - ∃∃I1,K1. ⬇*[b,g] K1 ≘ K2 & ⬆*[g] I2 ≘ I1 & X = K1.ⓘ{I1}. +fact drops_inv_skip2_aux: ∀b,f,X,Y. ⇩*[b,f] X ≘ Y → ∀g,I2,K2. Y = K2.ⓘ{I2} → f = ⫯g → + ∃∃I1,K1. ⇩*[b,g] K1 ≘ K2 & ⇧*[g] I2 ≘ I1 & X = K1.ⓘ{I1}. #b #f #X #Y * -f -X -Y [ #f #Hf #g #J2 #K2 #H destruct | #f #I #L1 #L2 #_ #g #J2 #K2 #_ #H2 elim (discr_next_push … H2) @@ -202,14 +202,14 @@ qed-. (* Basic_1: includes: drop_gen_skip_r *) (* Basic_2A1: includes: drop_inv_skip2 *) -lemma drops_inv_skip2: ∀b,f,I2,X,K2. ⬇*[b,⫯f] X ≘ K2.ⓘ{I2} → - ∃∃I1,K1. ⬇*[b,f] K1 ≘ K2 & ⬆*[f] I2 ≘ I1 & X = K1.ⓘ{I1}. +lemma drops_inv_skip2: ∀b,f,I2,X,K2. ⇩*[b,⫯f] X ≘ K2.ⓘ{I2} → + ∃∃I1,K1. ⇩*[b,f] K1 ≘ K2 & ⇧*[f] I2 ≘ I1 & X = K1.ⓘ{I1}. /2 width=5 by drops_inv_skip2_aux/ qed-. (* Basic forward lemmas *****************************************************) -fact drops_fwd_drop2_aux: ∀b,f2,X,Y. ⬇*[b,f2] X ≘ Y → ∀I,K. Y = K.ⓘ{I} → - ∃∃f1,f. 𝐈⦃f1⦄ & f2 ⊚ ↑f1 ≘ f & ⬇*[b,f] X ≘ K. +fact drops_fwd_drop2_aux: ∀b,f2,X,Y. ⇩*[b,f2] X ≘ Y → ∀I,K. Y = K.ⓘ{I} → + ∃∃f1,f. 𝐈⦃f1⦄ & f2 ⊚ ↑f1 ≘ f & ⇩*[b,f] X ≘ K. #b #f2 #X #Y #H elim H -f2 -X -Y [ #f2 #Hf2 #J #K #H destruct | #f2 #I #L1 #L2 #_ #IHL #J #K #H elim (IHL … H) -IHL @@ -219,14 +219,14 @@ fact drops_fwd_drop2_aux: ∀b,f2,X,Y. ⬇*[b,f2] X ≘ Y → ∀I,K. Y = K.ⓘ{ ] qed-. -lemma drops_fwd_drop2: ∀b,f2,I,X,K. ⬇*[b,f2] X ≘ K.ⓘ{I} → - ∃∃f1,f. 𝐈⦃f1⦄ & f2 ⊚ ↑f1 ≘ f & ⬇*[b,f] X ≘ K. +lemma drops_fwd_drop2: ∀b,f2,I,X,K. ⇩*[b,f2] X ≘ K.ⓘ{I} → + ∃∃f1,f. 𝐈⦃f1⦄ & f2 ⊚ ↑f1 ≘ f & ⇩*[b,f] X ≘ K. /2 width=4 by drops_fwd_drop2_aux/ qed-. (* Properties with test for identity ****************************************) (* Basic_2A1: includes: drop_refl *) -lemma drops_refl: ∀b,L,f. 𝐈⦃f⦄ → ⬇*[b,f] L ≘ L. +lemma drops_refl: ∀b,L,f. 𝐈⦃f⦄ → ⇩*[b,f] L ≘ L. #b #L elim L -L /2 width=1 by drops_atom/ #L #I #IHL #f #Hf elim (isid_inv_gen … Hf) -Hf /3 width=1 by drops_skip, liftsb_refl/ @@ -236,15 +236,15 @@ qed. (* Basic_1: includes: drop_gen_refl *) (* Basic_2A1: includes: drop_inv_O2 *) -lemma drops_fwd_isid: ∀b,f,L1,L2. ⬇*[b,f] L1 ≘ L2 → 𝐈⦃f⦄ → L1 = L2. +lemma drops_fwd_isid: ∀b,f,L1,L2. ⇩*[b,f] L1 ≘ L2 → 𝐈⦃f⦄ → L1 = L2. #b #f #L1 #L2 #H elim H -f -L1 -L2 // [ #f #I #L1 #L2 #_ #_ #H elim (isid_inv_next … H) // | /5 width=5 by isid_inv_push, liftsb_fwd_isid, eq_f2, sym_eq/ ] qed-. -lemma drops_after_fwd_drop2: ∀b,f2,I,X,K. ⬇*[b,f2] X ≘ K.ⓘ{I} → - ∀f1,f. 𝐈⦃f1⦄ → f2 ⊚ ↑f1 ≘ f → ⬇*[b,f] X ≘ K. +lemma drops_after_fwd_drop2: ∀b,f2,I,X,K. ⇩*[b,f2] X ≘ K.ⓘ{I} → + ∀f1,f. 𝐈⦃f1⦄ → f2 ⊚ ↑f1 ≘ f → ⇩*[b,f] X ≘ K. #b #f2 #I #X #K #H #f1 #f #Hf1 #Hf elim (drops_fwd_drop2 … H) -H #g1 #g #Hg1 #Hg #HK lapply (after_mono_eq … Hg … Hf ??) -Hg -Hf /3 width=5 by drops_eq_repl_back, isid_inv_eq_repl, eq_next/ @@ -252,14 +252,14 @@ qed-. (* Forward lemmas with test for finite colength *****************************) -lemma drops_fwd_isfin: ∀f,L1,L2. ⬇*[Ⓣ,f] L1 ≘ L2 → 𝐅⦃f⦄. +lemma drops_fwd_isfin: ∀f,L1,L2. ⇩*[Ⓣ,f] L1 ≘ L2 → 𝐅⦃f⦄. #f #L1 #L2 #H elim H -f -L1 -L2 /3 width=1 by isfin_next, isfin_push, isfin_isid/ qed-. (* Properties with test for uniformity **************************************) -lemma drops_isuni_ex: ∀f. 𝐔⦃f⦄ → ∀L. ∃K. ⬇*[Ⓕ,f] L ≘ K. +lemma drops_isuni_ex: ∀f. 𝐔⦃f⦄ → ∀L. ∃K. ⇩*[Ⓕ,f] L ≘ K. #f #H elim H -f /4 width=2 by drops_refl, drops_TF, ex_intro/ #f #_ #g #H #IH destruct * /2 width=2 by ex_intro/ #L #I elim (IH L) -IH /3 width=2 by drops_drop, ex_intro/ @@ -267,9 +267,9 @@ qed-. (* Inversion lemmas with test for uniformity ********************************) -lemma drops_inv_isuni: ∀f,L1,L2. ⬇*[Ⓣ,f] L1 ≘ L2 → 𝐔⦃f⦄ → +lemma drops_inv_isuni: ∀f,L1,L2. ⇩*[Ⓣ,f] L1 ≘ L2 → 𝐔⦃f⦄ → (𝐈⦃f⦄ ∧ L1 = L2) ∨ - ∃∃g,I,K. ⬇*[Ⓣ,g] K ≘ L2 & 𝐔⦃g⦄ & L1 = K.ⓘ{I} & f = ↑g. + ∃∃g,I,K. ⇩*[Ⓣ,g] K ≘ L2 & 𝐔⦃g⦄ & L1 = K.ⓘ{I} & f = ↑g. #f #L1 #L2 * -f -L1 -L2 [ /4 width=1 by or_introl, conj/ | /4 width=7 by isuni_inv_next, ex4_3_intro, or_intror/ @@ -278,9 +278,9 @@ lemma drops_inv_isuni: ∀f,L1,L2. ⬇*[Ⓣ,f] L1 ≘ L2 → 𝐔⦃f⦄ → qed-. (* Basic_2A1: was: drop_inv_O1_pair1 *) -lemma drops_inv_bind1_isuni: ∀b,f,I,K,L2. 𝐔⦃f⦄ → ⬇*[b,f] K.ⓘ{I} ≘ L2 → +lemma drops_inv_bind1_isuni: ∀b,f,I,K,L2. 𝐔⦃f⦄ → ⇩*[b,f] K.ⓘ{I} ≘ L2 → (𝐈⦃f⦄ ∧ L2 = K.ⓘ{I}) ∨ - ∃∃g. 𝐔⦃g⦄ & ⬇*[b,g] K ≘ L2 & f = ↑g. + ∃∃g. 𝐔⦃g⦄ & ⇩*[b,g] K ≘ L2 & f = ↑g. #b #f #I #K #L2 #Hf #H elim (isuni_split … Hf) -Hf * #g #Hg #H0 destruct [ lapply (drops_inv_skip1 … H) -H * #Z #Y #HY #HZ #H destruct <(drops_fwd_isid … HY Hg) -Y >(liftsb_fwd_isid … HZ Hg) -Z @@ -290,9 +290,9 @@ lemma drops_inv_bind1_isuni: ∀b,f,I,K,L2. 𝐔⦃f⦄ → ⬇*[b,f] K.ⓘ{I} qed-. (* Basic_2A1: was: drop_inv_O1_pair2 *) -lemma drops_inv_bind2_isuni: ∀b,f,I,K,L1. 𝐔⦃f⦄ → ⬇*[b,f] L1 ≘ K.ⓘ{I} → +lemma drops_inv_bind2_isuni: ∀b,f,I,K,L1. 𝐔⦃f⦄ → ⇩*[b,f] L1 ≘ K.ⓘ{I} → (𝐈⦃f⦄ ∧ L1 = K.ⓘ{I}) ∨ - ∃∃g,I1,K1. 𝐔⦃g⦄ & ⬇*[b,g] K1 ≘ K.ⓘ{I} & L1 = K1.ⓘ{I1} & f = ↑g. + ∃∃g,I1,K1. 𝐔⦃g⦄ & ⇩*[b,g] K1 ≘ K.ⓘ{I} & L1 = K1.ⓘ{I1} & f = ↑g. #b #f #I #K * [ #Hf #H elim (drops_inv_atom1 … H) -H #H destruct | #L1 #I1 #Hf #H elim (drops_inv_bind1_isuni … Hf H) -Hf -H * @@ -302,16 +302,16 @@ lemma drops_inv_bind2_isuni: ∀b,f,I,K,L1. 𝐔⦃f⦄ → ⬇*[b,f] L1 ≘ K. ] qed-. -lemma drops_inv_bind2_isuni_next: ∀b,f,I,K,L1. 𝐔⦃f⦄ → ⬇*[b,↑f] L1 ≘ K.ⓘ{I} → - ∃∃I1,K1. ⬇*[b,f] K1 ≘ K.ⓘ{I} & L1 = K1.ⓘ{I1}. +lemma drops_inv_bind2_isuni_next: ∀b,f,I,K,L1. 𝐔⦃f⦄ → ⇩*[b,↑f] L1 ≘ K.ⓘ{I} → + ∃∃I1,K1. ⇩*[b,f] K1 ≘ K.ⓘ{I} & L1 = K1.ⓘ{I1}. #b #f #I #K #L1 #Hf #H elim (drops_inv_bind2_isuni … H) -H /2 width=3 by isuni_next/ -Hf * [ #H elim (isid_inv_next … H) -H // | /2 width=4 by ex2_2_intro/ ] qed-. -fact drops_inv_TF_aux: ∀f,L1,L2. ⬇*[Ⓕ,f] L1 ≘ L2 → 𝐔⦃f⦄ → - ∀I,K. L2 = K.ⓘ{I} → ⬇*[Ⓣ,f] L1 ≘ K.ⓘ{I}. +fact drops_inv_TF_aux: ∀f,L1,L2. ⇩*[Ⓕ,f] L1 ≘ L2 → 𝐔⦃f⦄ → + ∀I,K. L2 = K.ⓘ{I} → ⇩*[Ⓣ,f] L1 ≘ K.ⓘ{I}. #f #L1 #L2 #H elim H -f -L1 -L2 [ #f #_ #_ #J #K #H destruct | #f #I #L1 #L2 #_ #IH #Hf #J #K #H destruct @@ -324,16 +324,16 @@ fact drops_inv_TF_aux: ∀f,L1,L2. ⬇*[Ⓕ,f] L1 ≘ L2 → 𝐔⦃f⦄ → qed-. (* Basic_2A1: includes: drop_inv_FT *) -lemma drops_inv_TF: ∀f,I,L,K. ⬇*[Ⓕ,f] L ≘ K.ⓘ{I} → 𝐔⦃f⦄ → ⬇*[Ⓣ,f] L ≘ K.ⓘ{I}. +lemma drops_inv_TF: ∀f,I,L,K. ⇩*[Ⓕ,f] L ≘ K.ⓘ{I} → 𝐔⦃f⦄ → ⇩*[Ⓣ,f] L ≘ K.ⓘ{I}. /2 width=3 by drops_inv_TF_aux/ qed-. (* Basic_2A1: includes: drop_inv_gen *) -lemma drops_inv_gen: ∀b,f,I,L,K. ⬇*[b,f] L ≘ K.ⓘ{I} → 𝐔⦃f⦄ → ⬇*[Ⓣ,f] L ≘ K.ⓘ{I}. +lemma drops_inv_gen: ∀b,f,I,L,K. ⇩*[b,f] L ≘ K.ⓘ{I} → 𝐔⦃f⦄ → ⇩*[Ⓣ,f] L ≘ K.ⓘ{I}. * /2 width=1 by drops_inv_TF/ qed-. (* Basic_2A1: includes: drop_inv_T *) -lemma drops_inv_F: ∀b,f,I,L,K. ⬇*[Ⓕ,f] L ≘ K.ⓘ{I} → 𝐔⦃f⦄ → ⬇*[b,f] L ≘ K.ⓘ{I}. +lemma drops_inv_F: ∀b,f,I,L,K. ⇩*[Ⓕ,f] L ≘ K.ⓘ{I} → 𝐔⦃f⦄ → ⇩*[b,f] L ≘ K.ⓘ{I}. * /2 width=1 by drops_inv_TF/ qed-. @@ -341,13 +341,13 @@ qed-. (* Basic_1: was: drop_S *) (* Basic_2A1: was: drop_fwd_drop2 *) -lemma drops_isuni_fwd_drop2: ∀b,f,I,X,K. 𝐔⦃f⦄ → ⬇*[b,f] X ≘ K.ⓘ{I} → ⬇*[b,↑f] X ≘ K. +lemma drops_isuni_fwd_drop2: ∀b,f,I,X,K. 𝐔⦃f⦄ → ⇩*[b,f] X ≘ K.ⓘ{I} → ⇩*[b,↑f] X ≘ K. /3 width=7 by drops_after_fwd_drop2, after_isid_isuni/ qed-. (* Inversion lemmas with uniform relocations ********************************) -lemma drops_inv_atom2: ∀b,L,f. ⬇*[b,f] L ≘ ⋆ → - ∃∃n,f1. ⬇*[b,𝐔❴n❵] L ≘ ⋆ & 𝐔❴n❵ ⊚ f1 ≘ f. +lemma drops_inv_atom2: ∀b,L,f. ⇩*[b,f] L ≘ ⋆ → + ∃∃n,f1. ⇩*[b,𝐔❴n❵] L ≘ ⋆ & 𝐔❴n❵ ⊚ f1 ≘ f. #b #L elim L -L [ /3 width=4 by drops_atom, after_isid_sn, ex2_2_intro/ | #L #I #IH #f #H elim (pn_split f) * #g #H0 destruct @@ -358,8 +358,8 @@ lemma drops_inv_atom2: ∀b,L,f. ⬇*[b,f] L ≘ ⋆ → ] qed-. -lemma drops_inv_succ: ∀L1,L2,i. ⬇*[↑i] L1 ≘ L2 → - ∃∃I,K. ⬇*[i] K ≘ L2 & L1 = K.ⓘ{I}. +lemma drops_inv_succ: ∀L1,L2,i. ⇩*[↑i] L1 ≘ L2 → + ∃∃I,K. ⇩*[i] K ≘ L2 & L1 = K.ⓘ{I}. #L1 #L2 #i #H elim (drops_inv_isuni … H) -H // * [ #H elim (isid_inv_next … H) -H // | /2 width=4 by ex2_2_intro/ @@ -368,7 +368,7 @@ qed-. (* Properties with uniform relocations **************************************) -lemma drops_F_uni: ∀L,i. ⬇*[Ⓕ,𝐔❴i❵] L ≘ ⋆ ∨ ∃∃I,K. ⬇*[i] L ≘ K.ⓘ{I}. +lemma drops_F_uni: ∀L,i. ⇩*[Ⓕ,𝐔❴i❵] L ≘ ⋆ ∨ ∃∃I,K. ⇩*[i] L ≘ K.ⓘ{I}. #L elim L -L /2 width=1 by or_introl/ #L #I #IH * /4 width=3 by drops_refl, ex1_2_intro, or_intror/ #i elim (IH i) -IH /3 width=1 by drops_drop, or_introl/ @@ -376,8 +376,8 @@ lemma drops_F_uni: ∀L,i. ⬇*[Ⓕ,𝐔❴i❵] L ≘ ⋆ ∨ ∃∃I,K. ⬇*[i qed-. (* Basic_2A1: includes: drop_split *) -lemma drops_split_trans: ∀b,f,L1,L2. ⬇*[b,f] L1 ≘ L2 → ∀f1,f2. f1 ⊚ f2 ≘ f → 𝐔⦃f1⦄ → - ∃∃L. ⬇*[b,f1] L1 ≘ L & ⬇*[b,f2] L ≘ L2. +lemma drops_split_trans: ∀b,f,L1,L2. ⇩*[b,f] L1 ≘ L2 → ∀f1,f2. f1 ⊚ f2 ≘ f → 𝐔⦃f1⦄ → + ∃∃L. ⇩*[b,f1] L1 ≘ L & ⇩*[b,f2] L ≘ L2. #b #f #L1 #L2 #H elim H -f -L1 -L2 [ #f #H0f #f1 #f2 #Hf #Hf1 @(ex2_intro … (⋆)) @drops_atom #H lapply (H0f H) -b @@ -396,8 +396,8 @@ lemma drops_split_trans: ∀b,f,L1,L2. ⬇*[b,f] L1 ≘ L2 → ∀f1,f2. f1 ⊚ ] qed-. -lemma drops_split_div: ∀b,f1,L1,L. ⬇*[b,f1] L1 ≘ L → ∀f2,f. f1 ⊚ f2 ≘ f → 𝐔⦃f2⦄ → - ∃∃L2. ⬇*[Ⓕ,f2] L ≘ L2 & ⬇*[Ⓕ,f] L1 ≘ L2. +lemma drops_split_div: ∀b,f1,L1,L. ⇩*[b,f1] L1 ≘ L → ∀f2,f. f1 ⊚ f2 ≘ f → 𝐔⦃f2⦄ → + ∃∃L2. ⇩*[Ⓕ,f2] L ≘ L2 & ⇩*[Ⓕ,f] L1 ≘ L2. #b #f1 #L1 #L #H elim H -f1 -L1 -L [ #f1 #Hf1 #f2 #f #Hf #Hf2 @(ex2_intro … (⋆)) @drops_atom #H destruct | #f1 #I #L1 #L #HL1 #IH #f2 #f #Hf #Hf2 elim (after_inv_nxx … Hf) -Hf [2,3: // ] @@ -417,12 +417,12 @@ qed-. (* Properties with application **********************************************) lemma drops_tls_at: ∀f,i1,i2. @⦃i1,f⦄ ≘ i2 → - ∀b,L1,L2. ⬇*[b,⫱*[i2]f] L1 ≘ L2 → - ⬇*[b,⫯⫱*[↑i2]f] L1 ≘ L2. + ∀b,L1,L2. ⇩*[b,⫱*[i2]f] L1 ≘ L2 → + ⇩*[b,⫯⫱*[↑i2]f] L1 ≘ L2. /3 width=3 by drops_eq_repl_fwd, at_inv_tls/ qed-. -lemma drops_split_trans_bind2: ∀b,f,I,L,K0. ⬇*[b,f] L ≘ K0.ⓘ{I} → ∀i. @⦃O,f⦄ ≘ i → - ∃∃J,K. ⬇*[i]L ≘ K.ⓘ{J} & ⬇*[b,⫱*[↑i]f] K ≘ K0 & ⬆*[⫱*[↑i]f] I ≘ J. +lemma drops_split_trans_bind2: ∀b,f,I,L,K0. ⇩*[b,f] L ≘ K0.ⓘ{I} → ∀i. @⦃O,f⦄ ≘ i → + ∃∃J,K. ⇩*[i]L ≘ K.ⓘ{J} & ⇩*[b,⫱*[↑i]f] K ≘ K0 & ⇧*[⫱*[↑i]f] I ≘ J. #b #f #I #L #K0 #H #i #Hf elim (drops_split_trans … H) -H [ |5: @(after_uni_dx … Hf) |2,3: skip ] /2 width=1 by after_isid_dx/ #Y #HLY #H lapply (drops_tls_at … Hf … H) -H #H diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_drops.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_drops.ma index 4e241edfd..0e57eb6aa 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_drops.ma @@ -20,9 +20,9 @@ include "static_2/relocation/drops_weight.ma". (* Main properties **********************************************************) (* Basic_2A1: includes: drop_conf_ge drop_conf_be drop_conf_le *) -theorem drops_conf: ∀b1,f1,L1,L. ⬇*[b1,f1] L1 ≘ L → - ∀b2,f,L2. ⬇*[b2,f] L1 ≘ L2 → - ∀f2. f1 ⊚ f2 ≘ f → ⬇*[b2,f2] L ≘ L2. +theorem drops_conf: ∀b1,f1,L1,L. ⇩*[b1,f1] L1 ≘ L → + ∀b2,f,L2. ⇩*[b2,f] L1 ≘ L2 → + ∀f2. f1 ⊚ f2 ≘ f → ⇩*[b2,f2] L ≘ L2. #b1 #f1 #L1 #L #H elim H -f1 -L1 -L [ #f1 #_ #b2 #f #L2 #HL2 #f2 #Hf12 elim (drops_inv_atom1 … HL2) -b1 -HL2 #H #Hf destruct @drops_atom @@ -41,9 +41,9 @@ qed-. (* Basic_2A1: includes: drop_trans_ge drop_trans_le drop_trans_ge_comm drops_drop_trans *) -theorem drops_trans: ∀b1,f1,L1,L. ⬇*[b1,f1] L1 ≘ L → - ∀b2,f2,L2. ⬇*[b2,f2] L ≘ L2 → - ∀f. f1 ⊚ f2 ≘ f → ⬇*[b1∧b2,f] L1 ≘ L2. +theorem drops_trans: ∀b1,f1,L1,L. ⇩*[b1,f1] L1 ≘ L → + ∀b2,f2,L2. ⇩*[b2,f2] L ≘ L2 → + ∀f. f1 ⊚ f2 ≘ f → ⇩*[b1∧b2,f] L1 ≘ L2. #b1 #f1 #L1 #L #H elim H -f1 -L1 -L [ #f1 #Hf1 #b2 #f2 #L2 #HL2 #f #Hf elim (drops_inv_atom1 … HL2) -HL2 #H #Hf2 destruct @drops_atom #H elim (andb_inv_true_dx … H) -H @@ -59,7 +59,7 @@ theorem drops_trans: ∀b1,f1,L1,L. ⬇*[b1,f1] L1 ≘ L → ] qed-. -theorem drops_conf_div: ∀f1,L,K. ⬇*[Ⓣ,f1] L ≘ K → ∀f2. ⬇*[Ⓣ,f2] L ≘ K → +theorem drops_conf_div: ∀f1,L,K. ⇩*[Ⓣ,f1] L ≘ K → ∀f2. ⇩*[Ⓣ,f2] L ≘ K → 𝐔⦃f1⦄ → 𝐔⦃f2⦄ → f1 ≡ f2. #f1 #L #K #H elim H -f1 -L -K [ #f1 #Hf1 #f2 #Hf2 elim (drops_inv_atom1 … Hf2) -Hf2 @@ -85,19 +85,19 @@ qed-. (* Advanced properties ******************************************************) (* Basic_2A1: includes: drop_mono *) -lemma drops_mono: ∀b1,f,L,L1. ⬇*[b1,f] L ≘ L1 → - ∀b2,L2. ⬇*[b2,f] L ≘ L2 → L1 = L2. +lemma drops_mono: ∀b1,f,L,L1. ⇩*[b1,f] L ≘ L1 → + ∀b2,L2. ⇩*[b2,f] L ≘ L2 → L1 = L2. #b1 #f #L #L1 lapply (after_isid_dx 𝐈𝐝 … f) /3 width=8 by drops_conf, drops_fwd_isid/ qed-. -lemma drops_inv_uni: ∀L,i. ⬇*[Ⓕ,𝐔❴i❵] L ≘ ⋆ → ∀I,K. ⬇*[i] L ≘ K.ⓘ{I} → ⊥. +lemma drops_inv_uni: ∀L,i. ⇩*[Ⓕ,𝐔❴i❵] L ≘ ⋆ → ∀I,K. ⇩*[i] L ≘ K.ⓘ{I} → ⊥. #L #i #H1 #I #K #H2 lapply (drops_F … H2) -H2 #H2 lapply (drops_mono … H2 … H1) -L -i #H destruct qed-. -lemma drops_ldec_dec: ∀L,i. Decidable (∃∃K,W. ⬇*[i] L ≘ K.ⓛW). +lemma drops_ldec_dec: ∀L,i. Decidable (∃∃K,W. ⇩*[i] L ≘ K.ⓛW). #L #i elim (drops_F_uni L i) [| * * [ #I #K1 | * #W1 #K1 ] ] [4: /3 width=3 by ex1_2_intro, or_introl/ |*: #H1L @or_intror * #K2 #W2 #H2L @@ -106,21 +106,21 @@ lemma drops_ldec_dec: ∀L,i. Decidable (∃∃K,W. ⬇*[i] L ≘ K.ⓛW). qed-. (* Basic_2A1: includes: drop_conf_lt *) -lemma drops_conf_skip1: ∀b2,f,L,L2. ⬇*[b2,f] L ≘ L2 → - ∀b1,f1,I1,K1. ⬇*[b1,f1] L ≘ K1.ⓘ{I1} → +lemma drops_conf_skip1: ∀b2,f,L,L2. ⇩*[b2,f] L ≘ L2 → + ∀b1,f1,I1,K1. ⇩*[b1,f1] L ≘ K1.ⓘ{I1} → ∀f2. f1 ⊚ ⫯f2 ≘ f → ∃∃I2,K2. L2 = K2.ⓘ{I2} & - ⬇*[b2,f2] K1 ≘ K2 & ⬆*[f2] I2 ≘ I1. + ⇩*[b2,f2] K1 ≘ K2 & ⇧*[f2] I2 ≘ I1. #b2 #f #L #L2 #H2 #b1 #f1 #I1 #K1 #H1 #f2 #Hf lapply (drops_conf … H1 … H2 … Hf) -L -Hf #H elim (drops_inv_skip1 … H) -H /2 width=5 by ex3_2_intro/ qed-. (* Basic_2A1: includes: drop_trans_lt *) -lemma drops_trans_skip2: ∀b1,f1,L1,L. ⬇*[b1,f1] L1 ≘ L → - ∀b2,f2,I2,K2. ⬇*[b2,f2] L ≘ K2.ⓘ{I2} → +lemma drops_trans_skip2: ∀b1,f1,L1,L. ⇩*[b1,f1] L1 ≘ L → + ∀b2,f2,I2,K2. ⇩*[b2,f2] L ≘ K2.ⓘ{I2} → ∀f. f1 ⊚ f2 ≘ ⫯f → ∃∃I1,K1. L1 = K1.ⓘ{I1} & - ⬇*[b1∧b2,f] K1 ≘ K2 & ⬆*[f] I2 ≘ I1. + ⇩*[b1∧b2,f] K1 ≘ K2 & ⇧*[f] I2 ≘ I1. #b1 #f1 #L1 #L #H1 #b2 #f2 #I2 #K2 #H2 #f #Hf lapply (drops_trans … H1 … H2 … Hf) -L -Hf #H elim (drops_inv_skip2 … H) -H /2 width=5 by ex3_2_intro/ @@ -128,7 +128,7 @@ qed-. (* Basic_2A1: includes: drops_conf_div *) lemma drops_conf_div_bind: ∀f1,f2,I1,I2,L,K. - ⬇*[Ⓣ,f1] L ≘ K.ⓘ{I1} → ⬇*[Ⓣ,f2] L ≘ K.ⓘ{I2} → + ⇩*[Ⓣ,f1] L ≘ K.ⓘ{I1} → ⇩*[Ⓣ,f2] L ≘ K.ⓘ{I2} → 𝐔⦃f1⦄ → 𝐔⦃f2⦄ → f1 ≡ f2 ∧ I1 = I2. #f1 #f2 #I1 #I2 #L #K #Hf1 #Hf2 #HU1 #HU2 lapply (drops_isuni_fwd_drop2 … Hf1) // #H1 diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_length.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_length.ma index 1a20d722f..73760857e 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_length.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_length.ma @@ -20,13 +20,13 @@ include "static_2/relocation/drops.ma". (* Forward lemmas with length for local environments ************************) (* Basic_2A1: includes: drop_fwd_length_le4 *) -lemma drops_fwd_length_le4: ∀b,f,L1,L2. ⬇*[b,f] L1 ≘ L2 → |L2| ≤ |L1|. +lemma drops_fwd_length_le4: ∀b,f,L1,L2. ⇩*[b,f] L1 ≘ L2 → |L2| ≤ |L1|. #b #f #L1 #L2 #H elim H -f -L1 -L2 /2 width=1 by le_S, le_S_S/ qed-. (* Basic_2A1: includes: drop_fwd_length_eq1 *) -theorem drops_fwd_length_eq1: ∀b1,b2,f,L1,K1. ⬇*[b1,f] L1 ≘ K1 → - ∀L2,K2. ⬇*[b2,f] L2 ≘ K2 → +theorem drops_fwd_length_eq1: ∀b1,b2,f,L1,K1. ⇩*[b1,f] L1 ≘ K1 → + ∀L2,K2. ⇩*[b2,f] L2 ≘ K2 → |L1| = |L2| → |K1| = |K2|. #b1 #b2 #f #L1 #K1 #HLK1 elim HLK1 -f -L1 -K1 [ #f #_ #L2 #K2 #HLK2 #H lapply (length_inv_zero_sn … H) -H @@ -43,7 +43,7 @@ qed-. (* forward lemmas with finite colength assignment ***************************) -lemma drops_fwd_fcla: ∀f,L1,L2. ⬇*[Ⓣ,f] L1 ≘ L2 → +lemma drops_fwd_fcla: ∀f,L1,L2. ⇩*[Ⓣ,f] L1 ≘ L2 → ∃∃n. 𝐂⦃f⦄ ≘ n & |L1| = |L2| + n. #f #L1 #L2 #H elim H -f -L1 -L2 [ /4 width=3 by fcla_isid, ex2_intro/ @@ -53,25 +53,25 @@ lemma drops_fwd_fcla: ∀f,L1,L2. ⬇*[Ⓣ,f] L1 ≘ L2 → qed-. (* Basic_2A1: includes: drop_fwd_length *) -lemma drops_fcla_fwd: ∀f,L1,L2,n. ⬇*[Ⓣ,f] L1 ≘ L2 → 𝐂⦃f⦄ ≘ n → +lemma drops_fcla_fwd: ∀f,L1,L2,n. ⇩*[Ⓣ,f] L1 ≘ L2 → 𝐂⦃f⦄ ≘ n → |L1| = |L2| + n. #f #l1 #l2 #n #Hf #Hn elim (drops_fwd_fcla … Hf) -Hf #k #Hm #H <(fcla_mono … Hm … Hn) -f // qed-. -lemma drops_fwd_fcla_le2: ∀f,L1,L2. ⬇*[Ⓣ,f] L1 ≘ L2 → +lemma drops_fwd_fcla_le2: ∀f,L1,L2. ⇩*[Ⓣ,f] L1 ≘ L2 → ∃∃n. 𝐂⦃f⦄ ≘ n & n ≤ |L1|. #f #L1 #L2 #H elim (drops_fwd_fcla … H) -H /2 width=3 by ex2_intro/ qed-. (* Basic_2A1: includes: drop_fwd_length_le2 *) -lemma drops_fcla_fwd_le2: ∀f,L1,L2,n. ⬇*[Ⓣ,f] L1 ≘ L2 → 𝐂⦃f⦄ ≘ n → +lemma drops_fcla_fwd_le2: ∀f,L1,L2,n. ⇩*[Ⓣ,f] L1 ≘ L2 → 𝐂⦃f⦄ ≘ n → n ≤ |L1|. #f #L1 #L2 #n #H #Hn elim (drops_fwd_fcla_le2 … H) -H #k #Hm #H <(fcla_mono … Hm … Hn) -f // qed-. -lemma drops_fwd_fcla_lt2: ∀f,L1,I2,K2. ⬇*[Ⓣ,f] L1 ≘ K2.ⓘ{I2} → +lemma drops_fwd_fcla_lt2: ∀f,L1,I2,K2. ⇩*[Ⓣ,f] L1 ≘ K2.ⓘ{I2} → ∃∃n. 𝐂⦃f⦄ ≘ n & n < |L1|. #f #L1 #I2 #K2 #H elim (drops_fwd_fcla … H) -H #n #Hf #H >H -L1 /3 width=3 by le_S_S, ex2_intro/ @@ -79,27 +79,27 @@ qed-. (* Basic_2A1: includes: drop_fwd_length_lt2 *) lemma drops_fcla_fwd_lt2: ∀f,L1,I2,K2,n. - ⬇*[Ⓣ,f] L1 ≘ K2.ⓘ{I2} → 𝐂⦃f⦄ ≘ n → + ⇩*[Ⓣ,f] L1 ≘ K2.ⓘ{I2} → 𝐂⦃f⦄ ≘ n → n < |L1|. #f #L1 #I2 #K2 #n #H #Hn elim (drops_fwd_fcla_lt2 … H) -H #k #Hm #H <(fcla_mono … Hm … Hn) -f // qed-. (* Basic_2A1: includes: drop_fwd_length_lt4 *) -lemma drops_fcla_fwd_lt4: ∀f,L1,L2,n. ⬇*[Ⓣ,f] L1 ≘ L2 → 𝐂⦃f⦄ ≘ n → 0 < n → +lemma drops_fcla_fwd_lt4: ∀f,L1,L2,n. ⇩*[Ⓣ,f] L1 ≘ L2 → 𝐂⦃f⦄ ≘ n → 0 < n → |L2| < |L1|. #f #L1 #L2 #n #H #Hf #Hn lapply (drops_fcla_fwd … H Hf) -f /2 width=1 by lt_minus_to_plus_r/ qed-. (* Basic_2A1: includes: drop_inv_length_eq *) -lemma drops_inv_length_eq: ∀f,L1,L2. ⬇*[Ⓣ,f] L1 ≘ L2 → |L1| = |L2| → 𝐈⦃f⦄. +lemma drops_inv_length_eq: ∀f,L1,L2. ⇩*[Ⓣ,f] L1 ≘ L2 → |L1| = |L2| → 𝐈⦃f⦄. #f #L1 #L2 #H #HL12 elim (drops_fwd_fcla … H) -H #n #Hn H1 -L1 @@ -107,7 +107,7 @@ elim (drops_fwd_fcla … HLK2) -HLK2 #n2 #Hn2 #H2 >H2 -L2 <(fcla_mono … Hn2 … Hn1) -f // qed-. -theorem drops_conf_div: ∀f1,f2,L1,L2. ⬇*[Ⓣ,f1] L1 ≘ L2 → ⬇*[Ⓣ,f2] L1 ≘ L2 → +theorem drops_conf_div: ∀f1,f2,L1,L2. ⇩*[Ⓣ,f1] L1 ≘ L2 → ⇩*[Ⓣ,f2] L1 ≘ L2 → ∃∃n. 𝐂⦃f1⦄ ≘ n & 𝐂⦃f2⦄ ≘ n. #f1 #f2 #L1 #L2 #H1 #H2 elim (drops_fwd_fcla … H1) -H1 #n1 #Hf1 #H1 @@ -116,7 +116,7 @@ lapply (injective_plus_r … H) -L2 #H destruct /2 width=3 by ex2_intro/ qed-. theorem drops_conf_div_fcla: ∀f1,f2,L1,L2,n1,n2. - ⬇*[Ⓣ,f1] L1 ≘ L2 → ⬇*[Ⓣ,f2] L1 ≘ L2 → 𝐂⦃f1⦄ ≘ n1 → 𝐂⦃f2⦄ ≘ n2 → + ⇩*[Ⓣ,f1] L1 ≘ L2 → ⇩*[Ⓣ,f2] L1 ≘ L2 → 𝐂⦃f1⦄ ≘ n1 → 𝐂⦃f2⦄ ≘ n2 → n1 = n2. #f1 #f2 #L1 #L2 #n1 #n2 #Hf1 #Hf2 #Hn1 #Hn2 lapply (drops_fcla_fwd … Hf1 Hn1) -f1 #H1 diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_lex.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_lex.ma index 8db2c8830..97a95c638 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_lex.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_lex.ma @@ -19,16 +19,16 @@ include "static_2/relocation/drops_sex.ma". (* GENERIC SLICING FOR LOCAL ENVIRONMENTS ***********************************) definition dedropable_sn: predicate … ≝ - λR. ∀b,f,L1,K1. ⬇*[b,f] L1 ≘ K1 → ∀K2. K1 ⪤[R] K2 → - ∃∃L2. L1 ⪤[R] L2 & ⬇*[b,f] L2 ≘ K2 & L1 ≡[f] L2. + λR. ∀b,f,L1,K1. ⇩*[b,f] L1 ≘ K1 → ∀K2. K1 ⪤[R] K2 → + ∃∃L2. L1 ⪤[R] L2 & ⇩*[b,f] L2 ≘ K2 & L1 ≡[f] L2. definition dropable_sn: predicate … ≝ - λR. ∀b,f,L1,K1. ⬇*[b,f] L1 ≘ K1 → 𝐔⦃f⦄ → ∀L2. L1 ⪤[R] L2 → - ∃∃K2. K1 ⪤[R] K2 & ⬇*[b,f] L2 ≘ K2. + λR. ∀b,f,L1,K1. ⇩*[b,f] L1 ≘ K1 → 𝐔⦃f⦄ → ∀L2. L1 ⪤[R] L2 → + ∃∃K2. K1 ⪤[R] K2 & ⇩*[b,f] L2 ≘ K2. definition dropable_dx: predicate … ≝ - λR. ∀L1,L2. L1 ⪤[R] L2 → ∀b,f,K2. ⬇*[b,f] L2 ≘ K2 → 𝐔⦃f⦄ → - ∃∃K1. ⬇*[b,f] L1 ≘ K1 & K1 ⪤[R] K2. + λR. ∀L1,L2. L1 ⪤[R] L2 → ∀b,f,K2. ⇩*[b,f] L2 ≘ K2 → 𝐔⦃f⦄ → + ∃∃K1. ⇩*[b,f] L1 ≘ K1 & K1 ⪤[R] K2. (* Properties with generic extension ****************************************) @@ -58,8 +58,8 @@ qed-. (* Basic_2A1: includes: lpx_sn_drop_conf *) lemma lex_drops_conf_pair (R): ∀L1,L2. L1 ⪤[R] L2 → - ∀b,f,I,K1,V1. ⬇*[b,f] L1 ≘ K1.ⓑ{I}V1 → 𝐔⦃f⦄ → - ∃∃K2,V2. ⬇*[b,f] L2 ≘ K2.ⓑ{I}V2 & K1 ⪤[R] K2 & R K1 V1 V2. + ∀b,f,I,K1,V1. ⇩*[b,f] L1 ≘ K1.ⓑ{I}V1 → 𝐔⦃f⦄ → + ∃∃K2,V2. ⇩*[b,f] L2 ≘ K2.ⓑ{I}V2 & K1 ⪤[R] K2 & R K1 V1 V2. #R #L1 #L2 * #f2 #Hf2 #HL12 #b #f #I #K1 #V1 #HLK1 #Hf elim (sex_drops_conf_push … HL12 … HLK1 Hf f2) -L1 -Hf [ #Z2 #K2 #HLK2 #HK12 #H @@ -71,8 +71,8 @@ qed-. (* Basic_2A1: includes: lpx_sn_drop_trans *) lemma lex_drops_trans_pair (R): ∀L1,L2. L1 ⪤[R] L2 → - ∀b,f,I,K2,V2. ⬇*[b,f] L2 ≘ K2.ⓑ{I}V2 → 𝐔⦃f⦄ → - ∃∃K1,V1. ⬇*[b,f] L1 ≘ K1.ⓑ{I}V1 & K1 ⪤[R] K2 & R K1 V1 V2. + ∀b,f,I,K2,V2. ⇩*[b,f] L2 ≘ K2.ⓑ{I}V2 → 𝐔⦃f⦄ → + ∃∃K1,V1. ⇩*[b,f] L1 ≘ K1.ⓑ{I}V1 & K1 ⪤[R] K2 & R K1 V1 V2. #R #L1 #L2 * #f2 #Hf2 #HL12 #b #f #I #K2 #V2 #HLK2 #Hf elim (sex_drops_trans_push … HL12 … HLK2 Hf f2) -L2 -Hf [ #Z1 #K1 #HLK1 #HK12 #H diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_seq.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_seq.ma index e214e9480..af2c4ef88 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_seq.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_seq.ma @@ -30,9 +30,9 @@ lemma seq_co_dropable_dx: co_dropable_dx seq. (* Basic_2A1: includes: lreq_drop_trans_be *) lemma seq_drops_trans_next: ∀f2,L1,L2. L1 ≡[f2] L2 → - ∀b,f,I,K2. ⬇*[b,f] L2 ≘ K2.ⓘ{I} → 𝐔⦃f⦄ → + ∀b,f,I,K2. ⇩*[b,f] L2 ≘ K2.ⓘ{I} → 𝐔⦃f⦄ → ∀f1. f ~⊚ ↑f1 ≘ f2 → - ∃∃K1. ⬇*[b,f] L1 ≘ K1.ⓘ{I} & K1 ≡[f1] K2. + ∃∃K1. ⇩*[b,f] L1 ≘ K1.ⓘ{I} & K1 ≡[f1] K2. #f2 #L1 #L2 #HL12 #b #f #I2 #K2 #HLK2 #Hf #f1 #Hf2 elim (sex_drops_trans_next … HL12 … HLK2 Hf … Hf2) -f2 -L2 -Hf #I1 #K1 #HLK1 #HK12 #H <(ceq_ext_inv_eq … H) -I2 @@ -41,18 +41,18 @@ qed-. (* Basic_2A1: includes: lreq_drop_conf_be *) lemma seq_drops_conf_next: ∀f2,L1,L2. L1 ≡[f2] L2 → - ∀b,f,I,K1. ⬇*[b,f] L1 ≘ K1.ⓘ{I} → 𝐔⦃f⦄ → + ∀b,f,I,K1. ⇩*[b,f] L1 ≘ K1.ⓘ{I} → 𝐔⦃f⦄ → ∀f1. f ~⊚ ↑f1 ≘ f2 → - ∃∃K2. ⬇*[b,f] L2 ≘ K2.ⓘ{I} & K1 ≡[f1] K2. + ∃∃K2. ⇩*[b,f] L2 ≘ K2.ⓘ{I} & K1 ≡[f1] K2. #f2 #L1 #L2 #HL12 #b #f #I1 #K1 #HLK1 #Hf #f1 #Hf2 elim (seq_drops_trans_next … (seq_sym … HL12) … HLK1 … Hf2) // -f2 -L1 -Hf /3 width=3 by seq_sym, ex2_intro/ qed-. lemma drops_seq_trans_next: ∀f1,K1,K2. K1 ≡[f1] K2 → - ∀b,f,I,L1. ⬇*[b,f] L1.ⓘ{I} ≘ K1 → + ∀b,f,I,L1. ⇩*[b,f] L1.ⓘ{I} ≘ K1 → ∀f2. f ~⊚ f1 ≘ ↑f2 → - ∃∃L2. ⬇*[b,f] L2.ⓘ{I} ≘ K2 & L1 ≡[f2] L2 & L1.ⓘ{I} ≡[f] L2.ⓘ{I}. + ∃∃L2. ⇩*[b,f] L2.ⓘ{I} ≘ K2 & L1 ≡[f2] L2 & L1.ⓘ{I} ≡[f] L2.ⓘ{I}. #f1 #K1 #K2 #HK12 #b #f #I1 #L1 #HLK1 #f2 #Hf2 elim (drops_sex_trans_next … HK12 … HLK1 … Hf2) -f1 -K1 /2 width=6 by cfull_lift_sn, ceq_lift_sn/ diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_sex.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_sex.ma index 8f3058cb9..5fe9c362e 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_sex.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_sex.ma @@ -43,7 +43,7 @@ qed-. lemma sex_liftable_co_dedropable_bi: ∀RN,RP. d_liftable2_sn … liftsb RN → d_liftable2_sn … liftsb RP → ∀f2,L1,L2. L1 ⪤[cfull,RP,f2] L2 → ∀f1,K1,K2. K1 ⪤[RN,RP,f1] K2 → - ∀b,f. ⬇*[b,f] L1 ≘ K1 → ⬇*[b,f] L2 ≘ K2 → + ∀b,f. ⇩*[b,f] L1 ≘ K1 → ⇩*[b,f] L2 ≘ K2 → f ~⊚ f1 ≘ f2 → L1 ⪤[RN,RP,f2] L2. #RN #RP #HRN #HRP #f2 #L1 #L2 #H elim H -f2 -L1 -L2 // #g2 #I1 #I2 #L1 #L2 #HL12 #HI12 #IH #f1 #Y1 #Y2 #HK12 #b #f #HY1 #HY2 #H @@ -87,9 +87,9 @@ lemma sex_liftable_co_dedropable_sn: ∀RN,RP. (∀L. reflexive … (RN L)) → ] qed-. -fact sex_dropable_dx_aux: ∀RN,RP,b,f,L2,K2. ⬇*[b,f] L2 ≘ K2 → 𝐔⦃f⦄ → +fact sex_dropable_dx_aux: ∀RN,RP,b,f,L2,K2. ⇩*[b,f] L2 ≘ K2 → 𝐔⦃f⦄ → ∀f2,L1. L1 ⪤[RN,RP,f2] L2 → ∀f1. f ~⊚ f1 ≘ f2 → - ∃∃K1. ⬇*[b,f] L1 ≘ K1 & K1 ⪤[RN,RP,f1] K2. + ∃∃K1. ⇩*[b,f] L1 ≘ K1 & K1 ⪤[RN,RP,f1] K2. #RN #RP #b #f #L2 #K2 #H elim H -f -L2 -K2 [ #f #Hf #_ #f2 #X #H #f1 #Hf2 lapply (sex_inv_atom2 … H) -H #H destruct /4 width=3 by sex_atom, drops_atom, ex2_intro/ @@ -114,9 +114,9 @@ lemma sex_co_dropable_dx: ∀RN,RP. co_dropable_dx (sex RN RP). lemma sex_drops_conf_next: ∀RN,RP. ∀f2,L1,L2. L1 ⪤[RN,RP,f2] L2 → - ∀b,f,I1,K1. ⬇*[b,f] L1 ≘ K1.ⓘ{I1} → 𝐔⦃f⦄ → + ∀b,f,I1,K1. ⇩*[b,f] L1 ≘ K1.ⓘ{I1} → 𝐔⦃f⦄ → ∀f1. f ~⊚ ↑f1 ≘ f2 → - ∃∃I2,K2. ⬇*[b,f] L2 ≘ K2.ⓘ{I2} & K1 ⪤[RN,RP,f1] K2 & RN K1 I1 I2. + ∃∃I2,K2. ⇩*[b,f] L2 ≘ K2.ⓘ{I2} & K1 ⪤[RN,RP,f1] K2 & RN K1 I1 I2. #RN #RP #f2 #L1 #L2 #HL12 #b #f #I1 #K1 #HLK1 #Hf #f1 #Hf2 elim (sex_co_dropable_sn … HLK1 … Hf … HL12 … Hf2) -L1 -f2 -Hf #X #HX #HLK2 elim (sex_inv_next1 … HX) -HX @@ -125,9 +125,9 @@ qed-. lemma sex_drops_conf_push: ∀RN,RP. ∀f2,L1,L2. L1 ⪤[RN,RP,f2] L2 → - ∀b,f,I1,K1. ⬇*[b,f] L1 ≘ K1.ⓘ{I1} → 𝐔⦃f⦄ → + ∀b,f,I1,K1. ⇩*[b,f] L1 ≘ K1.ⓘ{I1} → 𝐔⦃f⦄ → ∀f1. f ~⊚ ⫯f1 ≘ f2 → - ∃∃I2,K2. ⬇*[b,f] L2 ≘ K2.ⓘ{I2} & K1 ⪤[RN,RP,f1] K2 & RP K1 I1 I2. + ∃∃I2,K2. ⇩*[b,f] L2 ≘ K2.ⓘ{I2} & K1 ⪤[RN,RP,f1] K2 & RP K1 I1 I2. #RN #RP #f2 #L1 #L2 #HL12 #b #f #I1 #K1 #HLK1 #Hf #f1 #Hf2 elim (sex_co_dropable_sn … HLK1 … Hf … HL12 … Hf2) -L1 -f2 -Hf #X #HX #HLK2 elim (sex_inv_push1 … HX) -HX @@ -135,9 +135,9 @@ elim (sex_co_dropable_sn … HLK1 … Hf … HL12 … Hf2) -L1 -f2 -Hf qed-. lemma sex_drops_trans_next: ∀RN,RP,f2,L1,L2. L1 ⪤[RN,RP,f2] L2 → - ∀b,f,I2,K2. ⬇*[b,f] L2 ≘ K2.ⓘ{I2} → 𝐔⦃f⦄ → + ∀b,f,I2,K2. ⇩*[b,f] L2 ≘ K2.ⓘ{I2} → 𝐔⦃f⦄ → ∀f1. f ~⊚ ↑f1 ≘ f2 → - ∃∃I1,K1. ⬇*[b,f] L1 ≘ K1.ⓘ{I1} & K1 ⪤[RN,RP,f1] K2 & RN K1 I1 I2. + ∃∃I1,K1. ⇩*[b,f] L1 ≘ K1.ⓘ{I1} & K1 ⪤[RN,RP,f1] K2 & RN K1 I1 I2. #RN #RP #f2 #L1 #L2 #HL12 #b #f #I2 #K2 #HLK2 #Hf #f1 #Hf2 elim (sex_co_dropable_dx … HL12 … HLK2 … Hf … Hf2) -L2 -f2 -Hf #X #HLK1 #HX elim (sex_inv_next2 … HX) -HX @@ -145,9 +145,9 @@ elim (sex_co_dropable_dx … HL12 … HLK2 … Hf … Hf2) -L2 -f2 -Hf qed-. lemma sex_drops_trans_push: ∀RN,RP,f2,L1,L2. L1 ⪤[RN,RP,f2] L2 → - ∀b,f,I2,K2. ⬇*[b,f] L2 ≘ K2.ⓘ{I2} → 𝐔⦃f⦄ → + ∀b,f,I2,K2. ⇩*[b,f] L2 ≘ K2.ⓘ{I2} → 𝐔⦃f⦄ → ∀f1. f ~⊚ ⫯f1 ≘ f2 → - ∃∃I1,K1. ⬇*[b,f] L1 ≘ K1.ⓘ{I1} & K1 ⪤[RN,RP,f1] K2 & RP K1 I1 I2. + ∃∃I1,K1. ⇩*[b,f] L1 ≘ K1.ⓘ{I1} & K1 ⪤[RN,RP,f1] K2 & RP K1 I1 I2. #RN #RP #f2 #L1 #L2 #HL12 #b #f #I2 #K2 #HLK2 #Hf #f1 #Hf2 elim (sex_co_dropable_dx … HL12 … HLK2 … Hf … Hf2) -L2 -f2 -Hf #X #HLK1 #HX elim (sex_inv_push2 … HX) -HX @@ -157,9 +157,9 @@ qed-. lemma drops_sex_trans_next: ∀RN,RP. (∀L. reflexive ? (RN L)) → (∀L. reflexive ? (RP L)) → d_liftable2_sn … liftsb RN → d_liftable2_sn … liftsb RP → ∀f1,K1,K2. K1 ⪤[RN,RP,f1] K2 → - ∀b,f,I1,L1. ⬇*[b,f] L1.ⓘ{I1} ≘ K1 → + ∀b,f,I1,L1. ⇩*[b,f] L1.ⓘ{I1} ≘ K1 → ∀f2. f ~⊚ f1 ≘ ↑f2 → - ∃∃I2,L2. ⬇*[b,f] L2.ⓘ{I2} ≘ K2 & L1 ⪤[RN,RP,f2] L2 & RN L1 I1 I2 & L1.ⓘ{I1} ≡[f] L2.ⓘ{I2}. + ∃∃I2,L2. ⇩*[b,f] L2.ⓘ{I2} ≘ K2 & L1 ⪤[RN,RP,f2] L2 & RN L1 I1 I2 & L1.ⓘ{I1} ≡[f] L2.ⓘ{I2}. #RN #RP #H1RN #H1RP #H2RN #H2RP #f1 #K1 #K2 #HK12 #b #f #I1 #L1 #HLK1 #f2 #Hf2 elim (sex_liftable_co_dedropable_sn … H1RN H1RP H2RN H2RP … HLK1 … HK12 … Hf2) -K1 -f1 -H1RN -H1RP -H2RN -H2RP #X #HX #HLK2 #H1L12 elim (sex_inv_next1 … HX) -HX @@ -169,18 +169,18 @@ qed-. lemma drops_sex_trans_push: ∀RN,RP. (∀L. reflexive ? (RN L)) → (∀L. reflexive ? (RP L)) → d_liftable2_sn … liftsb RN → d_liftable2_sn … liftsb RP → ∀f1,K1,K2. K1 ⪤[RN,RP,f1] K2 → - ∀b,f,I1,L1. ⬇*[b,f] L1.ⓘ{I1} ≘ K1 → + ∀b,f,I1,L1. ⇩*[b,f] L1.ⓘ{I1} ≘ K1 → ∀f2. f ~⊚ f1 ≘ ⫯f2 → - ∃∃I2,L2. ⬇*[b,f] L2.ⓘ{I2} ≘ K2 & L1 ⪤[RN,RP,f2] L2 & RP L1 I1 I2 & L1.ⓘ{I1} ≡[f] L2.ⓘ{I2}. + ∃∃I2,L2. ⇩*[b,f] L2.ⓘ{I2} ≘ K2 & L1 ⪤[RN,RP,f2] L2 & RP L1 I1 I2 & L1.ⓘ{I1} ≡[f] L2.ⓘ{I2}. #RN #RP #H1RN #H1RP #H2RN #H2RP #f1 #K1 #K2 #HK12 #b #f #I1 #L1 #HLK1 #f2 #Hf2 elim (sex_liftable_co_dedropable_sn … H1RN H1RP H2RN H2RP … HLK1 … HK12 … Hf2) -K1 -f1 -H1RN -H1RP -H2RN -H2RP #X #HX #HLK2 #H1L12 elim (sex_inv_push1 … HX) -HX #I2 #L2 #H2L12 #HI12 #H destruct /2 width=6 by ex4_2_intro/ qed-. -lemma drops_atom2_sex_conf: ∀RN,RP,b,f1,L1. ⬇*[b,f1] L1 ≘ ⋆ → 𝐔⦃f1⦄ → +lemma drops_atom2_sex_conf: ∀RN,RP,b,f1,L1. ⇩*[b,f1] L1 ≘ ⋆ → 𝐔⦃f1⦄ → ∀f,L2. L1 ⪤[RN,RP,f] L2 → - ∀f2. f1 ~⊚ f2 ≘f → ⬇*[b,f1] L2 ≘ ⋆. + ∀f2. f1 ~⊚ f2 ≘f → ⇩*[b,f1] L2 ≘ ⋆. #RN #RP #b #f1 #L1 #H1 #Hf1 #f #L2 #H2 #f2 #H3 elim (sex_co_dropable_sn … H1 … H2 … H3) // -H1 -H2 -H3 -Hf1 #L #H #HL2 lapply (sex_inv_atom1 … H) -H // diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_vector.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_vector.ma index 4f5eef017..3c3f2bec8 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_vector.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_vector.ma @@ -19,8 +19,8 @@ include "static_2/relocation/drops.ma". definition d_liftable1_all: predicate (relation2 lenv term) ≝ λR. ∀K,Ts. all … (R K) Ts → - ∀b,f,L. ⬇*[b,f] L ≘ K → - ∀Us. ⬆*[f] Ts ≘ Us → all … (R L) Us. + ∀b,f,L. ⇩*[b,f] L ≘ K → + ∀Us. ⇧*[f] Ts ≘ Us → all … (R L) Us. (* Properties with generic relocation for term vectors **********************) diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_weight.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_weight.ma index 8c94cce14..e6bd458ea 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_weight.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_weight.ma @@ -21,7 +21,7 @@ include "static_2/relocation/drops.ma". (* Forward lemmas with weight for local environments ************************) (* Basic_2A1: includes: drop_fwd_lw *) -lemma drops_fwd_lw: ∀b,f,L1,L2. ⬇*[b,f] L1 ≘ L2 → ♯{L2} ≤ ♯{L1}. +lemma drops_fwd_lw: ∀b,f,L1,L2. ⇩*[b,f] L1 ≘ L2 → ♯{L2} ≤ ♯{L1}. #b #f #L1 #L2 #H elim H -f -L1 -L2 // [ /2 width=3 by transitive_le/ | #f #I1 #I2 #L1 #L2 #_ #HI21 #IHL12 normalize @@ -30,7 +30,7 @@ lemma drops_fwd_lw: ∀b,f,L1,L2. ⬇*[b,f] L1 ≘ L2 → ♯{L2} ≤ ♯{L1}. qed-. (* Basic_2A1: includes: drop_fwd_lw_lt *) -lemma drops_fwd_lw_lt: ∀f,L1,L2. ⬇*[Ⓣ,f] L1 ≘ L2 → +lemma drops_fwd_lw_lt: ∀f,L1,L2. ⇩*[Ⓣ,f] L1 ≘ L2 → (𝐈⦃f⦄ → ⊥) → ♯{L2} < ♯{L1}. #f #L1 #L2 #H elim H -f -L1 -L2 [ #f #Hf #Hnf elim Hnf -Hnf /2 width=1 by/ @@ -43,14 +43,14 @@ qed-. (* Forward lemmas with restricted weight for closures ***********************) (* Basic_2A1: includes: drop_fwd_rfw *) -lemma drops_bind2_fwd_rfw: ∀b,f,I,L,K,V. ⬇*[b,f] L ≘ K.ⓑ{I}V → ∀T. ♯{K,V} < ♯{L,T}. +lemma drops_bind2_fwd_rfw: ∀b,f,I,L,K,V. ⇩*[b,f] L ≘ K.ⓑ{I}V → ∀T. ♯{K,V} < ♯{L,T}. #b #f #I #L #K #V #HLK lapply (drops_fwd_lw … HLK) -HLK normalize in ⊢ (%→?→?%%); /3 width=3 by le_to_lt_to_lt, monotonic_lt_plus_r/ qed-. (* Advanced inversion lemma *************************************************) -lemma drops_inv_x_bind_xy: ∀b,f,I,L. ⬇*[b,f] L ≘ L.ⓘ{I} → ⊥. +lemma drops_inv_x_bind_xy: ∀b,f,I,L. ⇩*[b,f] L ≘ L.ⓘ{I} → ⊥. #b #f #I #L #H lapply (drops_fwd_lw … H) -b -f /2 width=4 by lt_le_false/ (**) (* full auto is a bit slow: 19s *) qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts.ma index 4ec47cc91..b888af22d 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts.ma @@ -41,32 +41,32 @@ interpretation "generic relocation (term)" 'RLiftStar f T1 T2 = (lifts f T1 T2). definition liftable2_sn: predicate (relation term) ≝ - λR. ∀T1,T2. R T1 T2 → ∀f,U1. ⬆*[f] T1 ≘ U1 → - ∃∃U2. ⬆*[f] T2 ≘ U2 & R U1 U2. + λR. ∀T1,T2. R T1 T2 → ∀f,U1. ⇧*[f] T1 ≘ U1 → + ∃∃U2. ⇧*[f] T2 ≘ U2 & R U1 U2. definition deliftable2_sn: predicate (relation term) ≝ - λR. ∀U1,U2. R U1 U2 → ∀f,T1. ⬆*[f] T1 ≘ U1 → - ∃∃T2. ⬆*[f] T2 ≘ U2 & R T1 T2. + λR. ∀U1,U2. R U1 U2 → ∀f,T1. ⇧*[f] T1 ≘ U1 → + ∃∃T2. ⇧*[f] T2 ≘ U2 & R T1 T2. definition liftable2_bi: predicate (relation term) ≝ - λR. ∀T1,T2. R T1 T2 → ∀f,U1. ⬆*[f] T1 ≘ U1 → - ∀U2. ⬆*[f] T2 ≘ U2 → R U1 U2. + λR. ∀T1,T2. R T1 T2 → ∀f,U1. ⇧*[f] T1 ≘ U1 → + ∀U2. ⇧*[f] T2 ≘ U2 → R U1 U2. definition deliftable2_bi: predicate (relation term) ≝ - λR. ∀U1,U2. R U1 U2 → ∀f,T1. ⬆*[f] T1 ≘ U1 → - ∀T2. ⬆*[f] T2 ≘ U2 → R T1 T2. + λR. ∀U1,U2. R U1 U2 → ∀f,T1. ⇧*[f] T1 ≘ U1 → + ∀T2. ⇧*[f] T2 ≘ U2 → R T1 T2. definition liftable2_dx: predicate (relation term) ≝ - λR. ∀T1,T2. R T1 T2 → ∀f,U2. ⬆*[f] T2 ≘ U2 → - ∃∃U1. ⬆*[f] T1 ≘ U1 & R U1 U2. + λR. ∀T1,T2. R T1 T2 → ∀f,U2. ⇧*[f] T2 ≘ U2 → + ∃∃U1. ⇧*[f] T1 ≘ U1 & R U1 U2. definition deliftable2_dx: predicate (relation term) ≝ - λR. ∀U1,U2. R U1 U2 → ∀f,T2. ⬆*[f] T2 ≘ U2 → - ∃∃T1. ⬆*[f] T1 ≘ U1 & R T1 T2. + λR. ∀U1,U2. R U1 U2 → ∀f,T2. ⇧*[f] T2 ≘ U2 → + ∃∃T1. ⇧*[f] T1 ≘ U1 & R T1 T2. (* Basic inversion lemmas ***************************************************) -fact lifts_inv_sort1_aux: ∀f,X,Y. ⬆*[f] X ≘ Y → ∀s. X = ⋆s → Y = ⋆s. +fact lifts_inv_sort1_aux: ∀f,X,Y. ⇧*[f] X ≘ Y → ∀s. X = ⋆s → Y = ⋆s. #f #X #Y * -f -X -Y // [ #f #i1 #i2 #_ #x #H destruct | #f #p #I #V1 #V2 #T1 #T2 #_ #_ #x #H destruct @@ -76,10 +76,10 @@ qed-. (* Basic_1: was: lift1_sort *) (* Basic_2A1: includes: lift_inv_sort1 *) -lemma lifts_inv_sort1: ∀f,Y,s. ⬆*[f] ⋆s ≘ Y → Y = ⋆s. +lemma lifts_inv_sort1: ∀f,Y,s. ⇧*[f] ⋆s ≘ Y → Y = ⋆s. /2 width=4 by lifts_inv_sort1_aux/ qed-. -fact lifts_inv_lref1_aux: ∀f,X,Y. ⬆*[f] X ≘ Y → ∀i1. X = #i1 → +fact lifts_inv_lref1_aux: ∀f,X,Y. ⇧*[f] X ≘ Y → ∀i1. X = #i1 → ∃∃i2. @⦃i1,f⦄ ≘ i2 & Y = #i2. #f #X #Y * -f -X -Y [ #f #s #x #H destruct @@ -92,11 +92,11 @@ qed-. (* Basic_1: was: lift1_lref *) (* Basic_2A1: includes: lift_inv_lref1 lift_inv_lref1_lt lift_inv_lref1_ge *) -lemma lifts_inv_lref1: ∀f,Y,i1. ⬆*[f] #i1 ≘ Y → +lemma lifts_inv_lref1: ∀f,Y,i1. ⇧*[f] #i1 ≘ Y → ∃∃i2. @⦃i1,f⦄ ≘ i2 & Y = #i2. /2 width=3 by lifts_inv_lref1_aux/ qed-. -fact lifts_inv_gref1_aux: ∀f,X,Y. ⬆*[f] X ≘ Y → ∀l. X = §l → Y = §l. +fact lifts_inv_gref1_aux: ∀f,X,Y. ⇧*[f] X ≘ Y → ∀l. X = §l → Y = §l. #f #X #Y * -f -X -Y // [ #f #i1 #i2 #_ #x #H destruct | #f #p #I #V1 #V2 #T1 #T2 #_ #_ #x #H destruct @@ -105,12 +105,12 @@ fact lifts_inv_gref1_aux: ∀f,X,Y. ⬆*[f] X ≘ Y → ∀l. X = §l → Y = § qed-. (* Basic_2A1: includes: lift_inv_gref1 *) -lemma lifts_inv_gref1: ∀f,Y,l. ⬆*[f] §l ≘ Y → Y = §l. +lemma lifts_inv_gref1: ∀f,Y,l. ⇧*[f] §l ≘ Y → Y = §l. /2 width=4 by lifts_inv_gref1_aux/ qed-. -fact lifts_inv_bind1_aux: ∀f,X,Y. ⬆*[f] X ≘ Y → +fact lifts_inv_bind1_aux: ∀f,X,Y. ⇧*[f] X ≘ Y → ∀p,I,V1,T1. X = ⓑ{p,I}V1.T1 → - ∃∃V2,T2. ⬆*[f] V1 ≘ V2 & ⬆*[⫯f] T1 ≘ T2 & + ∃∃V2,T2. ⇧*[f] V1 ≘ V2 & ⇧*[⫯f] T1 ≘ T2 & Y = ⓑ{p,I}V2.T2. #f #X #Y * -f -X -Y [ #f #s #q #J #W1 #U1 #H destruct @@ -123,14 +123,14 @@ qed-. (* Basic_1: was: lift1_bind *) (* Basic_2A1: includes: lift_inv_bind1 *) -lemma lifts_inv_bind1: ∀f,p,I,V1,T1,Y. ⬆*[f] ⓑ{p,I}V1.T1 ≘ Y → - ∃∃V2,T2. ⬆*[f] V1 ≘ V2 & ⬆*[⫯f] T1 ≘ T2 & +lemma lifts_inv_bind1: ∀f,p,I,V1,T1,Y. ⇧*[f] ⓑ{p,I}V1.T1 ≘ Y → + ∃∃V2,T2. ⇧*[f] V1 ≘ V2 & ⇧*[⫯f] T1 ≘ T2 & Y = ⓑ{p,I}V2.T2. /2 width=3 by lifts_inv_bind1_aux/ qed-. -fact lifts_inv_flat1_aux: ∀f:rtmap. ∀X,Y. ⬆*[f] X ≘ Y → +fact lifts_inv_flat1_aux: ∀f:rtmap. ∀X,Y. ⇧*[f] X ≘ Y → ∀I,V1,T1. X = ⓕ{I}V1.T1 → - ∃∃V2,T2. ⬆*[f] V1 ≘ V2 & ⬆*[f] T1 ≘ T2 & + ∃∃V2,T2. ⇧*[f] V1 ≘ V2 & ⇧*[f] T1 ≘ T2 & Y = ⓕ{I}V2.T2. #f #X #Y * -f -X -Y [ #f #s #J #W1 #U1 #H destruct @@ -143,12 +143,12 @@ qed-. (* Basic_1: was: lift1_flat *) (* Basic_2A1: includes: lift_inv_flat1 *) -lemma lifts_inv_flat1: ∀f:rtmap. ∀I,V1,T1,Y. ⬆*[f] ⓕ{I}V1.T1 ≘ Y → - ∃∃V2,T2. ⬆*[f] V1 ≘ V2 & ⬆*[f] T1 ≘ T2 & +lemma lifts_inv_flat1: ∀f:rtmap. ∀I,V1,T1,Y. ⇧*[f] ⓕ{I}V1.T1 ≘ Y → + ∃∃V2,T2. ⇧*[f] V1 ≘ V2 & ⇧*[f] T1 ≘ T2 & Y = ⓕ{I}V2.T2. /2 width=3 by lifts_inv_flat1_aux/ qed-. -fact lifts_inv_sort2_aux: ∀f,X,Y. ⬆*[f] X ≘ Y → ∀s. Y = ⋆s → X = ⋆s. +fact lifts_inv_sort2_aux: ∀f,X,Y. ⇧*[f] X ≘ Y → ∀s. Y = ⋆s → X = ⋆s. #f #X #Y * -f -X -Y // [ #f #i1 #i2 #_ #x #H destruct | #f #p #I #V1 #V2 #T1 #T2 #_ #_ #x #H destruct @@ -158,10 +158,10 @@ qed-. (* Basic_1: includes: lift_gen_sort *) (* Basic_2A1: includes: lift_inv_sort2 *) -lemma lifts_inv_sort2: ∀f,X,s. ⬆*[f] X ≘ ⋆s → X = ⋆s. +lemma lifts_inv_sort2: ∀f,X,s. ⇧*[f] X ≘ ⋆s → X = ⋆s. /2 width=4 by lifts_inv_sort2_aux/ qed-. -fact lifts_inv_lref2_aux: ∀f,X,Y. ⬆*[f] X ≘ Y → ∀i2. Y = #i2 → +fact lifts_inv_lref2_aux: ∀f,X,Y. ⇧*[f] X ≘ Y → ∀i2. Y = #i2 → ∃∃i1. @⦃i1,f⦄ ≘ i2 & X = #i1. #f #X #Y * -f -X -Y [ #f #s #x #H destruct @@ -174,11 +174,11 @@ qed-. (* Basic_1: includes: lift_gen_lref lift_gen_lref_lt lift_gen_lref_false lift_gen_lref_ge *) (* Basic_2A1: includes: lift_inv_lref2 lift_inv_lref2_lt lift_inv_lref2_be lift_inv_lref2_ge lift_inv_lref2_plus *) -lemma lifts_inv_lref2: ∀f,X,i2. ⬆*[f] X ≘ #i2 → +lemma lifts_inv_lref2: ∀f,X,i2. ⇧*[f] X ≘ #i2 → ∃∃i1. @⦃i1,f⦄ ≘ i2 & X = #i1. /2 width=3 by lifts_inv_lref2_aux/ qed-. -fact lifts_inv_gref2_aux: ∀f,X,Y. ⬆*[f] X ≘ Y → ∀l. Y = §l → X = §l. +fact lifts_inv_gref2_aux: ∀f,X,Y. ⇧*[f] X ≘ Y → ∀l. Y = §l → X = §l. #f #X #Y * -f -X -Y // [ #f #i1 #i2 #_ #x #H destruct | #f #p #I #V1 #V2 #T1 #T2 #_ #_ #x #H destruct @@ -187,12 +187,12 @@ fact lifts_inv_gref2_aux: ∀f,X,Y. ⬆*[f] X ≘ Y → ∀l. Y = §l → X = § qed-. (* Basic_2A1: includes: lift_inv_gref1 *) -lemma lifts_inv_gref2: ∀f,X,l. ⬆*[f] X ≘ §l → X = §l. +lemma lifts_inv_gref2: ∀f,X,l. ⇧*[f] X ≘ §l → X = §l. /2 width=4 by lifts_inv_gref2_aux/ qed-. -fact lifts_inv_bind2_aux: ∀f,X,Y. ⬆*[f] X ≘ Y → +fact lifts_inv_bind2_aux: ∀f,X,Y. ⇧*[f] X ≘ Y → ∀p,I,V2,T2. Y = ⓑ{p,I}V2.T2 → - ∃∃V1,T1. ⬆*[f] V1 ≘ V2 & ⬆*[⫯f] T1 ≘ T2 & + ∃∃V1,T1. ⇧*[f] V1 ≘ V2 & ⇧*[⫯f] T1 ≘ T2 & X = ⓑ{p,I}V1.T1. #f #X #Y * -f -X -Y [ #f #s #q #J #W2 #U2 #H destruct @@ -205,14 +205,14 @@ qed-. (* Basic_1: includes: lift_gen_bind *) (* Basic_2A1: includes: lift_inv_bind2 *) -lemma lifts_inv_bind2: ∀f,p,I,V2,T2,X. ⬆*[f] X ≘ ⓑ{p,I}V2.T2 → - ∃∃V1,T1. ⬆*[f] V1 ≘ V2 & ⬆*[⫯f] T1 ≘ T2 & +lemma lifts_inv_bind2: ∀f,p,I,V2,T2,X. ⇧*[f] X ≘ ⓑ{p,I}V2.T2 → + ∃∃V1,T1. ⇧*[f] V1 ≘ V2 & ⇧*[⫯f] T1 ≘ T2 & X = ⓑ{p,I}V1.T1. /2 width=3 by lifts_inv_bind2_aux/ qed-. -fact lifts_inv_flat2_aux: ∀f:rtmap. ∀X,Y. ⬆*[f] X ≘ Y → +fact lifts_inv_flat2_aux: ∀f:rtmap. ∀X,Y. ⇧*[f] X ≘ Y → ∀I,V2,T2. Y = ⓕ{I}V2.T2 → - ∃∃V1,T1. ⬆*[f] V1 ≘ V2 & ⬆*[f] T1 ≘ T2 & + ∃∃V1,T1. ⇧*[f] V1 ≘ V2 & ⇧*[f] T1 ≘ T2 & X = ⓕ{I}V1.T1. #f #X #Y * -f -X -Y [ #f #s #J #W2 #U2 #H destruct @@ -225,14 +225,14 @@ qed-. (* Basic_1: includes: lift_gen_flat *) (* Basic_2A1: includes: lift_inv_flat2 *) -lemma lifts_inv_flat2: ∀f:rtmap. ∀I,V2,T2,X. ⬆*[f] X ≘ ⓕ{I}V2.T2 → - ∃∃V1,T1. ⬆*[f] V1 ≘ V2 & ⬆*[f] T1 ≘ T2 & +lemma lifts_inv_flat2: ∀f:rtmap. ∀I,V2,T2,X. ⇧*[f] X ≘ ⓕ{I}V2.T2 → + ∃∃V1,T1. ⇧*[f] V1 ≘ V2 & ⇧*[f] T1 ≘ T2 & X = ⓕ{I}V1.T1. /2 width=3 by lifts_inv_flat2_aux/ qed-. (* Advanced inversion lemmas ************************************************) -lemma lifts_inv_atom1: ∀f,I,Y. ⬆*[f] ⓪{I} ≘ Y → +lemma lifts_inv_atom1: ∀f,I,Y. ⇧*[f] ⓪{I} ≘ Y → ∨∨ ∃∃s. I = Sort s & Y = ⋆s | ∃∃i,j. @⦃i,f⦄ ≘ j & I = LRef i & Y = #j | ∃∃l. I = GRef l & Y = §l. @@ -243,7 +243,7 @@ lemma lifts_inv_atom1: ∀f,I,Y. ⬆*[f] ⓪{I} ≘ Y → ] -H /3 width=5 by or3_intro0, or3_intro1, or3_intro2, ex3_2_intro, ex2_intro/ qed-. -lemma lifts_inv_atom2: ∀f,I,X. ⬆*[f] X ≘ ⓪{I} → +lemma lifts_inv_atom2: ∀f,I,X. ⇧*[f] X ≘ ⓪{I} → ∨∨ ∃∃s. X = ⋆s & I = Sort s | ∃∃i,j. @⦃i,f⦄ ≘ j & X = #i & I = LRef j | ∃∃l. X = §l & I = GRef l. @@ -255,7 +255,7 @@ lemma lifts_inv_atom2: ∀f,I,X. ⬆*[f] X ≘ ⓪{I} → qed-. (* Basic_2A1: includes: lift_inv_pair_xy_x *) -lemma lifts_inv_pair_xy_x: ∀f,I,V,T. ⬆*[f] ②{I}V.T ≘ V → ⊥. +lemma lifts_inv_pair_xy_x: ∀f,I,V,T. ⇧*[f] ②{I}V.T ≘ V → ⊥. #f #J #V elim V -V [ * #i #U #H [ lapply (lifts_inv_sort2 … H) -H #H destruct @@ -272,7 +272,7 @@ qed-. (* Basic_1: includes: thead_x_lift_y_y *) (* Basic_2A1: includes: lift_inv_pair_xy_y *) -lemma lifts_inv_pair_xy_y: ∀I,T,V,f. ⬆*[f] ②{I}V.T ≘ T → ⊥. +lemma lifts_inv_pair_xy_y: ∀I,T,V,f. ⇧*[f] ②{I}V.T ≘ T → ⊥. #J #T elim T -T [ * #i #W #f #H [ lapply (lifts_inv_sort2 … H) -H #H destruct @@ -289,22 +289,22 @@ qed-. (* Inversion lemmas with uniform relocations ********************************) -lemma lifts_inv_lref1_uni: ∀l,Y,i. ⬆*[l] #i ≘ Y → Y = #(l+i). +lemma lifts_inv_lref1_uni: ∀l,Y,i. ⇧*[l] #i ≘ Y → Y = #(l+i). #l #Y #i1 #H elim (lifts_inv_lref1 … H) -H /4 width=4 by at_mono, eq_f/ qed-. -lemma lifts_inv_lref2_uni: ∀l,X,i2. ⬆*[l] X ≘ #i2 → +lemma lifts_inv_lref2_uni: ∀l,X,i2. ⇧*[l] X ≘ #i2 → ∃∃i1. X = #i1 & i2 = l + i1. #l #X #i2 #H elim (lifts_inv_lref2 … H) -H /3 width=3 by at_inv_uni, ex2_intro/ qed-. -lemma lifts_inv_lref2_uni_ge: ∀l,X,i. ⬆*[l] X ≘ #(l + i) → X = #i. +lemma lifts_inv_lref2_uni_ge: ∀l,X,i. ⇧*[l] X ≘ #(l + i) → X = #i. #l #X #i2 #H elim (lifts_inv_lref2_uni … H) -H #i1 #H1 #H2 destruct /4 width=2 by injective_plus_r, eq_f, sym_eq/ qed-. -lemma lifts_inv_lref2_uni_lt: ∀l,X,i. ⬆*[l] X ≘ #i → i < l → ⊥. +lemma lifts_inv_lref2_uni_lt: ∀l,X,i. ⇧*[l] X ≘ #i → i < l → ⊥. #l #X #i2 #H elim (lifts_inv_lref2_uni … H) -H #i1 #_ #H1 #H2 destruct /2 width=4 by lt_le_false/ qed-. @@ -312,14 +312,14 @@ qed-. (* Basic forward lemmas *****************************************************) (* Basic_2A1: includes: lift_inv_O2 *) -lemma lifts_fwd_isid: ∀f,T1,T2. ⬆*[f] T1 ≘ T2 → 𝐈⦃f⦄ → T1 = T2. +lemma lifts_fwd_isid: ∀f,T1,T2. ⇧*[f] T1 ≘ T2 → 𝐈⦃f⦄ → T1 = T2. #f #T1 #T2 #H elim H -f -T1 -T2 /4 width=3 by isid_inv_at_mono, isid_push, eq_f2, eq_f/ qed-. (* Basic_2A1: includes: lift_fwd_pair1 *) -lemma lifts_fwd_pair1: ∀f:rtmap. ∀I,V1,T1,Y. ⬆*[f] ②{I}V1.T1 ≘ Y → - ∃∃V2,T2. ⬆*[f] V1 ≘ V2 & Y = ②{I}V2.T2. +lemma lifts_fwd_pair1: ∀f:rtmap. ∀I,V1,T1,Y. ⇧*[f] ②{I}V1.T1 ≘ Y → + ∃∃V2,T2. ⇧*[f] V1 ≘ V2 & Y = ②{I}V2.T2. #f * [ #p ] #I #V1 #T1 #Y #H [ elim (lifts_inv_bind1 … H) -H /2 width=4 by ex2_2_intro/ | elim (lifts_inv_flat1 … H) -H /2 width=4 by ex2_2_intro/ @@ -327,8 +327,8 @@ lemma lifts_fwd_pair1: ∀f:rtmap. ∀I,V1,T1,Y. ⬆*[f] ②{I}V1.T1 ≘ Y → qed-. (* Basic_2A1: includes: lift_fwd_pair2 *) -lemma lifts_fwd_pair2: ∀f:rtmap. ∀I,V2,T2,X. ⬆*[f] X ≘ ②{I}V2.T2 → - ∃∃V1,T1. ⬆*[f] V1 ≘ V2 & X = ②{I}V1.T1. +lemma lifts_fwd_pair2: ∀f:rtmap. ∀I,V2,T2,X. ⇧*[f] X ≘ ②{I}V2.T2 → + ∃∃V1,T1. ⇧*[f] V1 ≘ V2 & X = ②{I}V1.T1. #f * [ #p ] #I #V2 #T2 #X #H [ elim (lifts_inv_bind2 … H) -H /2 width=4 by ex2_2_intro/ | elim (lifts_inv_flat2 … H) -H /2 width=4 by ex2_2_intro/ @@ -347,24 +347,24 @@ lemma deliftable2_sn_dx (R): symmetric … R → deliftable2_sn R → deliftable elim (H1R … U1 … HTU2) -H1R /3 width=3 by ex2_intro/ qed-. -lemma lifts_eq_repl_back: ∀T1,T2. eq_repl_back … (λf. ⬆*[f] T1 ≘ T2). +lemma lifts_eq_repl_back: ∀T1,T2. eq_repl_back … (λf. ⇧*[f] T1 ≘ T2). #T1 #T2 #f1 #H elim H -T1 -T2 -f1 /4 width=5 by lifts_flat, lifts_bind, lifts_lref, at_eq_repl_back, eq_push/ qed-. -lemma lifts_eq_repl_fwd: ∀T1,T2. eq_repl_fwd … (λf. ⬆*[f] T1 ≘ T2). +lemma lifts_eq_repl_fwd: ∀T1,T2. eq_repl_fwd … (λf. ⇧*[f] T1 ≘ T2). #T1 #T2 @eq_repl_sym /2 width=3 by lifts_eq_repl_back/ (**) (* full auto fails *) qed-. (* Basic_1: includes: lift_r *) (* Basic_2A1: includes: lift_refl *) -lemma lifts_refl: ∀T,f. 𝐈⦃f⦄ → ⬆*[f] T ≘ T. +lemma lifts_refl: ∀T,f. 𝐈⦃f⦄ → ⇧*[f] T ≘ T. #T elim T -T * /4 width=3 by lifts_flat, lifts_bind, lifts_lref, isid_inv_at, isid_push/ qed. (* Basic_2A1: includes: lift_total *) -lemma lifts_total: ∀T1,f. ∃T2. ⬆*[f] T1 ≘ T2. +lemma lifts_total: ∀T1,f. ∃T2. ⇧*[f] T1 ≘ T2. #T1 elim T1 -T1 * /3 width=2 by lifts_lref, lifts_sort, lifts_gref, ex_intro/ [ #p ] #I #V1 #T1 #IHV1 #IHT1 #f @@ -374,24 +374,24 @@ elim (IHV1 f) -IHV1 #V2 #HV12 ] qed-. -lemma lifts_push_zero (f): ⬆*[⫯f]#0 ≘ #0. +lemma lifts_push_zero (f): ⇧*[⫯f]#0 ≘ #0. /2 width=1 by lifts_lref/ qed. -lemma lifts_push_lref (f) (i1) (i2): ⬆*[f]#i1 ≘ #i2 → ⬆*[⫯f]#(↑i1) ≘ #(↑i2). +lemma lifts_push_lref (f) (i1) (i2): ⇧*[f]#i1 ≘ #i2 → ⇧*[⫯f]#(↑i1) ≘ #(↑i2). #f1 #i1 #i2 #H elim (lifts_inv_lref1 … H) -H #j #Hij #H destruct /3 width=7 by lifts_lref, at_push/ qed. -lemma lifts_lref_uni: ∀l,i. ⬆*[l] #i ≘ #(l+i). +lemma lifts_lref_uni: ∀l,i. ⇧*[l] #i ≘ #(l+i). #l elim l -l /2 width=1 by lifts_lref/ qed. (* Basic_1: includes: lift_free (right to left) *) (* Basic_2A1: includes: lift_split *) -lemma lifts_split_trans: ∀f,T1,T2. ⬆*[f] T1 ≘ T2 → +lemma lifts_split_trans: ∀f,T1,T2. ⇧*[f] T1 ≘ T2 → ∀f1,f2. f2 ⊚ f1 ≘ f → - ∃∃T. ⬆*[f1] T1 ≘ T & ⬆*[f2] T ≘ T2. + ∃∃T. ⇧*[f1] T1 ≘ T & ⇧*[f2] T ≘ T2. #f #T1 #T2 #H elim H -f -T1 -T2 [ /3 width=3 by lifts_sort, ex2_intro/ | #f #i1 #i2 #Hi #f1 #f2 #Ht elim (after_at_fwd … Hi … Ht) -Hi -Ht @@ -407,9 +407,9 @@ lemma lifts_split_trans: ∀f,T1,T2. ⬆*[f] T1 ≘ T2 → qed-. (* Note: apparently, this was missing in Basic_2A1 *) -lemma lifts_split_div: ∀f1,T1,T2. ⬆*[f1] T1 ≘ T2 → +lemma lifts_split_div: ∀f1,T1,T2. ⇧*[f1] T1 ≘ T2 → ∀f2,f. f2 ⊚ f1 ≘ f → - ∃∃T. ⬆*[f2] T2 ≘ T & ⬆*[f] T1 ≘ T. + ∃∃T. ⇧*[f2] T2 ≘ T & ⇧*[f] T1 ≘ T. #f1 #T1 #T2 #H elim H -f1 -T1 -T2 [ /3 width=3 by lifts_sort, ex2_intro/ | #f1 #i1 #i2 #Hi #f2 #f #Ht elim (after_at1_fwd … Hi … Ht) -Hi -Ht @@ -426,7 +426,7 @@ qed-. (* Basic_1: includes: dnf_dec2 dnf_dec *) (* Basic_2A1: includes: is_lift_dec *) -lemma is_lifts_dec: ∀T2,f. Decidable (∃T1. ⬆*[f] T1 ≘ T2). +lemma is_lifts_dec: ∀T2,f. Decidable (∃T1. ⇧*[f] T1 ≘ T2). #T1 elim T1 -T1 [ * [1,3: /3 width=2 by lifts_sort, lifts_gref, ex_intro, or_introl/ ] #i2 #f elim (is_at_dec f i2) // @@ -460,7 +460,7 @@ qed-. (* Properties with uniform relocation ***************************************) -lemma lifts_uni: ∀n1,n2,T,U. ⬆*[𝐔❴n1❵∘𝐔❴n2❵] T ≘ U → ⬆*[n1+n2] T ≘ U. +lemma lifts_uni: ∀n1,n2,T,U. ⇧*[𝐔❴n1❵∘𝐔❴n2❵] T ≘ U → ⇧*[n1+n2] T ≘ U. /3 width=4 by lifts_eq_repl_back, after_inv_total/ qed. (* Basic_2A1: removed theorems 14: diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_basic.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_basic.ma index 6d2ca03d9..fa1b12d00 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_basic.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_basic.ma @@ -23,13 +23,13 @@ interpretation "basic relocation (term)" (* Properties with basic relocation *****************************************) -lemma lifts_lref_lt (m,n,i): i < m → ⬆[m,n] #i ≘ #i. +lemma lifts_lref_lt (m,n,i): i < m → ⇧[m,n] #i ≘ #i. /3 width=1 by lifts_lref, at_basic_lt/ qed. -lemma lifts_lref_ge (m,n,i): m ≤ i → ⬆[m,n] #i ≘ #(n+i). +lemma lifts_lref_ge (m,n,i): m ≤ i → ⇧[m,n] #i ≘ #(n+i). /3 width=1 by lifts_lref, at_basic_ge/ qed. -lemma lifts_lref_ge_minus (m,n,i): n+m ≤ i → ⬆[m,n] #(i-n) ≘ #i. +lemma lifts_lref_ge_minus (m,n,i): n+m ≤ i → ⇧[m,n] #(i-n) ≘ #i. #m #n #i #Hi >(plus_minus_m_m i n) in ⊢ (???%); /3 width=2 by lifts_lref_ge, le_plus_to_minus_l, le_plus_b/ diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_bind.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_bind.ma index 10630903b..d3f36a65e 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_bind.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_bind.ma @@ -28,37 +28,37 @@ interpretation "generic relocation (binder for local environments)" (* Basic_inversion lemmas **************************************************) -lemma liftsb_inv_unit_sn: ∀f,I,Z2. ⬆*[f] BUnit I ≘ Z2 → Z2 = BUnit I. +lemma liftsb_inv_unit_sn: ∀f,I,Z2. ⇧*[f] BUnit I ≘ Z2 → Z2 = BUnit I. /2 width=2 by ext2_inv_unit_sn/ qed-. -lemma liftsb_inv_pair_sn: ∀f:rtmap. ∀Z2,I,V1. ⬆*[f] BPair I V1 ≘ Z2 → - ∃∃V2. ⬆*[f] V1 ≘ V2 & Z2 = BPair I V2. +lemma liftsb_inv_pair_sn: ∀f:rtmap. ∀Z2,I,V1. ⇧*[f] BPair I V1 ≘ Z2 → + ∃∃V2. ⇧*[f] V1 ≘ V2 & Z2 = BPair I V2. /2 width=1 by ext2_inv_pair_sn/ qed-. -lemma liftsb_inv_unit_dx: ∀f,I,Z1. ⬆*[f] Z1 ≘ BUnit I → Z1 = BUnit I. +lemma liftsb_inv_unit_dx: ∀f,I,Z1. ⇧*[f] Z1 ≘ BUnit I → Z1 = BUnit I. /2 width=2 by ext2_inv_unit_dx/ qed-. -lemma liftsb_inv_pair_dx: ∀f:rtmap. ∀Z1,I,V2. ⬆*[f] Z1 ≘ BPair I V2 → - ∃∃V1. ⬆*[f] V1 ≘ V2 & Z1 = BPair I V1. +lemma liftsb_inv_pair_dx: ∀f:rtmap. ∀Z1,I,V2. ⇧*[f] Z1 ≘ BPair I V2 → + ∃∃V1. ⇧*[f] V1 ≘ V2 & Z1 = BPair I V1. /2 width=1 by ext2_inv_pair_dx/ qed-. (* Basic properties *********************************************************) -lemma liftsb_eq_repl_back: ∀I1,I2. eq_repl_back … (λf. ⬆*[f] I1 ≘ I2). +lemma liftsb_eq_repl_back: ∀I1,I2. eq_repl_back … (λf. ⇧*[f] I1 ≘ I2). #I1 #I2 #f1 * -I1 -I2 /3 width=3 by lifts_eq_repl_back, ext2_pair/ qed-. lemma liftsb_refl: ∀f. 𝐈⦃f⦄ → reflexive … (liftsb f). /3 width=1 by lifts_refl, ext2_refl/ qed. -lemma liftsb_total: ∀I1,f. ∃I2. ⬆*[f] I1 ≘ I2. +lemma liftsb_total: ∀I1,f. ∃I2. ⇧*[f] I1 ≘ I2. * [2: #I #T1 #f elim (lifts_total T1 f) ] /3 width=2 by ext2_unit, ext2_pair, ex_intro/ qed-. -lemma liftsb_split_trans: ∀f,I1,I2. ⬆*[f] I1 ≘ I2 → +lemma liftsb_split_trans: ∀f,I1,I2. ⇧*[f] I1 ≘ I2 → ∀f1,f2. f2 ⊚ f1 ≘ f → - ∃∃I. ⬆*[f1] I1 ≘ I & ⬆*[f2] I ≘ I2. + ∃∃I. ⇧*[f1] I1 ≘ I & ⇧*[f2] I ≘ I2. #f #I1 #I2 * -I1 -I2 /2 width=3 by ext2_unit, ex2_intro/ #I #V1 #V2 #HV12 #f1 #f2 #Hf elim (lifts_split_trans … HV12 … Hf) -f /3 width=3 by ext2_pair, ex2_intro/ @@ -66,6 +66,6 @@ qed-. (* Basic forward lemmas *****************************************************) -lemma liftsb_fwd_isid: ∀f,I1,I2. ⬆*[f] I1 ≘ I2 → 𝐈⦃f⦄ → I1 = I2. +lemma liftsb_fwd_isid: ∀f,I1,I2. ⇧*[f] I1 ≘ I2 → 𝐈⦃f⦄ → I1 = I2. #f #I1 #I2 * -I1 -I2 /3 width=3 by lifts_fwd_isid, eq_f2/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_lifts.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_lifts.ma index 0581f6d1c..e55582cb9 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_lifts.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_lifts.ma @@ -20,9 +20,9 @@ include "static_2/relocation/lifts.ma". (* Basic_1: includes: lift_gen_lift *) (* Basic_2A1: includes: lift_div_le lift_div_be *) -theorem lifts_div4: ∀f2,Tf,T. ⬆*[f2] Tf ≘ T → ∀g2,Tg. ⬆*[g2] Tg ≘ T → +theorem lifts_div4: ∀f2,Tf,T. ⇧*[f2] Tf ≘ T → ∀g2,Tg. ⇧*[g2] Tg ≘ T → ∀f1,g1. H_at_div f2 g2 f1 g1 → - ∃∃T0. ⬆*[f1] T0 ≘ Tf & ⬆*[g1] T0 ≘ Tg. + ∃∃T0. ⇧*[f1] T0 ≘ Tf & ⇧*[g1] T0 ≘ Tg. #f2 #Tf #T #H elim H -f2 -Tf -T [ #f2 #s #g2 #Tg #H #f1 #g1 #_ lapply (lifts_inv_sort2 … H) -H #H destruct @@ -46,13 +46,13 @@ theorem lifts_div4: ∀f2,Tf,T. ⬆*[f2] Tf ≘ T → ∀g2,Tg. ⬆*[g2] Tg ≘ ] qed-. -lemma lifts_div4_one: ∀f,Tf,T. ⬆*[⫯f] Tf ≘ T → - ∀T1. ⬆*[1] T1 ≘ T → - ∃∃T0. ⬆*[1] T0 ≘ Tf & ⬆*[f] T0 ≘ T1. +lemma lifts_div4_one: ∀f,Tf,T. ⇧*[⫯f] Tf ≘ T → + ∀T1. ⇧*[1] T1 ≘ T → + ∃∃T0. ⇧*[1] T0 ≘ Tf & ⇧*[f] T0 ≘ T1. /4 width=6 by lifts_div4, at_div_id_dx, at_div_pn/ qed-. -theorem lifts_div3: ∀f2,T,T2. ⬆*[f2] T2 ≘ T → ∀f,T1. ⬆*[f] T1 ≘ T → - ∀f1. f2 ⊚ f1 ≘ f → ⬆*[f1] T1 ≘ T2. +theorem lifts_div3: ∀f2,T,T2. ⇧*[f2] T2 ≘ T → ∀f,T1. ⇧*[f] T1 ≘ T → + ∀f1. f2 ⊚ f1 ≘ f → ⇧*[f1] T1 ≘ T2. #f2 #T #T2 #H elim H -f2 -T -T2 [ #f2 #s #f #T1 #H >(lifts_inv_sort2 … H) -T1 // | #f2 #i2 #i #Hi2 #f #T1 #H #f1 #Ht21 elim (lifts_inv_lref2 … H) -H @@ -70,8 +70,8 @@ qed-. (* Basic_1: was: lift1_lift1 (left to right) *) (* Basic_1: includes: lift_free (left to right) lift_d lift1_xhg (right to left) lift1_free (right to left) *) (* Basic_2A1: includes: lift_trans_be lift_trans_le lift_trans_ge lifts_lift_trans_le lifts_lift_trans *) -theorem lifts_trans: ∀f1,T1,T. ⬆*[f1] T1 ≘ T → ∀f2,T2. ⬆*[f2] T ≘ T2 → - ∀f. f2 ⊚ f1 ≘ f → ⬆*[f] T1 ≘ T2. +theorem lifts_trans: ∀f1,T1,T. ⇧*[f1] T1 ≘ T → ∀f2,T2. ⇧*[f2] T ≘ T2 → + ∀f. f2 ⊚ f1 ≘ f → ⇧*[f] T1 ≘ T2. #f1 #T1 #T #H elim H -f1 -T1 -T [ #f1 #s #f2 #T2 #H >(lifts_inv_sort1 … H) -T2 // | #f1 #i1 #i #Hi1 #f2 #T2 #H #f #Ht21 elim (lifts_inv_lref1 … H) -H @@ -87,13 +87,13 @@ theorem lifts_trans: ∀f1,T1,T. ⬆*[f1] T1 ≘ T → ∀f2,T2. ⬆*[f2] T ≘ qed-. lemma lifts_trans4_one (f) (T1) (T2): - ∀T. ⬆*[1]T1 ≘ T → ⬆*[⫯f]T ≘ T2 → - ∃∃T0. ⬆*[f]T1 ≘ T0 & ⬆*[1]T0 ≘ T2. + ∀T. ⇧*[1]T1 ≘ T → ⇧*[⫯f]T ≘ T2 → + ∃∃T0. ⇧*[f]T1 ≘ T0 & ⇧*[1]T0 ≘ T2. /4 width=6 by lifts_trans, lifts_split_trans, after_uni_one_dx/ qed-. (* Basic_2A1: includes: lift_conf_O1 lift_conf_be *) -theorem lifts_conf: ∀f1,T,T1. ⬆*[f1] T ≘ T1 → ∀f,T2. ⬆*[f] T ≘ T2 → - ∀f2. f2 ⊚ f1 ≘ f → ⬆*[f2] T1 ≘ T2. +theorem lifts_conf: ∀f1,T,T1. ⇧*[f1] T ≘ T1 → ∀f,T2. ⇧*[f] T ≘ T2 → + ∀f2. f2 ⊚ f1 ≘ f → ⇧*[f2] T1 ≘ T2. #f1 #T #T1 #H elim H -f1 -T -T1 [ #f1 #s #f #T2 #H >(lifts_inv_sort1 … H) -T2 // | #f1 #i #i1 #Hi1 #f #T2 #H #f2 #Ht21 elim (lifts_inv_lref1 … H) -H diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_lifts_bind.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_lifts_bind.ma index e08ce9962..39f9c2310 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_lifts_bind.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_lifts_bind.ma @@ -19,22 +19,22 @@ include "static_2/relocation/lifts_bind.ma". (* Main properties **********************************************************) -theorem liftsb_div3: ∀f2,I,I2. ⬆*[f2] I2 ≘ I → ∀f,I1. ⬆*[f] I1 ≘ I → - ∀f1. f2 ⊚ f1 ≘ f → ⬆*[f1] I1 ≘ I2. +theorem liftsb_div3: ∀f2,I,I2. ⇧*[f2] I2 ≘ I → ∀f,I1. ⇧*[f] I1 ≘ I → + ∀f1. f2 ⊚ f1 ≘ f → ⇧*[f1] I1 ≘ I2. #f2 #I #I2 * -I -I2 #I [2: #V #V2 #HV2 ] #f #I1 #H [ elim (liftsb_inv_pair_dx … H) | lapply (liftsb_inv_unit_dx … H) ] -H /3 width=6 by lifts_div3, ext2_pair, ext2_unit/ qed-. -theorem liftsb_trans: ∀f1,I1,I. ⬆*[f1] I1 ≘ I → ∀f2,I2. ⬆*[f2] I ≘ I2 → - ∀f. f2 ⊚ f1 ≘ f → ⬆*[f] I1 ≘ I2. +theorem liftsb_trans: ∀f1,I1,I. ⇧*[f1] I1 ≘ I → ∀f2,I2. ⇧*[f2] I ≘ I2 → + ∀f. f2 ⊚ f1 ≘ f → ⇧*[f] I1 ≘ I2. #f1 #I1 #I * -I1 -I #I1 [2: #V1 #V #HV1 ] #f2 #I2 #H [ elim (liftsb_inv_pair_sn … H) | lapply (liftsb_inv_unit_sn … H) ] -H /3 width=6 by lifts_trans, ext2_pair, ext2_unit/ qed-. -theorem liftsb_conf: ∀f1,I,I1. ⬆*[f1] I ≘ I1 → ∀f,I2. ⬆*[f] I ≘ I2 → - ∀f2. f2 ⊚ f1 ≘ f → ⬆*[f2] I1 ≘ I2. +theorem liftsb_conf: ∀f1,I,I1. ⇧*[f1] I ≘ I1 → ∀f,I2. ⇧*[f] I ≘ I2 → + ∀f2. f2 ⊚ f1 ≘ f → ⇧*[f2] I1 ≘ I2. #f1 #I #I1 * -I -I1 #I [2: #V #V1 #HV1 ] #f2 #I2 #H [ elim (liftsb_inv_pair_sn … H) | lapply (liftsb_inv_unit_sn … H) ] -H /3 width=6 by lifts_conf, ext2_pair, ext2_unit/ diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_lifts_vector.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_lifts_vector.ma index 033de1fb4..50eaa5c60 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_lifts_vector.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_lifts_vector.ma @@ -20,8 +20,8 @@ include "static_2/relocation/lifts_vector.ma". (* Main properties **********************************************************) (* Basic_1: includes: lifts_inj *) -theorem liftsv_inj: ∀f,T1s,Us. ⬆*[f] T1s ≘ Us → - ∀T2s. ⬆*[f] T2s ≘ Us → T1s = T2s. +theorem liftsv_inj: ∀f,T1s,Us. ⇧*[f] T1s ≘ Us → + ∀T2s. ⇧*[f] T2s ≘ Us → T1s = T2s. #f #T1s #Us #H elim H -T1s -Us [ #T2s #H >(liftsv_inv_nil2 … H) -H // | #T1s #Us #T1 #U #HT1U #_ #IHT1Us #X #H destruct @@ -31,8 +31,8 @@ theorem liftsv_inj: ∀f,T1s,Us. ⬆*[f] T1s ≘ Us → qed-. (* Basic_2A1: includes: liftv_mono *) -theorem liftsv_mono: ∀f,Ts,U1s. ⬆*[f] Ts ≘ U1s → - ∀U2s. ⬆*[f] Ts ≘ U2s → U1s = U2s. +theorem liftsv_mono: ∀f,Ts,U1s. ⇧*[f] Ts ≘ U1s → + ∀U2s. ⇧*[f] Ts ≘ U2s → U1s = U2s. #f #Ts #U1s #H elim H -Ts -U1s [ #U2s #H >(liftsv_inv_nil1 … H) -H // | #Ts #U1s #T #U1 #HTU1 #_ #IHTU1s #X #H destruct @@ -43,8 +43,8 @@ qed-. (* Basic_1: includes: lifts1_xhg (right to left) *) (* Basic_2A1: includes: liftsv_liftv_trans_le *) -theorem liftsv_trans: ∀f1,T1s,Ts. ⬆*[f1] T1s ≘ Ts → ∀T2s,f2. ⬆*[f2] Ts ≘ T2s → - ∀f. f2 ⊚ f1 ≘ f → ⬆*[f] T1s ≘ T2s. +theorem liftsv_trans: ∀f1,T1s,Ts. ⇧*[f1] T1s ≘ Ts → ∀T2s,f2. ⇧*[f2] Ts ≘ T2s → + ∀f. f2 ⊚ f1 ≘ f → ⇧*[f] T1s ≘ T2s. #f1 #T1s #Ts #H elim H -T1s -Ts [ #T2s #f2 #H >(liftsv_inv_nil1 … H) -T2s /2 width=3 by liftsv_nil/ | #T1s #Ts #T1 #T #HT1 #_ #IHT1s #X #f2 #H elim (liftsv_inv_cons1 … H) -H diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_simple.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_simple.ma index 115a0b473..4a01cd1ff 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_simple.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_simple.ma @@ -20,13 +20,13 @@ include "static_2/relocation/lifts.ma". (* Forward lemmas with simple terms *****************************************) (* Basic_2A1: includes: lift_simple_dx *) -lemma lifts_simple_dx: ∀f,T1,T2. ⬆*[f] T1 ≘ T2 → 𝐒⦃T1⦄ → 𝐒⦃T2⦄. +lemma lifts_simple_dx: ∀f,T1,T2. ⇧*[f] T1 ≘ T2 → 𝐒⦃T1⦄ → 𝐒⦃T2⦄. #f #T1 #T2 #H elim H -f -T1 -T2 // #f #p #I #V1 #V2 #T1 #T2 #_ #_ #_ #_ #H elim (simple_inv_bind … H) qed-. (* Basic_2A1: includes: lift_simple_sn *) -lemma lifts_simple_sn: ∀f,T1,T2. ⬆*[f] T1 ≘ T2 → 𝐒⦃T2⦄ → 𝐒⦃T1⦄. +lemma lifts_simple_sn: ∀f,T1,T2. ⇧*[f] T1 ≘ T2 → 𝐒⦃T2⦄ → 𝐒⦃T1⦄. #f #T1 #T2 #H elim H -f -T1 -T2 // #f #p #I #V1 #V2 #T1 #T2 #_ #_ #_ #_ #H elim (simple_inv_bind … H) qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_tdeq.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_tdeq.ma index c76781d11..3485e88cd 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_tdeq.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_tdeq.ma @@ -72,7 +72,7 @@ lemma tdeq_inv_lifts_bi: deliftable2_bi tdeq. /3 width=6 by tdeq_inv_lifts_sn, deliftable2_sn_bi/ qed-. lemma tdeq_lifts_inv_pair_sn (I) (f:rtmap): - ∀X,T. ⬆*[f]X ≘ T → ∀V. ②{I}V.T ≛ X → ⊥. + ∀X,T. ⇧*[f]X ≘ T → ∀V. ②{I}V.T ≛ X → ⊥. #I #f #X #T #H elim H -f -X -T [ #f #s #V #H elim (tdeq_inv_pair1 … H) -H #X1 #X2 #_ #_ #H destruct diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_tweq.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_tweq.ma index addd91c72..f314e2b81 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_tweq.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_tweq.ma @@ -97,7 +97,7 @@ lemma tweq_inv_lifts_bi: deliftable2_bi tweq. qed-. lemma tweq_inv_abbr_pos_x_lifts_y_y (T) (f:rtmap): - ∀V,U. +ⓓV.U ≅ T → ⬆*[f]T ≘ U → ⊥. + ∀V,U. +ⓓV.U ≅ T → ⇧*[f]T ≘ U → ⊥. @(f_ind … tw) #n #IH #T #Hn #f #V #U #H1 #H2 destruct elim (tweq_inv_abbr_pos_sn … H1) -H1 #X1 #X2 #HX2 #H destruct -V elim (lifts_inv_bind1 … H2) -H2 #Y1 #Y2 #_ #HXY2 #H destruct diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_vector.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_vector.ma index 4721eafe0..f424d38ea 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_vector.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_vector.ma @@ -21,7 +21,7 @@ include "static_2/relocation/lifts.ma". inductive liftsv (f:rtmap): relation (list term) ≝ | liftsv_nil : liftsv f (Ⓔ) (Ⓔ) | liftsv_cons: ∀T1s,T2s,T1,T2. - ⬆*[f] T1 ≘ T2 → liftsv f T1s T2s → + ⇧*[f] T1 ≘ T2 → liftsv f T1s T2s → liftsv f (T1 ⨮ T1s) (T2 ⨮ T2s) . @@ -33,18 +33,18 @@ interpretation "generic relocation (term vector)" (* Basic inversion lemmas ***************************************************) -fact liftsv_inv_nil1_aux: ∀f,X,Y. ⬆*[f] X ≘ Y → X = Ⓔ → Y = Ⓔ. +fact liftsv_inv_nil1_aux: ∀f,X,Y. ⇧*[f] X ≘ Y → X = Ⓔ → Y = Ⓔ. #f #X #Y * -X -Y // #T1s #T2s #T1 #T2 #_ #_ #H destruct qed-. (* Basic_2A1: includes: liftv_inv_nil1 *) -lemma liftsv_inv_nil1: ∀f,Y. ⬆*[f] Ⓔ ≘ Y → Y = Ⓔ. +lemma liftsv_inv_nil1: ∀f,Y. ⇧*[f] Ⓔ ≘ Y → Y = Ⓔ. /2 width=5 by liftsv_inv_nil1_aux/ qed-. -fact liftsv_inv_cons1_aux: ∀f:rtmap. ∀X,Y. ⬆*[f] X ≘ Y → +fact liftsv_inv_cons1_aux: ∀f:rtmap. ∀X,Y. ⇧*[f] X ≘ Y → ∀T1,T1s. X = T1 ⨮ T1s → - ∃∃T2,T2s. ⬆*[f] T1 ≘ T2 & ⬆*[f] T1s ≘ T2s & + ∃∃T2,T2s. ⇧*[f] T1 ≘ T2 & ⇧*[f] T1s ≘ T2s & Y = T2 ⨮ T2s. #f #X #Y * -X -Y [ #U1 #U1s #H destruct @@ -53,22 +53,22 @@ fact liftsv_inv_cons1_aux: ∀f:rtmap. ∀X,Y. ⬆*[f] X ≘ Y → qed-. (* Basic_2A1: includes: liftv_inv_cons1 *) -lemma liftsv_inv_cons1: ∀f:rtmap. ∀T1,T1s,Y. ⬆*[f] T1 ⨮ T1s ≘ Y → - ∃∃T2,T2s. ⬆*[f] T1 ≘ T2 & ⬆*[f] T1s ≘ T2s & +lemma liftsv_inv_cons1: ∀f:rtmap. ∀T1,T1s,Y. ⇧*[f] T1 ⨮ T1s ≘ Y → + ∃∃T2,T2s. ⇧*[f] T1 ≘ T2 & ⇧*[f] T1s ≘ T2s & Y = T2 ⨮ T2s. /2 width=3 by liftsv_inv_cons1_aux/ qed-. -fact liftsv_inv_nil2_aux: ∀f,X,Y. ⬆*[f] X ≘ Y → Y = Ⓔ → X = Ⓔ. +fact liftsv_inv_nil2_aux: ∀f,X,Y. ⇧*[f] X ≘ Y → Y = Ⓔ → X = Ⓔ. #f #X #Y * -X -Y // #T1s #T2s #T1 #T2 #_ #_ #H destruct qed-. -lemma liftsv_inv_nil2: ∀f,X. ⬆*[f] X ≘ Ⓔ → X = Ⓔ. +lemma liftsv_inv_nil2: ∀f,X. ⇧*[f] X ≘ Ⓔ → X = Ⓔ. /2 width=5 by liftsv_inv_nil2_aux/ qed-. -fact liftsv_inv_cons2_aux: ∀f:rtmap. ∀X,Y. ⬆*[f] X ≘ Y → +fact liftsv_inv_cons2_aux: ∀f:rtmap. ∀X,Y. ⇧*[f] X ≘ Y → ∀T2,T2s. Y = T2 ⨮ T2s → - ∃∃T1,T1s. ⬆*[f] T1 ≘ T2 & ⬆*[f] T1s ≘ T2s & + ∃∃T1,T1s. ⇧*[f] T1 ≘ T2 & ⇧*[f] T1s ≘ T2s & X = T1 ⨮ T1s. #f #X #Y * -X -Y [ #U2 #U2s #H destruct @@ -76,14 +76,14 @@ fact liftsv_inv_cons2_aux: ∀f:rtmap. ∀X,Y. ⬆*[f] X ≘ Y → ] qed-. -lemma liftsv_inv_cons2: ∀f:rtmap. ∀X,T2,T2s. ⬆*[f] X ≘ T2 ⨮ T2s → - ∃∃T1,T1s. ⬆*[f] T1 ≘ T2 & ⬆*[f] T1s ≘ T2s & +lemma liftsv_inv_cons2: ∀f:rtmap. ∀X,T2,T2s. ⇧*[f] X ≘ T2 ⨮ T2s → + ∃∃T1,T1s. ⇧*[f] T1 ≘ T2 & ⇧*[f] T1s ≘ T2s & X = T1 ⨮ T1s. /2 width=3 by liftsv_inv_cons2_aux/ qed-. (* Basic_1: was: lifts1_flat (left to right) *) -lemma lifts_inv_applv1: ∀f:rtmap. ∀V1s,U1,T2. ⬆*[f] Ⓐ V1s.U1 ≘ T2 → - ∃∃V2s,U2. ⬆*[f] V1s ≘ V2s & ⬆*[f] U1 ≘ U2 & +lemma lifts_inv_applv1: ∀f:rtmap. ∀V1s,U1,T2. ⇧*[f] Ⓐ V1s.U1 ≘ T2 → + ∃∃V2s,U2. ⇧*[f] V1s ≘ V2s & ⇧*[f] U1 ≘ U2 & T2 = Ⓐ V2s.U2. #f #V1s elim V1s -V1s [ /3 width=5 by ex3_2_intro, liftsv_nil/ @@ -93,8 +93,8 @@ lemma lifts_inv_applv1: ∀f:rtmap. ∀V1s,U1,T2. ⬆*[f] Ⓐ V1s.U1 ≘ T2 → ] qed-. -lemma lifts_inv_applv2: ∀f:rtmap. ∀V2s,U2,T1. ⬆*[f] T1 ≘ Ⓐ V2s.U2 → - ∃∃V1s,U1. ⬆*[f] V1s ≘ V2s & ⬆*[f] U1 ≘ U2 & +lemma lifts_inv_applv2: ∀f:rtmap. ∀V2s,U2,T1. ⇧*[f] T1 ≘ Ⓐ V2s.U2 → + ∃∃V1s,U1. ⇧*[f] V1s ≘ V2s & ⇧*[f] U1 ≘ U2 & T1 = Ⓐ V1s.U1. #f #V2s elim V2s -V2s [ /3 width=5 by ex3_2_intro, liftsv_nil/ @@ -107,7 +107,7 @@ qed-. (* Basic properties *********************************************************) (* Basic_2A1: includes: liftv_total *) -lemma liftsv_total: ∀f. ∀T1s:list term. ∃T2s. ⬆*[f] T1s ≘ T2s. +lemma liftsv_total: ∀f. ∀T1s:list term. ∃T2s. ⇧*[f] T1s ≘ T2s. #f #T1s elim T1s -T1s [ /2 width=2 by liftsv_nil, ex_intro/ | #T1 #T1s * #T2s #HT12s @@ -116,15 +116,15 @@ lemma liftsv_total: ∀f. ∀T1s:list term. ∃T2s. ⬆*[f] T1s ≘ T2s. qed-. (* Basic_1: was: lifts1_flat (right to left) *) -lemma lifts_applv: ∀f:rtmap. ∀V1s,V2s. ⬆*[f] V1s ≘ V2s → - ∀T1,T2. ⬆*[f] T1 ≘ T2 → - ⬆*[f] Ⓐ V1s.T1 ≘ Ⓐ V2s.T2. +lemma lifts_applv: ∀f:rtmap. ∀V1s,V2s. ⇧*[f] V1s ≘ V2s → + ∀T1,T2. ⇧*[f] T1 ≘ T2 → + ⇧*[f] Ⓐ V1s.T1 ≘ Ⓐ V2s.T2. #f #V1s #V2s #H elim H -V1s -V2s /3 width=1 by lifts_flat/ qed. -lemma liftsv_split_trans: ∀f,T1s,T2s. ⬆*[f] T1s ≘ T2s → +lemma liftsv_split_trans: ∀f,T1s,T2s. ⇧*[f] T1s ≘ T2s → ∀f1,f2. f2 ⊚ f1 ≘ f → - ∃∃Ts. ⬆*[f1] T1s ≘ Ts & ⬆*[f2] Ts ≘ T2s. + ∃∃Ts. ⇧*[f1] T1s ≘ Ts & ⇧*[f2] Ts ≘ T2s. #f #T1s #T2s #H elim H -T1s -T2s [ /2 width=3 by liftsv_nil, ex2_intro/ | #T1s #T2s #T1 #T2 #HT12 #_ #IH #f1 #f2 #Hf diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_weight.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_weight.ma index 358660fe2..e3830a0ac 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_weight.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_weight.ma @@ -20,6 +20,6 @@ include "static_2/relocation/lifts.ma". (* Forward lemmas with weight for terms *************************************) (* Basic_2A1: includes: lift_fwd_tw *) -lemma lifts_fwd_tw: ∀f,T1,T2. ⬆*[f] T1 ≘ T2 → ♯{T1} = ♯{T2}. +lemma lifts_fwd_tw: ∀f,T1,T2. ⇧*[f] T1 ≘ T2 → ♯{T1} = ♯{T2}. #f #T1 #T2 #H elim H -f -T1 -T2 normalize // qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_weight_bind.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_weight_bind.ma index 62135a027..3d1bef200 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_weight_bind.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_weight_bind.ma @@ -20,6 +20,6 @@ include "static_2/relocation/lifts_bind.ma". (* Forward lemmas with weight for binders ***********************************) -lemma liftsb_fwd_bw: ∀f,I1,I2. ⬆*[f] I1 ≘ I2 → ♯{I1} = ♯{I2}. +lemma liftsb_fwd_bw: ∀f,I1,I2. ⇧*[f] I1 ≘ I2 → ♯{I1} = ♯{I2}. #f #I1 #I2 * -I1 -I2 /2 width=2 by lifts_fwd_tw/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/sex_sex.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/sex_sex.ma index c1954b1a7..239966181 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/sex_sex.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/sex_sex.ma @@ -21,8 +21,8 @@ include "static_2/relocation/drops.ma". theorem sex_trans_gen (RN1) (RP1) (RN2) (RP2) (RN) (RP): ∀L1,f. - (∀g,I,K,n. ⬇*[n] L1 ≘ K.ⓘ{I} → ↑g = ⫱*[n] f → sex_transitive RN1 RN2 RN RN1 RP1 g K I) → - (∀g,I,K,n. ⬇*[n] L1 ≘ K.ⓘ{I} → ⫯g = ⫱*[n] f → sex_transitive RP1 RP2 RP RN1 RP1 g K I) → + (∀g,I,K,n. ⇩*[n] L1 ≘ K.ⓘ{I} → ↑g = ⫱*[n] f → sex_transitive RN1 RN2 RN RN1 RP1 g K I) → + (∀g,I,K,n. ⇩*[n] L1 ≘ K.ⓘ{I} → ⫯g = ⫱*[n] f → sex_transitive RP1 RP2 RP RN1 RP1 g K I) → ∀L0. L1 ⪤[RN1,RP1,f] L0 → ∀L2. L0 ⪤[RN2,RP2,f] L2 → L1 ⪤[RN,RP,f] L2. @@ -62,8 +62,8 @@ qed-. theorem sex_conf (RN1) (RP1) (RN2) (RP2): ∀L,f. - (∀g,I,K,n. ⬇*[n] L ≘ K.ⓘ{I} → ↑g = ⫱*[n] f → R_pw_confluent2_sex RN1 RN2 RN1 RP1 RN2 RP2 g K I) → - (∀g,I,K,n. ⬇*[n] L ≘ K.ⓘ{I} → ⫯g = ⫱*[n] f → R_pw_confluent2_sex RP1 RP2 RN1 RP1 RN2 RP2 g K I) → + (∀g,I,K,n. ⇩*[n] L ≘ K.ⓘ{I} → ↑g = ⫱*[n] f → R_pw_confluent2_sex RN1 RN2 RN1 RP1 RN2 RP2 g K I) → + (∀g,I,K,n. ⇩*[n] L ≘ K.ⓘ{I} → ⫯g = ⫱*[n] f → R_pw_confluent2_sex RP1 RP2 RN1 RP1 RN2 RP2 g K I) → pw_confluent2 … (sex RN1 RP1 f) (sex RN2 RP2 f) L. #RN1 #RP1 #RN2 #RP2 #L elim L -L [ #f #_ #_ #L1 #H1 #L2 #H2 >(sex_inv_atom1 … H1) >(sex_inv_atom1 … H2) -H2 -H1 diff --git a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup.ma b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup.ma index 28cfb9ce0..1f21d404e 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup.ma @@ -86,7 +86,7 @@ qed-. (* Advanced properties ******************************************************) lemma fqup_zeta (b) (p) (I) (G) (K) (V): - ∀T1,T2. ⬆*[1]T2 ≘ T1 → ⦃G,K,ⓑ{p,I}V.T1⦄ ⬂+[b] ⦃G,K,T2⦄. + ∀T1,T2. ⇧*[1]T2 ≘ T1 → ⦃G,K,ⓑ{p,I}V.T1⦄ ⬂+[b] ⦃G,K,T2⦄. * /4 width=5 by fqup_strap2, fqu_fqup, fqu_drop, fqu_clear, fqu_bind_dx/ qed. (* Basic_2A1: removed theorems 1: fqup_drop *) diff --git a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup_drops.ma b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup_drops.ma index c21d46c60..e72eced2e 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup_drops.ma @@ -19,7 +19,7 @@ include "static_2/s_computation/fqup.ma". (* Properties with generic slicing for local environments *******************) -lemma fqup_drops_succ: ∀b,G,K,T,i,L,U. ⬇*[↑i] L ≘ K → ⬆*[↑i] T ≘ U → +lemma fqup_drops_succ: ∀b,G,K,T,i,L,U. ⇩*[↑i] L ≘ K → ⇧*[↑i] T ≘ U → ⦃G,L,U⦄ ⬂+[b] ⦃G,K,T⦄. #b #G #K #T #i elim i -i [ #L #U #HLK #HTU elim (drops_inv_succ … HLK) -HLK @@ -32,7 +32,7 @@ lemma fqup_drops_succ: ∀b,G,K,T,i,L,U. ⬇*[↑i] L ≘ K → ⬆*[↑i] T ≘ ] qed. -lemma fqup_drops_strap1: ∀b,G1,G2,L1,K1,K2,T1,T2,U1,i. ⬇*[i] L1 ≘ K1 → ⬆*[i] T1 ≘ U1 → +lemma fqup_drops_strap1: ∀b,G1,G2,L1,K1,K2,T1,T2,U1,i. ⇩*[i] L1 ≘ K1 → ⇧*[i] T1 ≘ U1 → ⦃G1,K1,T1⦄ ⬂[b] ⦃G2,K2,T2⦄ → ⦃G1,L1,U1⦄ ⬂+[b] ⦃G2,K2,T2⦄. #b #G1 #G2 #L1 #K1 #K2 #T1 #T2 #U1 * [ #HLK1 #HTU1 #HT12 @@ -42,5 +42,5 @@ lemma fqup_drops_strap1: ∀b,G1,G2,L1,K1,K2,T1,T2,U1,i. ⬇*[i] L1 ≘ K1 → ] qed-. -lemma fqup_lref: ∀b,I,G,L,K,V,i. ⬇*[i] L ≘ K.ⓑ{I}V → ⦃G,L,#i⦄ ⬂+[b] ⦃G,K,V⦄. +lemma fqup_lref: ∀b,I,G,L,K,V,i. ⇩*[i] L ≘ K.ⓑ{I}V → ⦃G,L,#i⦄ ⬂+[b] ⦃G,K,V⦄. /2 width=6 by fqup_drops_strap1/ qed. diff --git a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus.ma b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus.ma index d1183daff..cafcd5933 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus.ma @@ -98,7 +98,7 @@ lemma fqus_inv_bind1: ∀b,p,I,G1,G2,L1,L2,V1,T1,T2. ⦃G1,L1,ⓑ{p,I}V1.T1⦄ | ⦃G1,L1,V1⦄ ⬂*[b] ⦃G2,L2,T2⦄ | ∧∧ ⦃G1,L1.ⓑ{I}V1,T1⦄ ⬂*[b] ⦃G2,L2,T2⦄ & b = Ⓣ | ∧∧ ⦃G1,L1.ⓧ,T1⦄ ⬂*[b] ⦃G2,L2,T2⦄ & b = Ⓕ - | ∃∃J,L,T. ⦃G1,L,T⦄ ⬂*[b] ⦃G2,L2,T2⦄ & ⬆*[1] T ≘ ⓑ{p,I}V1.T1 & L1 = L.ⓘ{J}. + | ∃∃J,L,T. ⦃G1,L,T⦄ ⬂*[b] ⦃G2,L2,T2⦄ & ⇧*[1] T ≘ ⓑ{p,I}V1.T1 & L1 = L.ⓘ{J}. #b #p #I #G1 #G2 #L1 #L2 #V1 #T1 #T2 #H elim (fqus_inv_fqu_sn … H) -H * /3 width=1 by and3_intro, or5_intro0/ #G #L #T #H elim (fqu_inv_bind1 … H) -H * [4: #J ] #H1 #H2 #H3 [3,4: #Hb ] #H destruct @@ -110,7 +110,7 @@ lemma fqus_inv_bind1_true: ∀p,I,G1,G2,L1,L2,V1,T1,T2. ⦃G1,L1,ⓑ{p,I}V1.T1 ∨∨ ∧∧ G1 = G2 & L1 = L2 & ⓑ{p,I}V1.T1 = T2 | ⦃G1,L1,V1⦄ ⬂* ⦃G2,L2,T2⦄ | ⦃G1,L1.ⓑ{I}V1,T1⦄ ⬂* ⦃G2,L2,T2⦄ - | ∃∃J,L,T. ⦃G1,L,T⦄ ⬂* ⦃G2,L2,T2⦄ & ⬆*[1] T ≘ ⓑ{p,I}V1.T1 & L1 = L.ⓘ{J}. + | ∃∃J,L,T. ⦃G1,L,T⦄ ⬂* ⦃G2,L2,T2⦄ & ⇧*[1] T ≘ ⓑ{p,I}V1.T1 & L1 = L.ⓘ{J}. #p #I #G1 #G2 #L1 #L2 #V1 #T1 #T2 #H elim (fqus_inv_bind1 … H) -H [1,3,4: * ] /3 width=1 by and3_intro, or4_intro0, or4_intro1, or4_intro2, or4_intro3/ #_ #H destruct @@ -120,7 +120,7 @@ lemma fqus_inv_flat1: ∀b,I,G1,G2,L1,L2,V1,T1,T2. ⦃G1,L1,ⓕ{I}V1.T1⦄ ⬂*[ ∨∨ ∧∧ G1 = G2 & L1 = L2 & ⓕ{I}V1.T1 = T2 | ⦃G1,L1,V1⦄ ⬂*[b] ⦃G2,L2,T2⦄ | ⦃G1,L1,T1⦄ ⬂*[b] ⦃G2,L2,T2⦄ - | ∃∃J,L,T. ⦃G1,L,T⦄ ⬂*[b] ⦃G2,L2,T2⦄ & ⬆*[1] T ≘ ⓕ{I}V1.T1 & L1 = L.ⓘ{J}. + | ∃∃J,L,T. ⦃G1,L,T⦄ ⬂*[b] ⦃G2,L2,T2⦄ & ⇧*[1] T ≘ ⓕ{I}V1.T1 & L1 = L.ⓘ{J}. #b #I #G1 #G2 #L1 #L2 #V1 #T1 #T2 #H elim (fqus_inv_fqu_sn … H) -H * /3 width=1 by and3_intro, or4_intro0/ #G #L #T #H elim (fqu_inv_flat1 … H) -H * [3: #J ] #H1 #H2 #H3 #H destruct diff --git a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus_drops.ma b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus_drops.ma index 24ba92a09..688995d1c 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus_drops.ma @@ -19,7 +19,7 @@ include "static_2/s_computation/fqus_fqup.ma". (* Properties with generic slicing for local environments *******************) -lemma fqus_drops: ∀b,G,L,K,T,U,i. ⬇*[i] L ≘ K → ⬆*[i] T ≘ U → +lemma fqus_drops: ∀b,G,L,K,T,U,i. ⇩*[i] L ≘ K → ⇧*[i] T ≘ U → ⦃G,L,U⦄ ⬂*[b] ⦃G,K,T⦄. #b #G #L #K #T #U * /3 width=3 by fqup_drops_succ, fqup_fqus/ #HLK #HTU <(lifts_fwd_isid … HTU) -U // <(drops_fwd_isid … HLK) -K // diff --git a/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu.ma b/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu.ma index 19dd4d45d..8fa1c357e 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu.ma @@ -31,7 +31,7 @@ inductive fqu (b:bool): tri_relation genv lenv term ≝ | fqu_bind_dx: ∀p,I,G,L,V,T. b = Ⓣ → fqu b G L (ⓑ{p,I}V.T) G (L.ⓑ{I}V) T | fqu_clear : ∀p,I,G,L,V,T. b = Ⓕ → fqu b G L (ⓑ{p,I}V.T) G (L.ⓧ) T | fqu_flat_dx: ∀I,G,L,V,T. fqu b G L (ⓕ{I}V.T) G L T -| fqu_drop : ∀I,G,L,T,U. ⬆*[1] T ≘ U → fqu b G (L.ⓘ{I}) U G L T +| fqu_drop : ∀I,G,L,T,U. ⇧*[1] T ≘ U → fqu b G (L.ⓘ{I}) U G L T . interpretation @@ -116,7 +116,7 @@ fact fqu_inv_bind1_aux: ∀b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂[b] ⦃G2,L2,T ∨∨ ∧∧ G1 = G2 & L1 = L2 & V1 = T2 | ∧∧ G1 = G2 & L1.ⓑ{I}V1 = L2 & U1 = T2 & b = Ⓣ | ∧∧ G1 = G2 & L1.ⓧ = L2 & U1 = T2 & b = Ⓕ - | ∃∃J. G1 = G2 & L1 = L2.ⓘ{J} & ⬆*[1] T2 ≘ ⓑ{p,I}V1.U1. + | ∃∃J. G1 = G2 & L1 = L2.ⓘ{J} & ⇧*[1] T2 ≘ ⓑ{p,I}V1.U1. #b #G1 #G2 #L1 #L2 #T1 #T2 * -G1 -G2 -L1 -L2 -T1 -T2 [ #I #G #L #T #q #J #V0 #U0 #H destruct | #I #G #L #V #T #q #J #V0 #U0 #H destruct /3 width=1 by and3_intro, or4_intro0/ @@ -131,13 +131,13 @@ lemma fqu_inv_bind1: ∀b,p,I,G1,G2,L1,L2,V1,U1,T2. ⦃G1,L1,ⓑ{p,I}V1.U1⦄ ∨∨ ∧∧ G1 = G2 & L1 = L2 & V1 = T2 | ∧∧ G1 = G2 & L1.ⓑ{I}V1 = L2 & U1 = T2 & b = Ⓣ | ∧∧ G1 = G2 & L1.ⓧ = L2 & U1 = T2 & b = Ⓕ - | ∃∃J. G1 = G2 & L1 = L2.ⓘ{J} & ⬆*[1] T2 ≘ ⓑ{p,I}V1.U1. + | ∃∃J. G1 = G2 & L1 = L2.ⓘ{J} & ⇧*[1] T2 ≘ ⓑ{p,I}V1.U1. /2 width=4 by fqu_inv_bind1_aux/ qed-. lemma fqu_inv_bind1_true: ∀p,I,G1,G2,L1,L2,V1,U1,T2. ⦃G1,L1,ⓑ{p,I}V1.U1⦄ ⬂ ⦃G2,L2,T2⦄ → ∨∨ ∧∧ G1 = G2 & L1 = L2 & V1 = T2 | ∧∧ G1 = G2 & L1.ⓑ{I}V1 = L2 & U1 = T2 - | ∃∃J. G1 = G2 & L1 = L2.ⓘ{J} & ⬆*[1] T2 ≘ ⓑ{p,I}V1.U1. + | ∃∃J. G1 = G2 & L1 = L2.ⓘ{J} & ⇧*[1] T2 ≘ ⓑ{p,I}V1.U1. #p #I #G1 #G2 #L1 #L2 #V1 #U1 #T2 #H elim (fqu_inv_bind1 … H) -H /3 width=1 by or3_intro0, or3_intro2/ * #HG #HL #HU #H destruct @@ -148,7 +148,7 @@ fact fqu_inv_flat1_aux: ∀b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂[b] ⦃G2,L2,T ∀I,V1,U1. T1 = ⓕ{I}V1.U1 → ∨∨ ∧∧ G1 = G2 & L1 = L2 & V1 = T2 | ∧∧ G1 = G2 & L1 = L2 & U1 = T2 - | ∃∃J. G1 = G2 & L1 = L2.ⓘ{J} & ⬆*[1] T2 ≘ ⓕ{I}V1.U1. + | ∃∃J. G1 = G2 & L1 = L2.ⓘ{J} & ⇧*[1] T2 ≘ ⓕ{I}V1.U1. #b #G1 #G2 #L1 #L2 #T1 #T2 * -G1 -G2 -L1 -L2 -T1 -T2 [ #I #G #L #T #J #V0 #U0 #H destruct | #I #G #L #V #T #J #V0 #U0 #H destruct /3 width=1 by and3_intro, or3_intro0/ @@ -162,7 +162,7 @@ qed-. lemma fqu_inv_flat1: ∀b,I,G1,G2,L1,L2,V1,U1,T2. ⦃G1,L1,ⓕ{I}V1.U1⦄ ⬂[b] ⦃G2,L2,T2⦄ → ∨∨ ∧∧ G1 = G2 & L1 = L2 & V1 = T2 | ∧∧ G1 = G2 & L1 = L2 & U1 = T2 - | ∃∃J. G1 = G2 & L1 = L2.ⓘ{J} & ⬆*[1] T2 ≘ ⓕ{I}V1.U1. + | ∃∃J. G1 = G2 & L1 = L2.ⓘ{J} & ⇧*[1] T2 ≘ ⓕ{I}V1.U1. /2 width=4 by fqu_inv_flat1_aux/ qed-. (* Advanced inversion lemmas ************************************************) diff --git a/matita/matita/contribs/lambdadelta/static_2/static/aaa_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/aaa_drops.ma index b04f0c05f..071e04475 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/aaa_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/aaa_drops.ma @@ -22,7 +22,7 @@ include "static_2/static/aaa.ma". (* Advanced properties ******************************************************) (* Basic_2A1: was: aaa_lref *) -lemma aaa_lref_drops: ∀I,G,K,V,B,i,L. ⬇*[i] L ≘ K.ⓑ{I}V → ⦃G,K⦄ ⊢ V ⁝ B → ⦃G,L⦄ ⊢ #i ⁝ B. +lemma aaa_lref_drops: ∀I,G,K,V,B,i,L. ⇩*[i] L ≘ K.ⓑ{I}V → ⦃G,K⦄ ⊢ V ⁝ B → ⦃G,L⦄ ⊢ #i ⁝ B. #I #G #K #V #B #i elim i -i [ #L #H lapply (drops_fwd_isid … H ?) -H // #H destruct /2 width=1 by aaa_zero/ @@ -35,7 +35,7 @@ qed. (* Basic_2A1: was: aaa_inv_lref *) lemma aaa_inv_lref_drops: ∀G,A,i,L. ⦃G,L⦄ ⊢ #i ⁝ A → - ∃∃I,K,V. ⬇*[i] L ≘ K.ⓑ{I}V & ⦃G,K⦄ ⊢ V ⁝ A. + ∃∃I,K,V. ⇩*[i] L ≘ K.ⓑ{I}V & ⦃G,K⦄ ⊢ V ⁝ A. #G #A #i elim i -i [ #L #H elim (aaa_inv_zero … H) -H /3 width=5 by drops_refl, ex2_3_intro/ | #i #IH #L #H elim (aaa_inv_lref … H) -H @@ -44,7 +44,7 @@ lemma aaa_inv_lref_drops: ∀G,A,i,L. ⦃G,L⦄ ⊢ #i ⁝ A → qed-. lemma aaa_pair_inv_lref (G) (L) (i): - ∀A. ⦃G,L⦄ ⊢ #i ⁝ A → ∀I,K,V. ⬇*[i] L ≘ K.ⓑ{I}V → ⦃G,K⦄ ⊢ V ⁝ A. + ∀A. ⦃G,L⦄ ⊢ #i ⁝ A → ∀I,K,V. ⇩*[i] L ≘ K.ⓑ{I}V → ⦃G,K⦄ ⊢ V ⁝ A. #G #L #i #A #H #I #K #V #HLK elim (aaa_inv_lref_drops … H) -H #J #Y #X #HLY #HX lapply (drops_mono … HLY … HLK) -L -i #H destruct // @@ -54,8 +54,8 @@ qed-. (* Basic_2A1: includes: aaa_lift *) (* Note: it should use drops_split_trans_pair2 *) -lemma aaa_lifts: ∀G,L1,T1,A. ⦃G,L1⦄ ⊢ T1 ⁝ A → ∀b,f,L2. ⬇*[b,f] L2 ≘ L1 → - ∀T2. ⬆*[f] T1 ≘ T2 → ⦃G,L2⦄ ⊢ T2 ⁝ A. +lemma aaa_lifts: ∀G,L1,T1,A. ⦃G,L1⦄ ⊢ T1 ⁝ A → ∀b,f,L2. ⇩*[b,f] L2 ≘ L1 → + ∀T2. ⇧*[f] T1 ≘ T2 → ⦃G,L2⦄ ⊢ T2 ⁝ A. @(fqup_wf_ind_eq (Ⓣ)) #G0 #L0 #T0 #IH #G #L1 * * [ #s #HG #HL #HT #A #H #b #f #L2 #HL21 #X #HX -b -IH lapply (aaa_inv_sort … H) -H #H destruct @@ -93,8 +93,8 @@ qed-. (* Inversion lemmas with generic slicing for local environments *************) (* Basic_2A1: includes: aaa_inv_lift *) -lemma aaa_inv_lifts: ∀G,L2,T2,A. ⦃G,L2⦄ ⊢ T2 ⁝ A → ∀b,f,L1. ⬇*[b,f] L2 ≘ L1 → - ∀T1. ⬆*[f] T1 ≘ T2 → ⦃G,L1⦄ ⊢ T1 ⁝ A. +lemma aaa_inv_lifts: ∀G,L2,T2,A. ⦃G,L2⦄ ⊢ T2 ⁝ A → ∀b,f,L1. ⇩*[b,f] L2 ≘ L1 → + ∀T1. ⇧*[f] T1 ≘ T2 → ⦃G,L1⦄ ⊢ T1 ⁝ A. @(fqup_wf_ind_eq (Ⓣ)) #G0 #L0 #T0 #IH #G #L2 * * [ #s #HG #HL #HT #A #H #b #f #L1 #HL21 #X #HX -b -IH lapply (aaa_inv_sort … H) -H #H destruct diff --git a/matita/matita/contribs/lambdadelta/static_2/static/frees_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/frees_drops.ma index d936eda81..5cbeaea87 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/frees_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/frees_drops.ma @@ -21,7 +21,7 @@ include "static_2/static/frees_fqup.ma". (* Advanced properties ******************************************************) lemma frees_atom_drops: - ∀b,L,i. ⬇*[b,𝐔❴i❵] L ≘ ⋆ → + ∀b,L,i. ⇩*[b,𝐔❴i❵] L ≘ ⋆ → ∀f. 𝐈⦃f⦄ → L ⊢ 𝐅+⦃#i⦄ ≘ ⫯*[i]↑f. #b #L elim L -L /2 width=1 by frees_atom/ #L #I #IH * @@ -32,7 +32,7 @@ qed. lemma frees_pair_drops: ∀f,K,V. K ⊢ 𝐅+⦃V⦄ ≘ f → - ∀i,I,L. ⬇*[i] L ≘ K.ⓑ{I}V → L ⊢ 𝐅+⦃#i⦄ ≘ ⫯*[i] ↑f. + ∀i,I,L. ⇩*[i] L ≘ K.ⓑ{I}V → L ⊢ 𝐅+⦃#i⦄ ≘ ⫯*[i] ↑f. #f #K #V #Hf #i elim i -i [ #I #L #H lapply (drops_fwd_isid … H ?) -H /2 width=1 by frees_pair/ | #i #IH #I #L #H elim (drops_inv_succ … H) -H /3 width=2 by frees_lref/ @@ -40,7 +40,7 @@ lemma frees_pair_drops: qed. lemma frees_unit_drops: - ∀f. 𝐈⦃f⦄ → ∀I,K,i,L. ⬇*[i] L ≘ K.ⓤ{I} → + ∀f. 𝐈⦃f⦄ → ∀I,K,i,L. ⇩*[i] L ≘ K.ⓤ{I} → L ⊢ 𝐅+⦃#i⦄ ≘ ⫯*[i] ↑f. #f #Hf #I #K #i elim i -i [ #L #H lapply (drops_fwd_isid … H ?) -H /2 width=1 by frees_unit/ @@ -51,7 +51,7 @@ qed. (* lemma frees_sort_pushs: ∀f,K,s. K ⊢ 𝐅+⦃⋆s⦄ ≘ f → - ∀i,L. ⬇*[i] L ≘ K → L ⊢ 𝐅+⦃⋆s⦄ ≘ ⫯*[i] f. + ∀i,L. ⇩*[i] L ≘ K → L ⊢ 𝐅+⦃⋆s⦄ ≘ ⫯*[i] f. #f #K #s #Hf #i elim i -i [ #L #H lapply (drops_fwd_isid … H ?) -H // | #i #IH #L #H elim (drops_inv_succ … H) -H /3 width=1 by frees_sort/ @@ -60,7 +60,7 @@ qed. *) lemma frees_lref_pushs: ∀f,K,j. K ⊢ 𝐅+⦃#j⦄ ≘ f → - ∀i,L. ⬇*[i] L ≘ K → L ⊢ 𝐅+⦃#(i+j)⦄ ≘ ⫯*[i] f. + ∀i,L. ⇩*[i] L ≘ K → L ⊢ 𝐅+⦃#(i+j)⦄ ≘ ⫯*[i] f. #f #K #j #Hf #i elim i -i [ #L #H lapply (drops_fwd_isid … H ?) -H // | #i #IH #L #H elim (drops_inv_succ … H) -H @@ -70,7 +70,7 @@ qed. (* lemma frees_gref_pushs: ∀f,K,l. K ⊢ 𝐅+⦃§l⦄ ≘ f → - ∀i,L. ⬇*[i] L ≘ K → L ⊢ 𝐅+⦃§l⦄ ≘ ⫯*[i] f. + ∀i,L. ⇩*[i] L ≘ K → L ⊢ 𝐅+⦃§l⦄ ≘ ⫯*[i] f. #f #K #l #Hf #i elim i -i [ #L #H lapply (drops_fwd_isid … H ?) -H // | #i #IH #L #H elim (drops_inv_succ … H) -H /3 width=1 by frees_gref/ @@ -81,9 +81,9 @@ qed. lemma frees_inv_lref_drops: ∀L,i,f. L ⊢ 𝐅+⦃#i⦄ ≘ f → - ∨∨ ∃∃g. ⬇*[Ⓕ,𝐔❴i❵] L ≘ ⋆ & 𝐈⦃g⦄ & f = ⫯*[i] ↑g - | ∃∃g,I,K,V. K ⊢ 𝐅+⦃V⦄ ≘ g & ⬇*[i] L ≘ K.ⓑ{I}V & f = ⫯*[i] ↑g - | ∃∃g,I,K. ⬇*[i] L ≘ K.ⓤ{I} & 𝐈⦃g⦄ & f = ⫯*[i] ↑g. + ∨∨ ∃∃g. ⇩*[Ⓕ,𝐔❴i❵] L ≘ ⋆ & 𝐈⦃g⦄ & f = ⫯*[i] ↑g + | ∃∃g,I,K,V. K ⊢ 𝐅+⦃V⦄ ≘ g & ⇩*[i] L ≘ K.ⓑ{I}V & f = ⫯*[i] ↑g + | ∃∃g,I,K. ⇩*[i] L ≘ K.ⓤ{I} & 𝐈⦃g⦄ & f = ⫯*[i] ↑g. #L elim L -L [ #i #g | #L #I #IH * [ #g cases I -I [ #I | #I #V ] -IH | #i #g ] ] #H [ elim (frees_inv_atom … H) -H #f #Hf #H destruct @@ -105,7 +105,7 @@ qed-. lemma frees_lifts: ∀b,f1,K,T. K ⊢ 𝐅+⦃T⦄ ≘ f1 → - ∀f,L. ⬇*[b,f] L ≘ K → ∀U. ⬆*[f] T ≘ U → + ∀f,L. ⇩*[b,f] L ≘ K → ∀U. ⇧*[f] T ≘ U → ∀f2. f ~⊚ f1 ≘ f2 → L ⊢ 𝐅+⦃U⦄ ≘ f2. #b #f1 #K #T #H lapply (frees_fwd_isfin … H) elim H -f1 -K -T [ #f1 #K #s #Hf1 #_ #f #L #HLK #U #H2 #f2 #H3 @@ -162,7 +162,7 @@ lemma frees_lifts: qed-. lemma frees_lifts_SO: - ∀b,L,K. ⬇*[b,𝐔❴1❵] L ≘ K → ∀T,U. ⬆*[1] T ≘ U → + ∀b,L,K. ⇩*[b,𝐔❴1❵] L ≘ K → ∀T,U. ⇧*[1] T ≘ U → ∀f. K ⊢ 𝐅+⦃T⦄ ≘ f → L ⊢ 𝐅+⦃U⦄ ≘ ⫯f. #b #L #K #HLK #T #U #HTU #f #Hf @(frees_lifts b … Hf … HTU) // (**) (* auto fails *) @@ -172,7 +172,7 @@ qed. lemma frees_fwd_coafter: ∀b,f2,L,U. L ⊢ 𝐅+⦃U⦄ ≘ f2 → - ∀f,K. ⬇*[b,f] L ≘ K → ∀T. ⬆*[f] T ≘ U → + ∀f,K. ⇩*[b,f] L ≘ K → ∀T. ⇧*[f] T ≘ U → ∀f1. K ⊢ 𝐅+⦃T⦄ ≘ f1 → f ~⊚ f1 ≘ f2. /4 width=11 by frees_lifts, frees_mono, coafter_eq_repl_back0/ qed-. @@ -180,7 +180,7 @@ lemma frees_fwd_coafter: lemma frees_inv_lifts_ex: ∀b,f2,L,U. L ⊢ 𝐅+⦃U⦄ ≘ f2 → - ∀f,K. ⬇*[b,f] L ≘ K → ∀T. ⬆*[f] T ≘ U → + ∀f,K. ⇩*[b,f] L ≘ K → ∀T. ⇧*[f] T ≘ U → ∃∃f1. f ~⊚ f1 ≘ f2 & K ⊢ 𝐅+⦃T⦄ ≘ f1. #b #f2 #L #U #Hf2 #f #K #HLK #T elim (frees_total K T) /3 width=9 by frees_fwd_coafter, ex2_intro/ @@ -188,7 +188,7 @@ qed-. lemma frees_inv_lifts_SO: ∀b,f,L,U. L ⊢ 𝐅+⦃U⦄ ≘ f → - ∀K. ⬇*[b,𝐔❴1❵] L ≘ K → ∀T. ⬆*[1] T ≘ U → + ∀K. ⇩*[b,𝐔❴1❵] L ≘ K → ∀T. ⇧*[1] T ≘ U → K ⊢ 𝐅+⦃T⦄ ≘ ⫱f. #b #f #L #U #H #K #HLK #T #HTU elim(frees_inv_lifts_ex … H … HLK … HTU) -b -L -U #f1 #Hf #Hf1 elim (coafter_inv_nxx … Hf) -Hf @@ -197,7 +197,7 @@ qed-. lemma frees_inv_lifts: ∀b,f2,L,U. L ⊢ 𝐅+⦃U⦄ ≘ f2 → - ∀f,K. ⬇*[b,f] L ≘ K → ∀T. ⬆*[f] T ≘ U → + ∀f,K. ⇩*[b,f] L ≘ K → ∀T. ⇧*[f] T ≘ U → ∀f1. f ~⊚ f1 ≘ f2 → K ⊢ 𝐅+⦃T⦄ ≘ f1. #b #f2 #L #U #H #f #K #HLK #T #HTU #f1 #Hf2 elim (frees_inv_lifts_ex … H … HLK … HTU) -b -L -U /3 width=7 by frees_eq_repl_back, coafter_inj/ @@ -206,7 +206,7 @@ qed-. (* Note: this is used by rex_conf and might be modified *) lemma frees_inv_drops_next: ∀f1,L1,T1. L1 ⊢ 𝐅+⦃T1⦄ ≘ f1 → - ∀I2,L2,V2,n. ⬇*[n] L1 ≘ L2.ⓑ{I2}V2 → + ∀I2,L2,V2,n. ⇩*[n] L1 ≘ L2.ⓑ{I2}V2 → ∀g1. ↑g1 = ⫱*[n] f1 → ∃∃g2. L2 ⊢ 𝐅+⦃V2⦄ ≘ g2 & g2 ⊆ g1. #f1 #L1 #T1 #H elim H -f1 -L1 -T1 diff --git a/matita/matita/contribs/lambdadelta/static_2/static/fsle_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/fsle_drops.ma index 1eee58094..80552d26a 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/fsle_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/fsle_drops.ma @@ -19,7 +19,7 @@ include "static_2/static/fsle_length.ma". (* Advanced properties ******************************************************) -lemma fsle_lifts_sn: ∀T1,U1. ⬆*[1] T1 ≘ U1 → ∀L1,L2. |L2| ≤ |L1| → +lemma fsle_lifts_sn: ∀T1,U1. ⇧*[1] T1 ≘ U1 → ∀L1,L2. |L2| ≤ |L1| → ∀T2. ⦃L1,T1⦄ ⊆ ⦃L2,T2⦄ → ⦃L1.ⓧ,U1⦄ ⊆ ⦃L2,T2⦄. #T1 #U1 #HTU1 #L1 #L2 #H1L #T2 * #n #m #f #g #Hf #Hg #H2L #Hfg @@ -30,7 +30,7 @@ lapply (frees_lifts_SO (Ⓣ) (L1.ⓧ) … HTU1 … Hf) qed-. lemma fsle_lifts_dx (L1) (L2): - |L1| ≤ |L2| → ∀T2,U2. ⬆*[1]T2 ≘ U2 → + |L1| ≤ |L2| → ∀T2,U2. ⇧*[1]T2 ≘ U2 → ∀T1. ⦃L1,T1⦄ ⊆ ⦃L2,T2⦄ → ⦃L1,T1⦄ ⊆ ⦃L2.ⓧ,U2⦄. #L1 #L2 #HL21 #T2 #U2 #HTU2 #T1 * #n #m #f #g #Hf #Hg #H2L #Hfg @@ -41,7 +41,7 @@ lapply (frees_lifts_SO (Ⓣ) (L2.ⓧ) … HTU2 … Hg) qed-. lemma fsle_lifts_SO_sn: ∀K1,K2. |K1| = |K2| → ∀V1,V2. ⦃K1,V1⦄ ⊆ ⦃K2,V2⦄ → - ∀W1. ⬆*[1] V1 ≘ W1 → ∀I1,I2. ⦃K1.ⓘ{I1},W1⦄ ⊆ ⦃K2.ⓑ{I2}V2,#O⦄. + ∀W1. ⇧*[1] V1 ≘ W1 → ∀I1,I2. ⦃K1.ⓘ{I1},W1⦄ ⊆ ⦃K2.ⓑ{I2}V2,#O⦄. #K1 #K2 #HK #V1 #V2 * #n1 #n2 #f1 #f2 #Hf1 #Hf2 #HK12 #Hf12 #W1 #HVW1 #I1 #I2 @@ -50,7 +50,7 @@ elim (lveq_inj_length … HK12) // -HK #H1 #H2 destruct qed. lemma fsle_lifts_SO: ∀K1,K2. |K1| = |K2| → ∀T1,T2. ⦃K1,T1⦄ ⊆ ⦃K2,T2⦄ → - ∀U1,U2. ⬆*[1] T1 ≘ U1 → ⬆*[1] T2 ≘ U2 → + ∀U1,U2. ⇧*[1] T1 ≘ U1 → ⇧*[1] T2 ≘ U2 → ∀I1,I2. ⦃K1.ⓘ{I1},U1⦄ ⊆ ⦃K2.ⓘ{I2},U2⦄. #K1 #K2 #HK #T1 #T2 * #n1 #n2 #f1 #f2 #Hf1 #Hf2 #HK12 #Hf12 @@ -61,7 +61,7 @@ qed. (* Advanced inversion lemmas ************************************************) -lemma fsle_inv_lifts_sn: ∀T1,U1. ⬆*[1] T1 ≘ U1 → +lemma fsle_inv_lifts_sn: ∀T1,U1. ⇧*[1] T1 ≘ U1 → ∀I1,I2,L1,L2,V1,V2,U2. ⦃L1.ⓑ{I1}V1,U1⦄ ⊆ ⦃L2.ⓑ{I2}V2,U2⦄ → ∀p. ⦃L1,T1⦄ ⊆ ⦃L2,ⓑ{p,I2}V2.U2⦄. #T1 #U1 #HTU1 #I1 #I2 #L1 #L2 #V1 #V2 #U2 diff --git a/matita/matita/contribs/lambdadelta/static_2/static/gcp_aaa.ma b/matita/matita/contribs/lambdadelta/static_2/static/gcp_aaa.ma index 7fa84f9fb..58e3084f6 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/gcp_aaa.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/gcp_aaa.ma @@ -22,8 +22,8 @@ include "static_2/static/lsubc_drops.ma". (* Basic_1: was: sc3_arity_csubc *) theorem acr_aaa_csubc_lifts: ∀RR,RS,RP. gcp RR RS RP → gcr RR RS RP RP → - ∀G,L1,T,A. ⦃G,L1⦄ ⊢ T ⁝ A → ∀b,f,L0. ⬇*[b,f] L0 ≘ L1 → - ∀T0. ⬆*[f] T ≘ T0 → ∀L2. G ⊢ L2 ⫃[RP] L0 → + ∀G,L1,T,A. ⦃G,L1⦄ ⊢ T ⁝ A → ∀b,f,L0. ⇩*[b,f] L0 ≘ L1 → + ∀T0. ⇧*[f] T ≘ T0 → ∀L2. G ⊢ L2 ⫃[RP] L0 → ⦃G,L2,T0⦄ ϵ[RP] 〚A〛. #RR #RS #RP #H1RP #H2RP #G #L1 #T @(fqup_wf_ind_eq (Ⓣ) … G L1 T) -G -L1 -T #Z #Y #X #IH #G #L1 * [ * | * [ #p ] * ] diff --git a/matita/matita/contribs/lambdadelta/static_2/static/gcp_cr.ma b/matita/matita/contribs/lambdadelta/static_2/static/gcp_cr.ma index d13387c3f..e14ca2a6f 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/gcp_cr.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/gcp_cr.ma @@ -36,11 +36,11 @@ definition S3 ≝ λC:candidate. C G L (ⒶVs.ⓓ{a}ⓝW.V.T) → C G L (ⒶVs.ⓐV.ⓛ{a}W.T). definition S5 ≝ λC:candidate. ∀I,G,L,K,Vs,V1,V2,i. - C G L (ⒶVs.V2) → ⬆*[↑i] V1 ≘ V2 → - ⬇*[i] L ≘ K.ⓑ{I}V1 → C G L (ⒶVs.#i). + C G L (ⒶVs.V2) → ⇧*[↑i] V1 ≘ V2 → + ⇩*[i] L ≘ K.ⓑ{I}V1 → C G L (ⒶVs.#i). definition S6 ≝ λRP,C:candidate. - ∀G,L,V1b,V2b. ⬆*[1] V1b ≘ V2b → + ∀G,L,V1b,V2b. ⇧*[1] V1b ≘ V2b → ∀a,V,T. C G (L.ⓓV) (ⒶV2b.T) → RP G L V → C G L (ⒶV1b.ⓓ{a}V.T). definition S7 ≝ λC:candidate. @@ -59,7 +59,7 @@ record gcr (RR:relation4 genv lenv term term) (RS:relation term) (RP,C:candidate (* the functional construction for candidates *) definition cfun: candidate → candidate → candidate ≝ λC1,C2,G,K,T. ∀f,L,W,U. - ⬇*[Ⓕ,f] L ≘ K → ⬆*[f] T ≘ U → C1 G L W → C2 G L (ⓐW.U). + ⇩*[Ⓕ,f] L ≘ K → ⇧*[f] T ≘ U → C1 G L W → C2 G L (ⓐW.U). (* the reducibility candidate associated to an atomic arity *) rec definition acr (RP:candidate) (A:aarity) on A: candidate ≝ @@ -149,7 +149,7 @@ qed. lemma acr_abst: ∀RR,RS,RP. gcp RR RS RP → gcr RR RS RP RP → ∀p,G,L,W,T,A,B. ⦃G,L,W⦄ ϵ[RP] 〚B〛 → ( - ∀b,f,L0,V0,W0,T0. ⬇*[b,f] L0 ≘ L → ⬆*[f] W ≘ W0 → ⬆*[⫯f] T ≘ T0 → + ∀b,f,L0,V0,W0,T0. ⇩*[b,f] L0 ≘ L → ⇧*[f] W ≘ W0 → ⇧*[⫯f] T ≘ T0 → ⦃G,L0,V0⦄ ϵ[RP] 〚B〛 → ⦃G,L0,W0⦄ ϵ[RP] 〚B〛 → ⦃G,L0.ⓓⓝW0.V0,T0⦄ ϵ[RP] 〚A〛 ) → ⦃G,L,ⓛ{p}W.T⦄ ϵ[RP] 〚②B.A〛. diff --git a/matita/matita/contribs/lambdadelta/static_2/static/lsuba_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/lsuba_drops.ma index 86d3a1bb9..efca71482 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/lsuba_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/lsuba_drops.ma @@ -22,8 +22,8 @@ include "static_2/static/lsuba.ma". (* Note: the premise 𝐔⦃f⦄ cannot be removed *) (* Basic_2A1: includes: lsuba_drop_O1_conf *) lemma lsuba_drops_conf_isuni: ∀G,L1,L2. G ⊢ L1 ⫃⁝ L2 → - ∀b,f,K1. 𝐔⦃f⦄ → ⬇*[b,f] L1 ≘ K1 → - ∃∃K2. G ⊢ K1 ⫃⁝ K2 & ⬇*[b,f] L2 ≘ K2. + ∀b,f,K1. 𝐔⦃f⦄ → ⇩*[b,f] L1 ≘ K1 → + ∃∃K2. G ⊢ K1 ⫃⁝ K2 & ⇩*[b,f] L2 ≘ K2. #G #L1 #L2 #H elim H -L1 -L2 [ /2 width=3 by ex2_intro/ | #I #L1 #L2 #HL12 #IH #b #f #K1 #Hf #H @@ -46,8 +46,8 @@ qed-. (* Note: the premise 𝐔⦃f⦄ cannot be removed *) (* Basic_2A1: includes: lsuba_drop_O1_trans *) lemma lsuba_drops_trans_isuni: ∀G,L1,L2. G ⊢ L1 ⫃⁝ L2 → - ∀b,f,K2. 𝐔⦃f⦄ → ⬇*[b,f] L2 ≘ K2 → - ∃∃K1. G ⊢ K1 ⫃⁝ K2 & ⬇*[b,f] L1 ≘ K1. + ∀b,f,K2. 𝐔⦃f⦄ → ⇩*[b,f] L2 ≘ K2 → + ∃∃K1. G ⊢ K1 ⫃⁝ K2 & ⇩*[b,f] L1 ≘ K1. #G #L1 #L2 #H elim H -L1 -L2 [ /2 width=3 by ex2_intro/ | #I #L1 #L2 #HL12 #IH #b #f #K2 #Hf #H diff --git a/matita/matita/contribs/lambdadelta/static_2/static/lsubc_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/lsubc_drops.ma index c4f586513..4cfe0eade 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/lsubc_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/lsubc_drops.ma @@ -23,8 +23,8 @@ include "static_2/static/lsubc.ma". (* Basic_1: includes: csubc_drop_conf_O *) (* Basic_2A1: includes: lsubc_drop_O1_trans *) lemma lsubc_drops_trans_isuni: ∀RP,G,L1,L2. G ⊢ L1 ⫃[RP] L2 → - ∀b,f,K2. 𝐔⦃f⦄ → ⬇*[b,f] L2 ≘ K2 → - ∃∃K1. ⬇*[b,f] L1 ≘ K1 & G ⊢ K1 ⫃[RP] K2. + ∀b,f,K2. 𝐔⦃f⦄ → ⇩*[b,f] L2 ≘ K2 → + ∃∃K1. ⇩*[b,f] L1 ≘ K1 & G ⊢ K1 ⫃[RP] K2. #RP #G #L1 #L2 #H elim H -L1 -L2 [ /2 width=3 by ex2_intro/ | #I #L1 #L2 #HL12 #IH #b #f #K2 #Hf #H @@ -48,8 +48,8 @@ qed-. (* Basic_1: includes: csubc_drop_conf_rev *) (* Basic_2A1: includes: drop_lsubc_trans *) lemma drops_lsubc_trans: ∀RR,RS,RP. gcp RR RS RP → - ∀b,f,G,L1,K1. ⬇*[b,f] L1 ≘ K1 → ∀K2. G ⊢ K1 ⫃[RP] K2 → - ∃∃L2. G ⊢ L1 ⫃[RP] L2 & ⬇*[b,f] L2 ≘ K2. + ∀b,f,G,L1,K1. ⇩*[b,f] L1 ≘ K1 → ∀K2. G ⊢ K1 ⫃[RP] K2 → + ∃∃L2. G ⊢ L1 ⫃[RP] L2 & ⇩*[b,f] L2 ≘ K2. #RR #RS #RP #HR #b #f #G #L1 #K1 #H elim H -f -L1 -K1 [ #f #Hf #Y #H lapply (lsubc_inv_atom1 … H) -H #H destruct /4 width=3 by lsubc_atom, drops_atom, ex2_intro/ diff --git a/matita/matita/contribs/lambdadelta/static_2/static/lsubr_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/lsubr_drops.ma index ac9e9e41f..4bcba00a9 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/lsubr_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/lsubr_drops.ma @@ -22,10 +22,10 @@ include "static_2/static/lsubr.ma". (* Basic_2A1: includes: lsubr_fwd_drop2_pair *) lemma lsubr_fwd_drops2_bind: ∀L1,L2. L1 ⫃ L2 → - ∀b,f,I,K2. 𝐔⦃f⦄ → ⬇*[b,f] L2 ≘ K2.ⓘ{I} → - ∨∨ ∃∃K1. K1 ⫃ K2 & ⬇*[b,f] L1 ≘ K1.ⓘ{I} - | ∃∃K1,W,V. K1 ⫃ K2 & ⬇*[b,f] L1 ≘ K1.ⓓⓝW.V & I = BPair Abst W - | ∃∃J1,J2,K1,V. K1 ⫃ K2 & ⬇*[b,f] L1 ≘ K1.ⓑ{J1}V & I = BUnit J2. + ∀b,f,I,K2. 𝐔⦃f⦄ → ⇩*[b,f] L2 ≘ K2.ⓘ{I} → + ∨∨ ∃∃K1. K1 ⫃ K2 & ⇩*[b,f] L1 ≘ K1.ⓘ{I} + | ∃∃K1,W,V. K1 ⫃ K2 & ⇩*[b,f] L1 ≘ K1.ⓓⓝW.V & I = BPair Abst W + | ∃∃J1,J2,K1,V. K1 ⫃ K2 & ⇩*[b,f] L1 ≘ K1.ⓑ{J1}V & I = BUnit J2. #L1 #L2 #H elim H -L1 -L2 [ #b #f #I #K2 #_ #H elim (drops_inv_atom1 … H) -H #H destruct @@ -44,8 +44,8 @@ qed-. (* Basic_2A1: includes: lsubr_fwd_drop2_abbr *) lemma lsubr_fwd_drops2_abbr: ∀L1,L2. L1 ⫃ L2 → - ∀b,f,K2,V. 𝐔⦃f⦄ → ⬇*[b,f] L2 ≘ K2.ⓓV → - ∃∃K1. K1 ⫃ K2 & ⬇*[b,f] L1 ≘ K1.ⓓV. + ∀b,f,K2,V. 𝐔⦃f⦄ → ⇩*[b,f] L2 ≘ K2.ⓓV → + ∃∃K1. K1 ⫃ K2 & ⇩*[b,f] L1 ≘ K1.ⓓV. #L1 #L2 #HL12 #b #f #K2 #V #Hf #HLK2 elim (lsubr_fwd_drops2_bind … HL12 … Hf HLK2) -L2 -Hf // * [ #K1 #W #V #_ #_ #H destruct diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rdeq_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/rdeq_drops.ma index 6246d21a2..15e7ca69c 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/rdeq_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/rdeq_drops.ma @@ -32,21 +32,21 @@ lemma rdeq_inv_lifts_dx: f_dropable_dx cdeq. /2 width=5 by rex_dropable_dx/ qed-. lemma rdeq_inv_lifts_bi: ∀L1,L2,U. L1 ≛[U] L2 → ∀b,f. 𝐔⦃f⦄ → - ∀K1,K2. ⬇*[b,f] L1 ≘ K1 → ⬇*[b,f] L2 ≘ K2 → - ∀T. ⬆*[f] T ≘ U → K1 ≛[T] K2. + ∀K1,K2. ⇩*[b,f] L1 ≘ K1 → ⇩*[b,f] L2 ≘ K2 → + ∀T. ⇧*[f] T ≘ U → K1 ≛[T] K2. /2 width=10 by rex_inv_lifts_bi/ qed-. -lemma rdeq_inv_lref_pair_sn: ∀L1,L2,i. L1 ≛[#i] L2 → ∀I,K1,V1. ⬇*[i] L1 ≘ K1.ⓑ{I}V1 → - ∃∃K2,V2. ⬇*[i] L2 ≘ K2.ⓑ{I}V2 & K1 ≛[V1] K2 & V1 ≛ V2. +lemma rdeq_inv_lref_pair_sn: ∀L1,L2,i. L1 ≛[#i] L2 → ∀I,K1,V1. ⇩*[i] L1 ≘ K1.ⓑ{I}V1 → + ∃∃K2,V2. ⇩*[i] L2 ≘ K2.ⓑ{I}V2 & K1 ≛[V1] K2 & V1 ≛ V2. /2 width=3 by rex_inv_lref_pair_sn/ qed-. -lemma rdeq_inv_lref_pair_dx: ∀L1,L2,i. L1 ≛[#i] L2 → ∀I,K2,V2. ⬇*[i] L2 ≘ K2.ⓑ{I}V2 → - ∃∃K1,V1. ⬇*[i] L1 ≘ K1.ⓑ{I}V1 & K1 ≛[V1] K2 & V1 ≛ V2. +lemma rdeq_inv_lref_pair_dx: ∀L1,L2,i. L1 ≛[#i] L2 → ∀I,K2,V2. ⇩*[i] L2 ≘ K2.ⓑ{I}V2 → + ∃∃K1,V1. ⇩*[i] L1 ≘ K1.ⓑ{I}V1 & K1 ≛[V1] K2 & V1 ≛ V2. /2 width=3 by rex_inv_lref_pair_dx/ qed-. lemma rdeq_inv_lref_pair_bi (L1) (L2) (i): L1 ≛[#i] L2 → - ∀I1,K1,V1. ⬇*[i] L1 ≘ K1.ⓑ{I1}V1 → - ∀I2,K2,V2. ⬇*[i] L2 ≘ K2.ⓑ{I2}V2 → + ∀I1,K1,V1. ⇩*[i] L1 ≘ K1.ⓑ{I1}V1 → + ∀I2,K2,V2. ⇩*[i] L2 ≘ K2.ⓑ{I2}V2 → ∧∧ K1 ≛[V1] K2 & V1 ≛ V2 & I1 = I2. /2 width=6 by rex_inv_lref_pair_bi/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rdeq_length.ma b/matita/matita/contribs/lambdadelta/static_2/static/rdeq_length.ma index 967c4c0e6..1b50d4cd5 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/rdeq_length.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/rdeq_length.ma @@ -44,8 +44,8 @@ lemma rdeq_unit_length: ∀L1,L2. |L1| = |L2| → (* Basic_2A1: uses: lleq_lift_le lleq_lift_ge *) lemma rdeq_lifts_bi: ∀L1,L2. |L1| = |L2| → ∀K1,K2,T. K1 ≛[T] K2 → - ∀b,f. ⬇*[b,f] L1 ≘ K1 → ⬇*[b,f] L2 ≘ K2 → - ∀U. ⬆*[f] T ≘ U → L1 ≛[U] L2. + ∀b,f. ⇩*[b,f] L1 ≘ K1 → ⇩*[b,f] L2 ≘ K2 → + ∀U. ⇧*[f] T ≘ U → L1 ≛[U] L2. /3 width=9 by rex_lifts_bi, tdeq_lifts_sn/ qed-. (* Forward lemmas with length for local environments ************************) diff --git a/matita/matita/contribs/lambdadelta/static_2/static/req_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/req_drops.ma index 76f25cd40..9acbbb933 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/req_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/req_drops.ma @@ -21,6 +21,6 @@ include "static_2/static/req.ma". (* Basic_2A1: uses: lleq_inv_lift_le lleq_inv_lift_be lleq_inv_lift_ge *) lemma req_inv_lifts_bi: ∀L1,L2,U. L1 ≡[U] L2 → ∀b,f. 𝐔⦃f⦄ → - ∀K1,K2. ⬇*[b,f] L1 ≘ K1 → ⬇*[b,f] L2 ≘ K2 → - ∀T. ⬆*[f] T ≘ U → K1 ≡[T] K2. + ∀K1,K2. ⇩*[b,f] L1 ≘ K1 → ⇩*[b,f] L2 ≘ K2 → + ∀T. ⇧*[f] T ≘ U → K1 ≡[T] K2. /2 width=10 by rex_inv_lifts_bi/ qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rex_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/rex_drops.ma index f3421b04c..f2f47d3d0 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/rex_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/rex_drops.ma @@ -20,23 +20,23 @@ include "static_2/static/rex.ma". (* GENERIC EXTENSION ON REFERRED ENTRIES OF A CONTEXT-SENSITIVE REALTION ****) definition f_dedropable_sn: predicate (relation3 lenv term term) ≝ - λR. ∀b,f,L1,K1. ⬇*[b,f] L1 ≘ K1 → - ∀K2,T. K1 ⪤[R,T] K2 → ∀U. ⬆*[f] T ≘ U → - ∃∃L2. L1 ⪤[R,U] L2 & ⬇*[b,f] L2 ≘ K2 & L1 ≡[f] L2. + λR. ∀b,f,L1,K1. ⇩*[b,f] L1 ≘ K1 → + ∀K2,T. K1 ⪤[R,T] K2 → ∀U. ⇧*[f] T ≘ U → + ∃∃L2. L1 ⪤[R,U] L2 & ⇩*[b,f] L2 ≘ K2 & L1 ≡[f] L2. definition f_dropable_sn: predicate (relation3 lenv term term) ≝ - λR. ∀b,f,L1,K1. ⬇*[b,f] L1 ≘ K1 → 𝐔⦃f⦄ → - ∀L2,U. L1 ⪤[R,U] L2 → ∀T. ⬆*[f] T ≘ U → - ∃∃K2. K1 ⪤[R,T] K2 & ⬇*[b,f] L2 ≘ K2. + λR. ∀b,f,L1,K1. ⇩*[b,f] L1 ≘ K1 → 𝐔⦃f⦄ → + ∀L2,U. L1 ⪤[R,U] L2 → ∀T. ⇧*[f] T ≘ U → + ∃∃K2. K1 ⪤[R,T] K2 & ⇩*[b,f] L2 ≘ K2. definition f_dropable_dx: predicate (relation3 lenv term term) ≝ λR. ∀L1,L2,U. L1 ⪤[R,U] L2 → - ∀b,f,K2. ⬇*[b,f] L2 ≘ K2 → 𝐔⦃f⦄ → ∀T. ⬆*[f] T ≘ U → - ∃∃K1. ⬇*[b,f] L1 ≘ K1 & K1 ⪤[R,T] K2. + ∀b,f,K2. ⇩*[b,f] L2 ≘ K2 → 𝐔⦃f⦄ → ∀T. ⇧*[f] T ≘ U → + ∃∃K1. ⇩*[b,f] L1 ≘ K1 & K1 ⪤[R,T] K2. definition f_transitive_next: relation3 … ≝ λR1,R2,R3. ∀f,L,T. L ⊢ 𝐅+⦃T⦄ ≘ f → - ∀g,I,K,n. ⬇*[n] L ≘ K.ⓘ{I} → ↑g = ⫱*[n] f → + ∀g,I,K,n. ⇩*[n] L ≘ K.ⓘ{I} → ↑g = ⫱*[n] f → sex_transitive (cext2 R1) (cext2 R2) (cext2 R3) (cext2 R1) cfull g K I. (* Properties with generic slicing for local environments *******************) @@ -91,24 +91,24 @@ qed-. (* Basic_2A1: uses: llpx_sn_inv_lift_O *) lemma rex_inv_lifts_bi (R): ∀L1,L2,U. L1 ⪤[R,U] L2 → ∀b,f. 𝐔⦃f⦄ → - ∀K1,K2. ⬇*[b,f] L1 ≘ K1 → ⬇*[b,f] L2 ≘ K2 → - ∀T. ⬆*[f] T ≘ U → K1 ⪤[R,T] K2. + ∀K1,K2. ⇩*[b,f] L1 ≘ K1 → ⇩*[b,f] L2 ≘ K2 → + ∀T. ⇧*[f] T ≘ U → K1 ⪤[R,T] K2. #R #L1 #L2 #U #HL12 #b #f #Hf #K1 #K2 #HLK1 #HLK2 #T #HTU elim (rex_dropable_sn … HLK1 … HL12 … HTU) -L1 -U // #Y #HK12 #HY lapply (drops_mono … HY … HLK2) -b -f -L2 #H destruct // qed-. lemma rex_inv_lref_pair_sn (R): - ∀L1,L2,i. L1 ⪤[R,#i] L2 → ∀I,K1,V1. ⬇*[i] L1 ≘ K1.ⓑ{I}V1 → - ∃∃K2,V2. ⬇*[i] L2 ≘ K2.ⓑ{I}V2 & K1 ⪤[R,V1] K2 & R K1 V1 V2. + ∀L1,L2,i. L1 ⪤[R,#i] L2 → ∀I,K1,V1. ⇩*[i] L1 ≘ K1.ⓑ{I}V1 → + ∃∃K2,V2. ⇩*[i] L2 ≘ K2.ⓑ{I}V2 & K1 ⪤[R,V1] K2 & R K1 V1 V2. #R #L1 #L2 #i #HL12 #I #K1 #V1 #HLK1 elim (rex_dropable_sn … HLK1 … HL12 (#0)) -HLK1 -HL12 // #Y #HY #HLK2 elim (rex_inv_zero_pair_sn … HY) -HY #K2 #V2 #HK12 #HV12 #H destruct /2 width=5 by ex3_2_intro/ qed-. lemma rex_inv_lref_pair_dx (R): - ∀L1,L2,i. L1 ⪤[R,#i] L2 → ∀I,K2,V2. ⬇*[i] L2 ≘ K2.ⓑ{I}V2 → - ∃∃K1,V1. ⬇*[i] L1 ≘ K1.ⓑ{I}V1 & K1 ⪤[R,V1] K2 & R K1 V1 V2. + ∀L1,L2,i. L1 ⪤[R,#i] L2 → ∀I,K2,V2. ⇩*[i] L2 ≘ K2.ⓑ{I}V2 → + ∃∃K1,V1. ⇩*[i] L1 ≘ K1.ⓑ{I}V1 & K1 ⪤[R,V1] K2 & R K1 V1 V2. #R #L1 #L2 #i #HL12 #I #K2 #V2 #HLK2 elim (rex_dropable_dx … HL12 … HLK2 … (#0)) -HLK2 -HL12 // #Y #HLK1 #HY elim (rex_inv_zero_pair_dx … HY) -HY #K1 #V1 #HK12 #HV12 #H destruct /2 width=5 by ex3_2_intro/ @@ -116,8 +116,8 @@ qed-. lemma rex_inv_lref_pair_bi (R) (L1) (L2) (i): L1 ⪤[R,#i] L2 → - ∀I1,K1,V1. ⬇*[i] L1 ≘ K1.ⓑ{I1}V1 → - ∀I2,K2,V2. ⬇*[i] L2 ≘ K2.ⓑ{I2}V2 → + ∀I1,K1,V1. ⇩*[i] L1 ≘ K1.ⓑ{I1}V1 → + ∀I2,K2,V2. ⇩*[i] L2 ≘ K2.ⓑ{I2}V2 → ∧∧ K1 ⪤[R,V1] K2 & R K1 V1 V2 & I1 = I2. #R #L1 #L2 #i #H12 #I1 #K1 #V1 #H1 #I2 #K2 #V2 #H2 elim (rex_inv_lref_pair_sn … H12 … H1) -L1 #Y2 #X2 #HLY2 #HK12 #HV12 @@ -126,16 +126,16 @@ lapply (drops_mono … HLY2 … H2) -HLY2 -H2 #H destruct qed-. lemma rex_inv_lref_unit_sn (R): - ∀L1,L2,i. L1 ⪤[R,#i] L2 → ∀I,K1. ⬇*[i] L1 ≘ K1.ⓤ{I} → - ∃∃f,K2. ⬇*[i] L2 ≘ K2.ⓤ{I} & K1 ⪤[cext2 R,cfull,f] K2 & 𝐈⦃f⦄. + ∀L1,L2,i. L1 ⪤[R,#i] L2 → ∀I,K1. ⇩*[i] L1 ≘ K1.ⓤ{I} → + ∃∃f,K2. ⇩*[i] L2 ≘ K2.ⓤ{I} & K1 ⪤[cext2 R,cfull,f] K2 & 𝐈⦃f⦄. #R #L1 #L2 #i #HL12 #I #K1 #HLK1 elim (rex_dropable_sn … HLK1 … HL12 (#0)) -HLK1 -HL12 // #Y #HY #HLK2 elim (rex_inv_zero_unit_sn … HY) -HY #f #K2 #Hf #HK12 #H destruct /2 width=5 by ex3_2_intro/ qed-. lemma rex_inv_lref_unit_dx (R): - ∀L1,L2,i. L1 ⪤[R,#i] L2 → ∀I,K2. ⬇*[i] L2 ≘ K2.ⓤ{I} → - ∃∃f,K1. ⬇*[i] L1 ≘ K1.ⓤ{I} & K1 ⪤[cext2 R,cfull,f] K2 & 𝐈⦃f⦄. + ∀L1,L2,i. L1 ⪤[R,#i] L2 → ∀I,K2. ⇩*[i] L2 ≘ K2.ⓤ{I} → + ∃∃f,K1. ⇩*[i] L1 ≘ K1.ⓤ{I} & K1 ⪤[cext2 R,cfull,f] K2 & 𝐈⦃f⦄. #R #L1 #L2 #i #HL12 #I #K2 #HLK2 elim (rex_dropable_dx … HL12 … HLK2 … (#0)) -HLK2 -HL12 // #Y #HLK1 #HY elim (rex_inv_zero_unit_dx … HY) -HY #f #K2 #Hf #HK12 #H destruct /2 width=5 by ex3_2_intro/ diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rex_length.ma b/matita/matita/contribs/lambdadelta/static_2/static/rex_length.ma index 0fa17450b..a963524d2 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/rex_length.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/rex_length.ma @@ -53,8 +53,8 @@ lemma rex_unit_length (R): ∀L1,L2. |L1| = |L2| → ∀I. L1.ⓤ{I} ⪤[R,#0] L lemma rex_lifts_bi (R): d_liftable2_sn … lifts R → ∀L1,L2. |L1| = |L2| → ∀K1,K2,T. K1 ⪤[R,T] K2 → - ∀b,f. ⬇*[b,f] L1 ≘ K1 → ⬇*[b,f] L2 ≘ K2 → - ∀U. ⬆*[f] T ≘ U → L1 ⪤[R,U] L2. + ∀b,f. ⇩*[b,f] L1 ≘ K1 → ⇩*[b,f] L2 ≘ K2 → + ∀U. ⇧*[f] T ≘ U → L1 ⪤[R,U] L2. #R #HR #L1 #L2 #HL12 #K1 #K2 #T * #f1 #Hf1 #HK12 #b #f #HLK1 #HLK2 #U #HTU elim (frees_total L1 U) #f2 #Hf2 lapply (frees_fwd_coafter … Hf2 … HLK1 … HTU … Hf1) -HTU #Hf diff --git a/matita/matita/contribs/lambdadelta/static_2/web/static_2_src.tbl b/matita/matita/contribs/lambdadelta/static_2/web/static_2_src.tbl index 0a962c3f8..44690009a 100644 --- a/matita/matita/contribs/lambdadelta/static_2/web/static_2_src.tbl +++ b/matita/matita/contribs/lambdadelta/static_2/web/static_2_src.tbl @@ -76,17 +76,17 @@ table { class "orange" [ { "relocation" * } { [ { "generic and uniform slicing" * } { - [ [ "for lenvs" ] "drops" + "( ⬇*[?,?] ? ≘ ? )" + "( ⬇*[?] ? ≘ ? )" "drops_ctc" + "drops_ltc" + "drops_weight" + "drops_length" + "drops_cext2" + "drops_sex" + "drops_lex" + "drops_seq" + "drops_drops" + "drops_vector" * ] + [ [ "for lenvs" ] "drops" + "( ⇩*[?,?] ? ≘ ? )" + "( ⇩*[?] ? ≘ ? )" "drops_ctc" + "drops_ltc" + "drops_weight" + "drops_length" + "drops_cext2" + "drops_sex" + "drops_lex" + "drops_seq" + "drops_drops" + "drops_vector" * ] } ] [ { "basic relocation" * } { - [ [ "for terms" ] "lifts_basic" + "( ⬆[?,?] ? ≘ ? )" * ] + [ [ "for terms" ] "lifts_basic" + "( ⇧[?,?] ? ≘ ? )" * ] } ] [ { "generic and uniform relocation" * } { - [ [ "for binders" ] "lifts_bind" + "( ⬆*[?] ? ≘ ? )" "lifts_weight_bind" + "lifts_lifts_bind" * ] - [ [ "for term vectors" ] "lifts_vector" + "( ⬆*[?] ? ≘ ? )" "lifts_lifts_vector" * ] - [ [ "for terms" ] "lifts" + "( ⬆*[?] ? ≘ ? )" "lifts_simple" + "lifts_weight" + "lifts_tdeq" + "lifts_tweq" + "lifts_toeq" + "lifts_lifts" * ] + [ [ "for binders" ] "lifts_bind" + "( ⇧*[?] ? ≘ ? )" "lifts_weight_bind" + "lifts_lifts_bind" * ] + [ [ "for term vectors" ] "lifts_vector" + "( ⇧*[?] ? ≘ ? )" "lifts_lifts_vector" * ] + [ [ "for terms" ] "lifts" + "( ⇧*[?] ? ≘ ? )" "lifts_simple" + "lifts_weight" + "lifts_tdeq" + "lifts_tweq" + "lifts_toeq" + "lifts_lifts" * ] } ] [ { "syntactic equivalence" * } {