From 99f834becc871959125ce3903a6850ff29576bec Mon Sep 17 00:00:00 2001 From: Ferruccio Guidi Date: Sat, 20 Apr 2013 18:24:54 +0000 Subject: [PATCH] refactoring completed :) --- .../lambdadelta/basic_2/restricted/cpqs.ma | 228 -------------- .../basic_2/restricted/cpqs_lift.ma | 81 ----- .../lambdadelta/basic_2/restricted/lpqs.ma | 67 ---- .../basic_2/restricted/lpqs_cpqs.ma | 297 ------------------ .../basic_2/restricted/lpqs_ldrop.ma | 30 -- .../basic_2/restricted/lpqs_lpqs.ma | 46 --- .../lambdadelta/basic_2/unwind/sstas.ma | 80 ----- .../lambdadelta/basic_2/unwind/sstas_aaa.ma | 25 -- .../lambdadelta/basic_2/unwind/sstas_lift.ma | 52 --- .../lambdadelta/basic_2/unwind/sstas_lpss.ma | 39 --- .../lambdadelta/basic_2/unwind/sstas_sstas.ma | 54 ---- 11 files changed, 999 deletions(-) delete mode 100644 matita/matita/contribs/lambdadelta/basic_2/restricted/cpqs.ma delete mode 100644 matita/matita/contribs/lambdadelta/basic_2/restricted/cpqs_lift.ma delete mode 100644 matita/matita/contribs/lambdadelta/basic_2/restricted/lpqs.ma delete mode 100644 matita/matita/contribs/lambdadelta/basic_2/restricted/lpqs_cpqs.ma delete mode 100644 matita/matita/contribs/lambdadelta/basic_2/restricted/lpqs_ldrop.ma delete mode 100644 matita/matita/contribs/lambdadelta/basic_2/restricted/lpqs_lpqs.ma delete mode 100644 matita/matita/contribs/lambdadelta/basic_2/unwind/sstas.ma delete mode 100644 matita/matita/contribs/lambdadelta/basic_2/unwind/sstas_aaa.ma delete mode 100644 matita/matita/contribs/lambdadelta/basic_2/unwind/sstas_lift.ma delete mode 100644 matita/matita/contribs/lambdadelta/basic_2/unwind/sstas_lpss.ma delete mode 100644 matita/matita/contribs/lambdadelta/basic_2/unwind/sstas_sstas.ma diff --git a/matita/matita/contribs/lambdadelta/basic_2/restricted/cpqs.ma b/matita/matita/contribs/lambdadelta/basic_2/restricted/cpqs.ma deleted file mode 100644 index 4992de0b0..000000000 --- a/matita/matita/contribs/lambdadelta/basic_2/restricted/cpqs.ma +++ /dev/null @@ -1,228 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||M|| *) -(* ||A|| A project by Andrea Asperti *) -(* ||T|| *) -(* ||I|| Developers: *) -(* ||T|| The HELM team. *) -(* ||A|| http://helm.cs.unibo.it *) -(* \ / *) -(* \ / This file is distributed under the terms of the *) -(* v GNU General Public License Version 2 *) -(* *) -(**************************************************************************) - -include "basic_2/unfold/cpss.ma". - -(* CONTEXT-SENSITIVE RESTRICTED PARALLEL COMPUTATION FOR TERMS **************) - -inductive cpqs: lenv → relation term ≝ -| cpqs_atom : ∀I,L. cpqs L (⓪{I}) (⓪{I}) -| cpqs_delta: ∀L,K,V,V2,W2,i. - ⇩[0, i] L ≡ K. ⓓV → cpqs K V V2 → - ⇧[0, i + 1] V2 ≡ W2 → cpqs L (#i) W2 -| cpqs_bind : ∀a,I,L,V1,V2,T1,T2. - cpqs L V1 V2 → cpqs (L. ⓑ{I} V1) T1 T2 → - cpqs L (ⓑ{a,I} V1. T1) (ⓑ{a,I} V2. T2) -| cpqs_flat : ∀I,L,V1,V2,T1,T2. - cpqs L V1 V2 → cpqs L T1 T2 → - cpqs L (ⓕ{I} V1. T1) (ⓕ{I} V2. T2) -| cpqs_zeta : ∀L,V,T1,T,T2. cpqs (L.ⓓV) T1 T → - ⇧[0, 1] T2 ≡ T → cpqs L (+ⓓV. T1) T2 -| cpqs_tau : ∀L,V,T1,T2. cpqs L T1 T2 → cpqs L (ⓝV. T1) T2 -. - -interpretation "context-sensitive restricted parallel computation (term)" - 'PRestStar L T1 T2 = (cpqs L T1 T2). - -(* Basic properties *********************************************************) - -(* Note: it does not hold replacing |L1| with |L2| *) -lemma cpqs_lsubr_trans: ∀L1,T1,T2. L1 ⊢ T1 ➤* T2 → - ∀L2. L2 ⊑ [0, |L1|] L1 → L2 ⊢ T1 ➤* T2. -#L1 #T1 #T2 #H elim H -L1 -T1 -T2 -[ // -| #L1 #K1 #V1 #V2 #W2 #i #HLK1 #_ #HVW2 #IHV12 #L2 #HL12 - lapply (ldrop_fwd_ldrop2_length … HLK1) #Hi - lapply (ldrop_fwd_O1_length … HLK1) #H2i - elim (ldrop_lsubr_ldrop2_abbr … HL12 … HLK1 ? ?) -HL12 -HLK1 // -Hi - shift_append_assoc normalize #H - elim (cpqs_inv_bind1 … H) -H * - [ #V0 #T0 #_ #HT10 #H destruct - elim (IH … HT10) -IH -HT10 #L2 #T2 #HL12 #H destruct - >append_length >HL12 -HL12 - @(ex2_2_intro … (⋆.ⓑ{I}V0@@L2) T2) [ >append_length ] // /2 width=3/ (**) (* explicit constructor *) - | #T #_ #_ #H destruct - ] -] -qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/restricted/cpqs_lift.ma b/matita/matita/contribs/lambdadelta/basic_2/restricted/cpqs_lift.ma deleted file mode 100644 index abdd99d8f..000000000 --- a/matita/matita/contribs/lambdadelta/basic_2/restricted/cpqs_lift.ma +++ /dev/null @@ -1,81 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||M|| *) -(* ||A|| A project by Andrea Asperti *) -(* ||T|| *) -(* ||I|| Developers: *) -(* ||T|| The HELM team. *) -(* ||A|| http://helm.cs.unibo.it *) -(* \ / *) -(* \ / This file is distributed under the terms of the *) -(* v GNU General Public License Version 2 *) -(* *) -(**************************************************************************) - -include "basic_2/substitution/ldrop_ldrop.ma". -include "basic_2/restricted/cpqs.ma". - -(* CONTEXT-SENSITIVE RESTRICTED PARALLEL COMPUTATION FOR TERMS **************) - -(* Relocation properties ****************************************************) - -lemma cpqs_lift: l_liftable cpqs. -#K #T1 #T2 #H elim H -K -T1 -T2 -[ #I #K #L #d #e #_ #U1 #H1 #U2 #H2 - >(lift_mono … H1 … H2) -H1 -H2 // -| #K #KV #V #V2 #W2 #i #HKV #HV2 #HVW2 #IHV2 #L #d #e #HLK #U1 #H #U2 #HWU2 - elim (lift_inv_lref1 … H) * #Hid #H destruct - [ elim (lift_trans_ge … HVW2 … HWU2) -W2 // plus_plus_comm_23 #HVU2 - lapply (ldrop_trans_ge_comm … HLK … HKV ?) -K // -Hid /3 width=6/ - ] -| #a #I #K #V1 #V2 #T1 #T2 #_ #_ #IHV12 #IHT12 #L #d #e #HLK #U1 #H1 #U2 #H2 - elim (lift_inv_bind1 … H1) -H1 #VV1 #TT1 #HVV1 #HTT1 #H1 destruct - elim (lift_inv_bind1 … H2) -H2 #VV2 #TT2 #HVV2 #HTT2 #H2 destruct /4 width=5/ -| #I #K #V1 #V2 #T1 #T2 #_ #_ #IHV12 #IHT12 #L #d #e #HLK #U1 #H1 #U2 #H2 - elim (lift_inv_flat1 … H1) -H1 #VV1 #TT1 #HVV1 #HTT1 #H1 destruct - elim (lift_inv_flat1 … H2) -H2 #VV2 #TT2 #HVV2 #HTT2 #H2 destruct /3 width=6/ -| #K #V #T1 #T #T2 #_ #HT2 #IHT1 #L #d #e #HLK #U1 #H #U2 #HTU2 - elim (lift_inv_bind1 … H) -H #VV1 #TT1 #HVV1 #HTT1 #H destruct - elim (lift_conf_O1 … HTU2 … HT2) -T2 /4 width=5/ -| #K #V #T1 #T2 #_ #IHT12 #L #d #e #HLK #U1 #H #U2 #HTU2 - elim (lift_inv_flat1 … H) -H #VV1 #TT1 #HVV1 #HTT1 #H destruct /3 width=5/ -] -qed. - -lemma cpqs_inv_lift1: l_deliftable_sn cpqs. -#L #U1 #U2 #H elim H -L -U1 -U2 -[ * #L #i #K #d #e #_ #T1 #H - [ lapply (lift_inv_sort2 … H) -H #H destruct /2 width=3/ - | elim (lift_inv_lref2 … H) -H * #Hid #H destruct /3 width=3/ - | lapply (lift_inv_gref2 … H) -H #H destruct /2 width=3/ - ] -| #L #LV #V #V2 #W2 #i #HLV #HV2 #HVW2 #IHV2 #K #d #e #HLK #T1 #H - elim (lift_inv_lref2 … H) -H * #Hid #H destruct - [ elim (ldrop_conf_lt … HLK … HLV) -L // #L #U #HKL #HLV #HUV - elim (IHV2 … HLV … HUV) -V #U2 #HUV2 #HU2 - elim (lift_trans_le … HUV2 … HVW2) -V2 // >minus_plus plus_minus // shift_append_assoc #H (lift_mono … HX … HU12) -X // -| #T0 #U0 #l0 #HTU0 #_ #IHU01 #L2 #d #e #HL21 #T2 #HT02 #U2 #HU12 - elim (lift_total U0 d e) /3 width=10/ -] -qed. - -(* Inversion lemmas on relocation *******************************************) - -lemma sstas_inv_lift1: ∀h,g,L2,T2,U2. ⦃h, L2⦄ ⊢ T2 •*[g] U2 → - ∀L1,d,e. ⇩[d, e] L2 ≡ L1 → ∀T1. ⇧[d, e] T1 ≡ T2 → - ∃∃U1. ⦃h, L1⦄ ⊢ T1 •*[g] U1 & ⇧[d, e] U1 ≡ U2. -#h #g #L2 #T2 #U2 #H @(sstas_ind_dx … H) -T2 /2 width=3/ -#T0 #U0 #l0 #HTU0 #_ #IHU01 #L1 #d #e #HL21 #U1 #HU12 -elim (ssta_inv_lift1 … HTU0 … HL21 … HU12) -HTU0 -HU12 #U #HU1 #HU0 -elim (IHU01 … HL21 … HU0) -IHU01 -HL21 -U0 /3 width=4/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/unwind/sstas_lpss.ma b/matita/matita/contribs/lambdadelta/basic_2/unwind/sstas_lpss.ma deleted file mode 100644 index cd16c5847..000000000 --- a/matita/matita/contribs/lambdadelta/basic_2/unwind/sstas_lpss.ma +++ /dev/null @@ -1,39 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||M|| *) -(* ||A|| A project by Andrea Asperti *) -(* ||T|| *) -(* ||I|| Developers: *) -(* ||T|| The HELM team. *) -(* ||A|| http://helm.cs.unibo.it *) -(* \ / *) -(* \ / This file is distributed under the terms of the *) -(* v GNU General Public License Version 2 *) -(* *) -(**************************************************************************) - -include "basic_2/static/ssta_lpss.ma". -include "basic_2/unwind/sstas.ma". - -(* ITERATED STRATIFIED STATIC TYPE ASSIGNMENT FOR TERMS *********************) - -(* Properties about sn parallel unfold **************************************) - -lemma sstas_tpss_lpss_conf: ∀h,g,L1,T1,U1. ⦃h, L1⦄ ⊢ T1 •*[g] U1 → - ∀T2. L1 ⊢ T1 ▶* T2 → ∀L2. L1 ⊢ ▶* L2 → - ∃∃U2. ⦃h, L2⦄ ⊢ T2 •*[g] U2 & L1 ⊢ U1 ▶* U2. -#h #g #L1 #T1 #U1 #H @(sstas_ind_dx … H) -T1 /2 width=3/ -#T0 #U0 #l0 #HTU0 #_ #IHU01 #T #HT0 #L2 #HL12 -elim (ssta_tpss_lpss_conf … HTU0 … HT0 … HL12) -HTU0 -HT0 #U #HTU #HU0 -elim (IHU01 … HU0 … HL12) -IHU01 -U0 -HL12 /3 width=4/ -qed-. - -lemma sstas_tpss_conf: ∀h,g,L,T1,U1. ⦃h, L⦄ ⊢ T1 •*[g] U1 → - ∀T2. L ⊢ T1 ▶* T2 → - ∃∃U2. ⦃h, L⦄ ⊢ T2 •*[g] U2 & L ⊢ U1 ▶* U2. -/2 width=3 by sstas_tpss_lpss_conf/ qed-. - -lemma sstas_lpss_conf: ∀h,g,L1,T,U1. ⦃h, L1⦄ ⊢ T •*[g] U1 → - ∀L2. L1 ⊢ ▶* L2 → - ∃∃U2. ⦃h, L2⦄ ⊢ T •*[g] U2 & L1 ⊢ U1 ▶* U2. -/2 width=3 by sstas_tpss_lpss_conf/ qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/unwind/sstas_sstas.ma b/matita/matita/contribs/lambdadelta/basic_2/unwind/sstas_sstas.ma deleted file mode 100644 index eef812b56..000000000 --- a/matita/matita/contribs/lambdadelta/basic_2/unwind/sstas_sstas.ma +++ /dev/null @@ -1,54 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||M|| *) -(* ||A|| A project by Andrea Asperti *) -(* ||T|| *) -(* ||I|| Developers: *) -(* ||T|| The HELM team. *) -(* ||A|| http://helm.cs.unibo.it *) -(* \ / *) -(* \ / This file is distributed under the terms of the *) -(* v GNU General Public License Version 2 *) -(* *) -(**************************************************************************) - -include "basic_2/static/ssta_ssta.ma". -include "basic_2/unwind/sstas.ma". - -(* ITERATED STRATIFIED STATIC TYPE ASSIGNMENT FOR TERMS *********************) - -(* Advanced inversion lemmas ************************************************) - -lemma sstas_inv_O: ∀h,g,L,T,U. ⦃h, L⦄ ⊢ T •*[g] U → - ∀T0. ⦃h, L⦄ ⊢ T •[g] ⦃0, T0⦄ → U = T. -#h #g #L #T #U #H @(sstas_ind_dx … H) -T // -#T0 #U0 #l0 #HTU0 #_ #_ #T1 #HT01 -elim (ssta_mono … HTU0 … HT01)