From 19a25bf176255055193372554437729a6fa1894c Mon Sep 17 00:00:00 2001 From: Ferruccio Guidi Date: Thu, 16 Aug 2018 14:48:30 +0200 Subject: [PATCH] severe bug found in parallel zeta + partial commit: component "rt_computation" corrected + minor additions --- .../basic_2/rt_computation/cpms.ma | 16 +++++++++----- .../basic_2/rt_computation/cpxs.ma | 15 ++++++++++--- .../basic_2/rt_computation/cpxs_theq.ma | 4 ++-- .../rt_computation/cpxs_theq_vector.ma | 4 ++-- .../basic_2/rt_computation/csx_lpx.ma | 12 +++++------ .../basic_2/rt_computation/lprs_cpms.ma | 15 ++++++------- .../basic_2/rt_computation/lpxs_cpxs.ma | 21 +++++++++++-------- .../basic_2/rt_computation/lsubsx_rdsx.ma | 4 ++-- .../lambdadelta/basic_2/rt_transition/cpx.ma | 6 ++++++ 9 files changed, 61 insertions(+), 36 deletions(-) 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 2846c7536..11c955108 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma @@ -52,8 +52,7 @@ qed-. lemma cpms_inv_sort1 (n) (h) (G) (L): ∀X2,s. ⦃G, L⦄ ⊢ ⋆s ➡*[n, h] X2 → X2 = ⋆(((next h)^n) s). #n #h #G #L #X2 #s #H @(cpms_ind_dx … H) -X2 // #n1 #n2 #X #X2 #_ #IH #HX2 destruct -elim (cpm_inv_sort1 … HX2) -HX2 * // #H1 #H2 destruct -/2 width=3 by refl, trans_eq/ +elim (cpm_inv_sort1 … HX2) -HX2 #H #_ destruct // qed-. (* Basic properties *********************************************************) @@ -88,10 +87,17 @@ lemma cpms_appl_dx (n) (h) (G) (L): /3 width=3 by cpms_step_sn, cpm_cpms, cpm_appl/ qed. -(* Basic_2A1: uses: cprs_zeta *) lemma cpms_zeta (n) (h) (G) (L): - ∀T2,T. ⬆*[1] T2 ≘ T → - ∀V,T1. ⦃G, L.ⓓV⦄ ⊢ T1 ➡*[n, h] T → ⦃G, L⦄ ⊢ +ⓓV.T1 ➡*[n, h] T2. + ∀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/ +qed. + +(* Basic_2A1: uses: cprs_zeta *) +lemma cpms_zeta_dx (n) (h) (G) (L): + ∀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/ qed. 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 5b7495bd4..ce01889c1 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs.ma @@ -89,9 +89,18 @@ lemma cpxs_pair_sn: ∀h,I,G,L,V1,V2. ⦃G, L⦄ ⊢ V1 ⬈*[h] V2 → /3 width=3 by cpxs_strap1, cpx_pair_sn/ qed. -lemma cpxs_zeta: ∀h,G,L,V,T1,T,T2. ⬆*[1] T2 ≘ T → - ⦃G, L.ⓓV⦄ ⊢ T1 ⬈*[h] T → ⦃G, L⦄ ⊢ +ⓓV.T1 ⬈*[h] T2. -#h #G #L #V #T1 #T #T2 #HT2 #H @(cpxs_ind_dx … H) -T1 +lemma cpxs_zeta (h) (G) (L) (V): + ∀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/ +qed. + +(* Basic_2A1: was: cpxs_zeta *) +lemma cpxs_zeta_dx (h) (G) (L) (V): + ∀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/ qed. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq.ma index d9e982b5e..4bd1dd0c1 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq.ma @@ -64,7 +64,7 @@ lemma cpxs_fwd_theta: ∀h,o,p,G,L,V1,V,T,U. ⦃G, L⦄ ⊢ ⓐV1.ⓓ{p}V.T ⬈* elim (cpxs_inv_appl1 … H) -H * [ -HV12 #V0 #T0 #_ #_ #H destruct /2 width=1 by theq_pair, or_introl/ | #q #W #T0 #HT0 #HU - elim (cpxs_inv_abbr1 … HT0) -HT0 * + elim (cpxs_inv_abbr1_dx … HT0) -HT0 * [ #V3 #T3 #_ #_ #H destruct | #X #HT2 #H #H0 destruct elim (lifts_inv_bind1 … H) -H #W2 #T2 #HW2 #HT02 #H destruct @@ -75,7 +75,7 @@ elim (cpxs_inv_appl1 … H) -H * ] | #q #V3 #V4 #V0 #T0 #HV13 #HV34 #HT0 #HU @or_intror @(cpxs_trans … HU) -U (**) (* explicit constructor *) - elim (cpxs_inv_abbr1 … HT0) -HT0 * + elim (cpxs_inv_abbr1_dx … HT0) -HT0 * [ #V5 #T5 #HV5 #HT5 #H destruct /6 width=9 by cpxs_lifts_bi, drops_refl, drops_drop, cpxs_flat, cpxs_bind/ | #X #HT1 #H #H0 destruct diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq_vector.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq_vector.ma index 147867a8b..8c0326206 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq_vector.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq_vector.ma @@ -112,7 +112,7 @@ elim (cpxs_inv_appl1 … H) -H * elim (theq_inv_pair1 … HT0) #V1 #T1 #H destruct | @or_intror -V1b (**) (* explicit constructor *) @(cpxs_trans … HU) -U - elim (cpxs_inv_abbr1 … HT0) -HT0 * + elim (cpxs_inv_abbr1_dx … HT0) -HT0 * [ -HV12a #V1 #T1 #_ #_ #H destruct | -V1b #X #HT1 #H #H0 destruct elim (lifts_inv_bind1 … H) -H #W1 #T1 #HW01 #HT01 #H destruct @@ -127,7 +127,7 @@ elim (cpxs_inv_appl1 … H) -H * elim (theq_inv_pair1 … HT0) #V1 #T1 #H destruct | @or_intror -V1b -V1b (**) (* explicit constructor *) @(cpxs_trans … HU) -U - elim (cpxs_inv_abbr1 … HT0) -HT0 * + elim (cpxs_inv_abbr1_dx … HT0) -HT0 * [ #V1 #T1 #HV1 #HT1 #H destruct lapply (cpxs_lifts_bi … HV10a (Ⓣ) … (L.ⓓV) … HV12a … HV0a) -V1a -V0a /3 width=1 by drops_refl, drops_drop/ #HV2a @(cpxs_trans … (ⓓ{p}V.ⓐV2a.T1)) /3 width=1 by cpxs_bind, cpxs_pair_sn, cpxs_flat_dx, cpxs_bind_dx/ 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 9192f4fa5..980c1f12d 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 @@ -55,8 +55,8 @@ elim (cpx_inv_abbr1 … H1) -H1 * | /4 width=5 by csx_cpx_trans, csx_lpx_conf, lpx_pair/ | -IHV /4 width=3 by csx_cpx_trans, cpx_cpxs, cpx_pair_sn/ ] -| -IHV -IHT -H2 - /4 width=7 by csx_cpx_trans, csx_inv_lifts, drops_drop, drops_refl/ +| #U #HUT #HUX #_ -p + /5 width=7 by csx_cpx_trans, csx_inv_lifts, drops_drop, drops_refl/ ] qed. @@ -80,10 +80,10 @@ elim (cpx_inv_appl1 … HL) -HL * /3 width=6 by tdeq_inv_lifts_bi, tdeq_pair/ | -V1 @(IHVT … H0 … HV04) -o -V0 /4 width=1 by cpx_cpxs, cpx_flat, cpx_bind/ ] - | -H -IHVT #T0 #HLT0 #HT0 #H0 destruct - lapply (csx_cpx_trans … HVT (ⓐV2.T0) ?) /2 width=1 by cpx_flat/ -T #HVT0 - lapply (csx_inv_lifts … HVT0 (Ⓣ) … L ???) -HVT0 - /3 width=5 by csx_cpx_trans, cpx_pair_sn, drops_refl, drops_drop, lifts_flat/ + | #T0 #HT0 #HLT0 #H0 destruct -H -IHVT + lapply (csx_inv_lifts … HVT (Ⓣ) … L ???) -HVT + [5:|*: /3 width=4 by drops_refl, drops_drop, lifts_flat/ ] -V2 -T #HVT + /3 width=5 by csx_cpx_trans, cpx_flat/ ] | -HV -HV12 -HVT -IHVT -H #b #V0 #W0 #W1 #T0 #T1 #_ #_ #_ #H destruct | -IHVT -H #b #V0 #V3 #W0 #W1 #T0 #T1 #HLV10 #HV03 #HLW01 #HLT01 #H1 #H2 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 b16c21601..ac04fa427 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 @@ -64,10 +64,10 @@ qed-. (* Basic_1: was pr3_gen_abbr *) (* Basic_2A1: includes: cprs_inv_abbr1 *) -lemma cpms_inv_abbr_sn (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 = Ⓣ. +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 = Ⓣ. #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 #_ * * @@ -75,8 +75,9 @@ lemma cpms_inv_abbr_sn (n) (h) (G) (L): elim (cpm_inv_abbr1 … HX2) -HX2 * [ #V2 #T2 #HV2 #HT2 #H destruct /6 width=7 by lprs_cpm_trans, lprs_pair, cprs_step_dx, cpms_trans, ex3_2_intro, or_introl/ - | #T2 #HT2 #HXT2 #Hp - /6 width=7 by lprs_cpm_trans, lprs_pair, cpms_trans, ex3_intro, or_intror/ + | #T2 #HT2 #HTX2 #Hp -V + elim (cpm_lifts_sn … HTX2 (Ⓣ) … (L.ⓓV1) … HT2) -T2 [| /3 width=3 by drops_refl, drops_drop/ ] #X #HX2 #HTX + /4 width=3 by cpms_step_dx, ex3_intro, or_intror/ ] | #T #HT1 #HXT #Hp #HX2 elim (cpm_lifts_sn … HX2 (Ⓣ) … (L.ⓓV1) … HXT) -X @@ -89,7 +90,7 @@ 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 = Ⓣ. #n #h #G #L #p1 #p2 #V1 #W2 #T1 #T2 #H -elim (cpms_inv_abbr_sn … H) -H * +elim (cpms_inv_abbr_sn_dx … H) -H * [ #V #T #_ #_ #H destruct | /2 width=3 by ex3_intro/ ] 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 10831ed73..71742516c 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 @@ -36,23 +36,26 @@ lapply (lpxs_cpx_trans … HT02 (L.ⓛV1) ?) /3 width=5 by lpxs_pair, cpxs_trans, cpxs_strap1, ex3_2_intro/ qed-. -lemma cpxs_inv_abbr1 (h) (G): ∀p,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 = Ⓣ. -#h #G #p #L #V1 #T1 #U2 #H @(cpxs_ind … H) -U2 /3 width=5 by ex3_2_intro, or_introl/ +(* Basic_2A1: was: cpxs_inv_abbr1 *) +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 = Ⓣ. +#h #p #G #L #V1 #T1 #U2 #H +@(cpxs_ind … H) -U2 /3 width=5 by ex3_2_intro, or_introl/ #U0 #U2 #_ #HU02 * * [ #V0 #T0 #HV10 #HT10 #H destruct elim (cpx_inv_abbr1 … HU02) -HU02 * [ #V2 #T2 #HV02 #HT02 #H destruct lapply (lpxs_cpx_trans … HT02 (L.ⓓV1) ?) /4 width=5 by lpxs_pair, cpxs_trans, cpxs_strap1, ex3_2_intro, or_introl/ - | #T2 #HT02 #HUT2 - lapply (lpxs_cpx_trans … HT02 (L.ⓓV1) ?) -HT02 - /4 width=3 by lpxs_pair, cpxs_trans, ex3_intro, or_intror/ + | #T2 #HT20 #HTU2 #Hp -V0 + elim (cpx_lifts_sn … HTU2 (Ⓣ) … (L.ⓓV1) … HT20) -T2 [| /3 width=3 by drops_refl, drops_drop/ ] #U0 #HU20 #HTU0 + /4 width=3 by cpxs_strap1, ex3_intro, or_intror/ ] | #U1 #HTU1 #HU01 #Hp - elim (cpx_lifts_sn … HU02 (Ⓣ) … (L.ⓓV1) … HU01) -U0 /3 width=3 by drops_refl, drops_drop/ #U #HU2 #HU1 + elim (cpx_lifts_sn … HU02 (Ⓣ) … (L.ⓓV1) … HU01) -U0 [| /3 width=3 by drops_refl, drops_drop/ ] #U #HU2 #HU1 /4 width=3 by cpxs_strap1, ex3_intro, or_intror/ ] qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx_rdsx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx_rdsx.ma index 5448d58ff..52454a2ac 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx_rdsx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx_rdsx.ma @@ -40,9 +40,9 @@ lemma rdsx_cpx_trans_lsubsx (h) (o): ∀G,L0,T1,T2. ⦃G, L0⦄ ⊢ T1 ⬈[h] T2 /4 width=2 by lsubsx_pair, rdsx_bind_void/ | #I0 #G #L0 #V1 #V2 #T1 #T2 #_ #_ #IHV12 #IHT12 #f #L #HL0 #HL elim (rdsx_inv_flat … HL) -HL /3 width=2 by rdsx_flat/ -| #G #L0 #V #U1 #U2 #T2 #_ #HTU2 #IHU12 #f #L #HL0 #HL +| #G #L0 #V #U1 #T1 #T2 #HTU1 #_ #IHT12 #f #L #HL0 #HL elim (rdsx_inv_bind … HL) -HL #HV #HU1 - /4 width=8 by lsubsx_pair, rdsx_inv_lifts, drops_refl, drops_drop/ + /5 width=8 by rdsx_inv_lifts, drops_refl, drops_drop/ | #G #L0 #V #T1 #T2 #_ #IHT12 #f #L #HL0 #HL elim (rdsx_inv_flat … HL) -HL /2 width=2 by/ | #G #L0 #V1 #V2 #T #_ #IHV12 #f #L #HL0 #HL 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 2e657b027..3da67484a 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx.ma @@ -100,6 +100,12 @@ lemma cpx_pair_sn: ∀h,I,G,L,V1,V2. ⦃G, L⦄ ⊢ V1 ⬈[h] V2 → #h * /2 width=2 by cpx_flat, cpx_bind/ qed. +lemma cpg_cpx (h) (Rt) (c) (G) (L): + ∀T1,T2. ⦃G,L⦄ ⊢ T1 ⬈[Rt,c,h] T2 → ⦃G,L⦄ ⊢ T1 ⬈[h] T2. +#h #Rt #c #G #L #T1 #T2 #H elim H -c -G -L -T1 -T2 +/2 width=3 by cpx_theta, cpx_beta, cpx_ee, cpx_eps, cpx_zeta, cpx_flat, cpx_bind, cpx_lref, cpx_delta/ +qed. + (* Basic inversion lemmas ***************************************************) lemma cpx_inv_atom1: ∀h,J,G,L,T2. ⦃G, L⦄ ⊢ ⓪{J} ⬈[h] T2 → -- 2.39.2