(**************************************************************************) (* ___ *) (* ||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 "static_2/relocation/scl.ma". include "basic_2/rt_computation/rdsx_drops.ma". include "basic_2/rt_computation/rdsx_lpxs.ma". include "basic_2/rt_computation/sdsx.ma". axiom pippo (h) (f) (G) (V:term): āˆ€L1. G āŠ¢ ā¬ˆ*[h,V] š’ā¦ƒL1ā¦„ ā†’ āˆ€L2. L1 āŠā“§[f] L2 ā†’ G āŠ¢ ā¬ˆ*[h,V] š’ā¦ƒL2ā¦„. (* STRONGLY NORMALIZING SELECTED LOCAL ENV.S FOR UNBOUND RT-TRANSITION ******) (* Properties with strongly normalizing referred local environments *********) (* Basic_2A1: uses: lsx_cpx_trans_lcosx *) lemma rdsx_cpx_trans_sdsx (h): āˆ€G,L0,T1,T2. ā¦ƒG,L0ā¦„ āŠ¢ T1 ā¬ˆ[h] T2 ā†’ āˆ€f. G āŠ¢ ā¬ˆ*[h,f] š’ā¦ƒL0ā¦„ ā†’ āˆ€L. L0 āŠā“§[f] L ā†’ G āŠ¢ ā¬ˆ*[h,T1] š’ā¦ƒLā¦„ ā†’ G āŠ¢ ā¬ˆ*[h,T2] š’ā¦ƒLā¦„. #h #G #L0 #T1 #T2 #H @(cpx_ind ā€¦ H) -G -L0 -T1 -T2 [ // | // | #I #G #K0 #V1 #V2 #W2 #_ #IH #HVW2 #g #H1 #Y #H2 #H3 elim (sdsx_inv_pair_gen ā€¦ H1) -H1 * [ #f #HK0 #H destruct elim (scl_inv_push_sn ā€¦ H2) -H2 #K #HK #H destruct /4 width=8 by rdsx_lifts, rdsx_fwd_pair, drops_refl, drops_drop/ | #f #HV1 #HK0 #H destruct elim (scl_inv_next_sn ā€¦ H2) -H2 #K #HK #H destruct /4 width=8 by pippo, rdsx_lifts, drops_refl, drops_drop/ ] | #I0 #G #K0 #T #U #i #_ #IH #HTU #g #H1 #Y #H2 #H3 lapply (sdsx_fwd_bind ā€¦ H1) -H1 #HK0 elim (scl_fwd_bind_sn ā€¦ H2) -H2 #I #K #HK #H destruct /6 width=8 by rdsx_inv_lifts, rdsx_lifts, drops_refl, drops_drop/ | #p #I #G #L0 #V1 #V2 #T1 #T2 #_ #_ #IHV12 #IHT12 #f #H1 #L #H2 #H3 elim (rdsx_inv_bind_void ā€¦ H3) -H3 #HV1 #HT1 @rdsx_bind_void [ /2 width=3 by/ | @(IHT12 (ā†‘f) ā€¦ HT1) [ @(sdsx_pair ā€¦ H1) | /2 width=1 by scl_next/ /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 #T1 #T2 #HTU1 #_ #IHT12 #f #L #HL0 #HL elim (rdsx_inv_bind ā€¦ HL) -HL #HV #HU1 /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 elim (rdsx_inv_flat ā€¦ HL) -HL /2 width=2 by/ | #p #G #L0 #V1 #V2 #W1 #W2 #T1 #T2 #_ #_ #_ #IHV12 #IHW12 #IHT12 #f #L #HL0 #HL elim (rdsx_inv_flat ā€¦ HL) -HL #HV1 #HL elim (rdsx_inv_bind ā€¦ HL) -HL #HW1 #HT1 /4 width=2 by lsubsx_pair, rdsx_bind_void, rdsx_flat/ | #p #G #L0 #V1 #V2 #U2 #W1 #W2 #T1 #T2 #_ #_ #_ #IHV12 #IHW12 #IHT12 #HVU2 #f #L #HL0 #HL elim (rdsx_inv_flat ā€¦ HL) -HL #HV1 #HL elim (rdsx_inv_bind ā€¦ HL) -HL #HW1 #HT1 /6 width=8 by lsubsx_pair, rdsx_lifts, rdsx_bind_void, rdsx_flat, drops_refl, drops_drop/ ] qed-. (* Advanced properties of strongly normalizing referred local environments **) (* Basic_2A1: uses: lsx_cpx_trans_O *) lemma rdsx_cpx_trans (h): āˆ€G,L,T1,T2. ā¦ƒG,Lā¦„ āŠ¢ T1 ā¬ˆ[h] T2 ā†’ G āŠ¢ ā¬ˆ*[h,T1] š’ā¦ƒLā¦„ ā†’ G āŠ¢ ā¬ˆ*[h,T2] š’ā¦ƒLā¦„. /3 width=6 by rdsx_cpx_trans_lsubsx, lsubsx_refl/ qed-. lemma rdsx_cpxs_trans (h): āˆ€G,L,T1,T2. ā¦ƒG,Lā¦„ āŠ¢ T1 ā¬ˆ*[h] T2 ā†’ G āŠ¢ ā¬ˆ*[h,T1] š’ā¦ƒLā¦„ ā†’ G āŠ¢ ā¬ˆ*[h,T2] š’ā¦ƒLā¦„. #h #G #L #T1 #T2 #H @(cpxs_ind_dx ???????? H) -T1 // /3 width=3 by rdsx_cpx_trans/ qed-. *)