From: Ferruccio Guidi Date: Fri, 10 Nov 2017 18:12:48 +0000 (+0000) Subject: - some proposition name clashes removed X-Git-Tag: make_still_working~410 X-Git-Url: http://matita.cs.unibo.it/gitweb/?p=helm.git;a=commitdiff_plain;h=1a590671c8e8551b01a6831843a22c9485d90511 - some proposition name clashes removed - advances on lfsx_csx --- diff --git a/matita/matita/contribs/lambdadelta/basic_2/i_static/tc_lfxs_fqup.ma b/matita/matita/contribs/lambdadelta/basic_2/i_static/tc_lfxs_fqup.ma index ce56a3154..c92a4ad7b 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/i_static/tc_lfxs_fqup.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/i_static/tc_lfxs_fqup.ma @@ -23,10 +23,10 @@ lemma tc_lfxs_refl: ∀R. (∀L. reflexive … (R L)) → ∀T. reflexive … (t /3 width=1 by lfxs_refl, inj/ qed. (* Basic_2A1: uses: TC_lpx_sn_pair TC_lpx_sn_pair_refl *) -lemma tc_lfxs_pair: ∀R. (∀L. reflexive … (R L)) → - ∀L,V1,V2. LTC … R L V1 V2 → ∀I,T. L.ⓑ{I}V1 ⪤**[R, T] L.ⓑ{I}V2. +lemma tc_lfxs_pair_refl: ∀R. (∀L. reflexive … (R L)) → + ∀L,V1,V2. LTC … R L V1 V2 → ∀I,T. L.ⓑ{I}V1 ⪤**[R, T] L.ⓑ{I}V2. #R #HR #L #V1 #V2 #H elim H -V2 -/3 width=3 by tc_lfxs_step_dx, lfxs_pair, inj/ +/3 width=3 by tc_lfxs_step_dx, lfxs_pair_refl, inj/ qed. (* Advanced eliminators *****************************************************) diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_lfpx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_lfpx.ma index 73cee4537..46aa78ace 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_lfpx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_lfpx.ma @@ -61,9 +61,9 @@ qed-. lemma cpx_bind2: ∀h,G,L,V1,V2. ⦃G, L⦄ ⊢ V1 ⬈[h] V2 → ∀I,T1,T2. ⦃G, L.ⓑ{I}V2⦄ ⊢ T1 ⬈[h] T2 → ∀p. ⦃G, L⦄ ⊢ ⓑ{p,I}V1.T1 ⬈*[h] ⓑ{p,I}V2.T2. -/4 width=5 by lfpx_cpx_trans, cpxs_bind_dx, lfpx_pair/ qed. +/4 width=5 by lfpx_cpx_trans, cpxs_bind_dx, lfpx_pair_refl/ qed. lemma cpxs_bind2_dx: ∀h,G,L,V1,V2. ⦃G, L⦄ ⊢ V1 ⬈[h] V2 → ∀I,T1,T2. ⦃G, L.ⓑ{I}V2⦄ ⊢ T1 ⬈*[h] T2 → ∀p. ⦃G, L⦄ ⊢ ⓑ{p,I}V1.T1 ⬈*[h] ⓑ{p,I}V2.T2. -/4 width=5 by lfpx_cpxs_trans, cpxs_bind_dx, lfpx_pair/ qed. +/4 width=5 by lfpx_cpxs_trans, cpxs_bind_dx, lfpx_pair_refl/ qed. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lfpx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lfpx.ma index 2cfbc1a3f..2067df1b3 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lfpx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lfpx.ma @@ -38,7 +38,7 @@ elim (cpx_inv_abst1 … H1) -H1 elim (tdneq_inv_pair … H2) -H2 [ #H elim H -H // | -IHT #H lapply (csx_cpx_trans … o … HLT0) // -HT - #HT0 lapply (csx_lfpx_conf … HT0 … (L.ⓛW0)) -HT0 /4 width=1 by lfpx_pair/ + #HT0 lapply (csx_lfpx_conf … HT0 … (L.ⓛW0)) -HT0 /4 width=1 by lfpx_pair_refl/ | -IHW -HT /4 width=3 by csx_cpx_trans, cpx_pair_sn/ ] qed. @@ -52,7 +52,7 @@ elim (cpx_inv_abbr1 … H1) -H1 * [ #V1 #T1 #HLV1 #HLT1 #H destruct elim (tdneq_inv_pair … H2) -H2 [ #H elim H -H // - | /4 width=3 by csx_cpx_trans, csx_lfpx_conf, lfpx_pair/ + | /4 width=3 by csx_cpx_trans, csx_lfpx_conf, lfpx_pair_refl/ | -IHV /4 width=3 by csx_cpx_trans, cpx_cpxs, cpx_pair_sn/ ] | -IHV -IHT -H2 @@ -89,7 +89,7 @@ elim (cpx_inv_appl1 … HL) -HL * | -IHVT -H #b #V0 #V3 #W0 #W1 #T0 #T1 #HLV10 #HV03 #HLW01 #HLT01 #H1 #H2 destruct lapply (cpx_lifts_bi … HLV10 (Ⓣ) … (L.ⓓW0) … HV12 … HV03) -HLV10 -HV12 -HV03 /3 width=1 by drops_refl, drops_drop/ #HLV23 @csx_abbr /2 width=3 by csx_cpx_trans/ -HV - @(csx_lfpx_conf … (L.ⓓW0)) /2 width=1 by lfpx_pair/ -W1 + @(csx_lfpx_conf … (L.ⓓW0)) /2 width=1 by lfpx_pair_refl/ -W1 /4 width=5 by csx_cpxs_trans, cpx_cpxs, cpx_flat/ ] qed-. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lfpxs_cpxs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lfpxs_cpxs.ma index 898aac863..e5369c116 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lfpxs_cpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lfpxs_cpxs.ma @@ -20,9 +20,9 @@ include "basic_2/rt_computation/lfpxs_fqup.ma". (* Properties with uncounted context-sensitive rt-computation for terms *****) (* Basic_2A1: uses: lpxs_pair lpxs_pair_refl *) -lemma lfpxs_pair: ∀h,G,L,V1,V2. ⦃G, L⦄ ⊢ V1 ⬈*[h] V2 → - ∀I,T. ⦃G, L.ⓑ{I}V1⦄ ⊢ ⬈*[h, T] L.ⓑ{I}V2. -/2 width=1 by tc_lfxs_pair/ qed. +lemma lfpxs_pair_refl: ∀h,G,L,V1,V2. ⦃G, L⦄ ⊢ V1 ⬈*[h] V2 → + ∀I,T. ⦃G, L.ⓑ{I}V1⦄ ⊢ ⬈*[h, T] L.ⓑ{I}V2. +/2 width=1 by tc_lfxs_pair_refl/ qed. (* Basic_2A1: uses: lpxs_cpx_trans *) lemma lfpxs_cpx_trans: ∀h,G. s_r_transitive … (cpx h G) (lfpxs h G). @@ -41,7 +41,7 @@ qed-. lemma cpxs_bind2: ∀h,G,L,V1,V2. ⦃G, L⦄ ⊢ V1 ⬈*[h] V2 → ∀I,T1,T2. ⦃G, L.ⓑ{I}V2⦄ ⊢ T1 ⬈*[h] T2 → ∀p. ⦃G, L⦄ ⊢ ⓑ{p,I}V1.T1 ⬈*[h] ⓑ{p,I}V2.T2. -/4 width=3 by lfpxs_cpxs_trans, lfpxs_pair, cpxs_bind/ qed. +/4 width=3 by lfpxs_cpxs_trans, lfpxs_pair_refl, cpxs_bind/ qed. (* Advanced inversion lemmas on uncounted rt-computation for terms **********) @@ -52,7 +52,7 @@ lemma cpxs_inv_abst1: ∀h,p,G,L,V1,T1,U2. ⦃G, L⦄ ⊢ ⓛ{p}V1.T1 ⬈*[h] U2 #U0 #U2 #_ #HU02 * #V0 #T0 #HV10 #HT10 #H destruct elim (cpx_inv_abst1 … HU02) -HU02 #V2 #T2 #HV02 #HT02 #H destruct lapply (lfpxs_cpx_trans … HT02 (L.ⓛV1) ?) -/3 width=5 by lfpxs_pair, cpxs_trans, cpxs_strap1, ex3_2_intro/ +/3 width=5 by lfpxs_pair_refl, cpxs_trans, cpxs_strap1, ex3_2_intro/ qed-. lemma cpxs_inv_abbr1: ∀h,p,G,L,V1,T1,U2. ⦃G, L⦄ ⊢ ⓓ{p}V1.T1 ⬈*[h] U2 → ( @@ -66,10 +66,10 @@ lemma cpxs_inv_abbr1: ∀h,p,G,L,V1,T1,U2. ⦃G, L⦄ ⊢ ⓓ{p}V1.T1 ⬈*[h] U2 elim (cpx_inv_abbr1 … HU02) -HU02 * [ #V2 #T2 #HV02 #HT02 #H destruct lapply (lfpxs_cpx_trans … HT02 (L.ⓓV1) ?) - /4 width=5 by lfpxs_pair, cpxs_trans, cpxs_strap1, ex3_2_intro, or_introl/ + /4 width=5 by lfpxs_pair_refl, cpxs_trans, cpxs_strap1, ex3_2_intro, or_introl/ | #T2 #HT02 #HUT2 lapply (lfpxs_cpx_trans … HT02 (L.ⓓV1) ?) -HT02 - /4 width=3 by lfpxs_pair, cpxs_trans, ex3_intro, or_intror/ + /4 width=3 by lfpxs_pair_refl, cpxs_trans, ex3_intro, or_intror/ ] | #U1 #HTU1 #HU01 elim (cpx_lifts_sn … HU02 (Ⓣ) … (L.ⓓV1) … HU01) diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lfsx_csx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lfsx_csx.ma index 29ed16c91..aa8e2c9da 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lfsx_csx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lfsx_csx.ma @@ -13,6 +13,7 @@ (**************************************************************************) include "basic_2/rt_computation/lfpxs.ma". +include "basic_2/rt_computation/csx_cpxs.ma". include "basic_2/rt_computation/csx_lsubr.ma". include "basic_2/rt_computation/lfsx_drops.ma". include "basic_2/rt_computation/lfsx_lfpxs.ma". @@ -22,23 +23,29 @@ include "basic_2/rt_computation/lfsx_lfpxs.ma". (* Advanced properties ******************************************************) (* Basic_2A1: uses: lsx_lref_be_lpxs *) -axiom lfsx_pair_lpxs: ∀h,o,G,K1,V. ⦃G, K1⦄ ⊢ ⬈*[h, o] 𝐒⦃V⦄ → - ∀K2. G ⊢ ⬈*[h, o, V] 𝐒⦃K2⦄ → ⦃G, K1⦄ ⊢ ⬈*[h, V] K2 → - ∀I. G ⊢ ⬈*[h, o, #0] 𝐒⦃K2.ⓑ{I}V⦄. -(* -#h #o #I #G #K1 #V #i #l #Hli #H @(csx_ind_alt … H) -V -#V0 #_ #IHV0 #K2 #H @(lsx_ind … H) -K2 -#K0 #HK0 #IHK0 #HK10 #L0 #HLK0 @lsx_intro -#L2 #HL02 #HnL02 elim (lpx_drop_conf … HLK0 … HL02) -HL02 -#Y #H #HLK2 elim (lpx_inv_pair1 … H) -H -#K2 #V2 #HK02 #HV02 #H destruct -elim (eq_term_dec V0 V2) #HnV02 destruct [ -IHV0 -HV02 -HK0 | -IHK0 -HnL02 -HLK0 ] -[ /4 width=8 by lpxs_strap1, lleq_lref/ -| @(IHV0 … HnV02 … HLK2) -IHV0 -HnV02 -HLK2 +lemma lfsx_pair_lfpxs: ∀h,o,G,K1,V. ⦃G, K1⦄ ⊢ ⬈*[h, o] 𝐒⦃V⦄ → + ∀K2. G ⊢ ⬈*[h, o, V] 𝐒⦃K2⦄ → ⦃G, K1⦄ ⊢ ⬈*[h, V] K2 → + ∀I. G ⊢ ⬈*[h, o, #0] 𝐒⦃K2.ⓑ{I}V⦄. +#h #o #G #K1 #V #H +@(csx_ind_cpxs … H) -V #V0 #_ #IHV0 #K2 #H +@(lfsx_ind … H) -K2 #K0 #HK0 #IHK0 #HK10 #I +@lfsx_intro #Y #HY #HnY +elim (lfpx_inv_zero_pair_sn … HY) -HY #K2 #V2 #HK02 #HV02 #H destruct +elim (tdeq_dec h o V0 V2) #HnV02 destruct [ -IHV0 -HV02 -HK0 | -IHK0 -HnY ] +[ /5 width=5 by lfsx_lfdeq_trans, lfpxs_step_dx, lfdeq_pair/ +| @lfsx_lfpx_trans + [2: @(IHV0 … HnV02 K0 … I) -IHV0 -HnV02 + [ /2 width=3 by lfpxs_cpx_trans/ + | + | + ] + |1: skip + |3: @lfpx_pair /2 width=3 by lfpx_cpx_conf/ + ] /3 width=4 by lsx_cpx_trans_O, lsx_lpx_trans, lpxs_cpx_trans, lpxs_strap1/ (**) (* full auto too slow *) ] qed. -*) + (* Basic_2A1: uses: lsx_lref_be *) lemma lfsx_lref_pair: ∀h,o,G,K,V. ⦃G, K⦄ ⊢ ⬈*[h, o] 𝐒⦃V⦄ → G ⊢ ⬈*[h, o, V] 𝐒⦃K⦄ → ∀I,L,i. ⬇*[i] L ≡ K.ⓑ{I}V → G ⊢ ⬈*[h, o, #i] 𝐒⦃L⦄. diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lfpr_fqup.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lfpr_fqup.ma index 8de2443e0..cc74f1cef 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lfpr_fqup.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lfpr_fqup.ma @@ -25,9 +25,9 @@ lemma lfpr_refl: ∀h,G,T. reflexive … (lfpr h G T). /2 width=1 by lfxs_refl/ qed. (* Basic_2A1: uses: lpr_pair *) -lemma lfpr_pair: ∀h,G,L,V1,V2. ⦃G, L⦄ ⊢ V1 ➡[h] V2 → - ∀I,T. ⦃G, L.ⓑ{I}V1⦄ ⊢ ➡[h, T] L.ⓑ{I}V2. -/2 width=1 by lfxs_pair/ qed. +lemma lfpr_pair_refl: ∀h,G,L,V1,V2. ⦃G, L⦄ ⊢ V1 ➡[h] V2 → + ∀I,T. ⦃G, L.ⓑ{I}V1⦄ ⊢ ➡[h, T] L.ⓑ{I}V2. +/2 width=1 by lfxs_pair_refl/ qed. (* Advanced inversion lemmas ************************************************) diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lfpx_fqup.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lfpx_fqup.ma index 1ad389cd4..c4963ad99 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lfpx_fqup.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lfpx_fqup.ma @@ -19,14 +19,14 @@ include "basic_2/rt_transition/lfpx.ma". (* Advanced properties ******************************************************) -(* Basic_2A1: uses: lpx_refl lpx_pair *) +(* Basic_2A1: uses: lpx_refl *) lemma lfpx_refl: ∀h,G,T. reflexive … (lfpx h G T). /2 width=1 by lfxs_refl/ qed. -(* Basic_2A1: uses: lpx_refl lpx_pair *) -lemma lfpx_pair: ∀h,G,L,V1,V2. ⦃G, L⦄ ⊢ V1 ⬈[h] V2 → - ∀I,T. ⦃G, L.ⓑ{I}V1⦄ ⊢ ⬈[h, T] L.ⓑ{I}V2. -/2 width=1 by lfxs_pair/ qed. +(* Basic_2A1: uses: lpx_pair *) +lemma lfpx_pair_refl: ∀h,G,L,V1,V2. ⦃G, L⦄ ⊢ V1 ⬈[h] V2 → + ∀I,T. ⦃G, L.ⓑ{I}V1⦄ ⊢ ⬈[h, T] L.ⓑ{I}V2. +/2 width=1 by lfxs_pair_refl/ qed. (* Advanced inversion lemmas ************************************************) diff --git a/matita/matita/contribs/lambdadelta/basic_2/static/lfdeq_fqup.ma b/matita/matita/contribs/lambdadelta/basic_2/static/lfdeq_fqup.ma index 30bef569b..855c83b74 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/static/lfdeq_fqup.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/static/lfdeq_fqup.ma @@ -23,9 +23,9 @@ include "basic_2/static/lfdeq.ma". lemma lfdeq_refl: ∀h,o,T. reflexive … (lfdeq h o T). /2 width=1 by lfxs_refl/ qed. -lemma lfdeq_pair: ∀h,o,V1,V2. V1 ≡[h, o] V2 → - ∀I,L. ∀T:term. L.ⓑ{I}V1 ≡[h, o, T] L.ⓑ{I}V2. -/2 width=1 by lfxs_pair/ qed. +lemma lfdeq_pair_refl: ∀h,o,V1,V2. V1 ≡[h, o] V2 → + ∀I,L. ∀T:term. L.ⓑ{I}V1 ≡[h, o, T] L.ⓑ{I}V2. +/2 width=1 by lfxs_pair_refl/ qed. (* Advanced inversion lemmas ************************************************) diff --git a/matita/matita/contribs/lambdadelta/basic_2/static/lfdeq_fqus.ma b/matita/matita/contribs/lambdadelta/basic_2/static/lfdeq_fqus.ma index 78345ad1e..58cf547d6 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/static/lfdeq_fqus.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/static/lfdeq_fqus.ma @@ -32,7 +32,7 @@ lemma fqu_tdeq_conf: ∀h,o,b,G1,G2,L1,L2,U1,T1. ⦃G1, L1, U1⦄ ⊐[b] ⦃G2, /2 width=5 by fqu_pair_sn, ex3_2_intro/ | #p #I #G #L #W1 #U1 #X #H elim (tdeq_inv_pair1 … H) -H #W2 #U2 #HW12 #HU12 #H destruct - /3 width=5 by lfdeq_pair, fqu_bind_dx, ex3_2_intro/ + /3 width=5 by lfdeq_pair_refl, fqu_bind_dx, ex3_2_intro/ | #p #I #G #L #W1 #U1 #Hb #X #H elim (tdeq_inv_pair1 … H) -H #W2 #U2 #HW12 #HU12 #H destruct /3 width=5 by fqu_clear, ex3_2_intro/ diff --git a/matita/matita/contribs/lambdadelta/basic_2/static/lfxs_fqup.ma b/matita/matita/contribs/lambdadelta/basic_2/static/lfxs_fqup.ma index cfbeb4c8f..6bf9a2697 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/static/lfxs_fqup.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/static/lfxs_fqup.ma @@ -25,8 +25,8 @@ lemma lfxs_refl: ∀R. (∀L. reflexive … (R L)) → ∀L,T. L ⪤*[R, T] L. /4 width=3 by lexs_refl, ext2_refl, ex2_intro/ qed. -lemma lfxs_pair: ∀R. (∀L. reflexive … (R L)) → - ∀L,V1,V2. R L V1 V2 → ∀I,T. L.ⓑ{I}V1 ⪤*[R, T] L.ⓑ{I}V2. +lemma lfxs_pair_refl: ∀R. (∀L. reflexive … (R L)) → + ∀L,V1,V2. R L V1 V2 → ∀I,T. L.ⓑ{I}V1 ⪤*[R, T] L.ⓑ{I}V2. #R #HR #L #V1 #V2 #HV12 #I #T elim (frees_total (L.ⓑ{I}V1) T) #f #Hf elim (pn_split f) * #g #H destruct