X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Frt_transition%2Fcpx_lfdeq.ma;h=c9fc905138d76fdff48c6dcd5feb3d61b51012c1;hb=47a745462a714af9d65cea7b61af56524bd98fa1;hp=1a4d722e779753261bfab28ce6468ef4fe1c8745;hpb=a9e994f4ca8e04743c53ed8cb057ee5dae80c8f9;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_lfdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_lfdeq.ma index 1a4d722e7..c9fc90513 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_lfdeq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_lfdeq.ma @@ -12,103 +12,18 @@ (* *) (**************************************************************************) -include "basic_2/relocation/lifts_tdeq.ma". -include "basic_2/static/lfdeq.ma". -include "basic_2/rt_transition/lfpx.ma". +include "basic_2/static/lfdeq_lfdeq.ma". +include "basic_2/rt_transition/lfpx_fsle.ma". (* UNCOUNTED CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS *************) -(* Properties with degree-based equivalence for terms ***********************) +(* Properties with degree-based equivalence for local environments **********) -(* Basic_2A1: was just: cpx_lleq_conf *) -lemma cpx_tdeq_conf_lexs: ∀h,o,G. R_confluent2_lfxs … (cpx h G) (cdeq h o) (cpx h G) (cdeq h o). -#h #o #G #L0 #T0 #T1 #H @(cpx_ind … H) -G -L0 -T0 -T1 /2 width=3 by ex2_intro/ -[ #G #L0 #s0 #X0 #H0 #L1 #HL01 #L2 #HL02 - elim (tdeq_inv_sort1 … H0) -H0 #s1 #d1 #Hs0 #Hs1 #H destruct - /4 width=3 by tdeq_sort, deg_next, ex2_intro/ -| #I #G #K0 #V0 #V1 #W1 #_ #IH #HVW1 #T2 #H0 #L1 #H1 #L2 #H2 - >(tdeq_inv_lref1 … H0) -H0 - elim (lfpx_inv_zero_pair_sn … H1) -H1 #K1 #X1 #HK01 #HX1 #H destruct - elim (lfdeq_inv_zero_pair_sn … H2) -H2 #K2 #X2 #HK02 #HX2 #H destruct - elim (IH X2 … HK01 … HK02) // -K0 -V0 #V #HV1 #HV2 - elim (tdeq_lifts … HV1 … HVW1) -V1 /3 width=5 by cpx_delta, ex2_intro/ -| #I #G #K0 #V0 #V1 #W1 #i #_ #IH #HVW1 #T2 #H0 #L1 #H1 #L2 #H2 - >(tdeq_inv_lref1 … H0) -H0 - elim (lfpx_inv_lref_pair_sn … H1) -H1 #K1 #X1 #HK01 #H destruct - elim (lfdeq_inv_lref_pair_sn … H2) -H2 #K2 #X2 #HK02 #H destruct - elim (IH … HK01 … HK02) [|*: //] -K0 -V0 #V #HV1 #HV2 - elim (tdeq_lifts … HV1 … HVW1) -V1 /3 width=5 by cpx_lref, ex2_intro/ -| #p #I #G #L0 #V0 #V1 #T0 #T1 #_ #_ #IHV #IHT #X0 #H0 #L1 #H1 #L2 #H2 - elim (tdeq_inv_pair1 … H0) -H0 #V2 #T2 #HV02 #HT02 #H destruct - elim (lfpx_inv_bind … H1) -H1 #HL01 #H1 - elim (lfdeq_inv_bind … H2) -H2 #HL02 #H2 - lapply (lfdeq_pair_repl_dx … H2 … HV02) -H2 #H2 - elim (IHV … HV02 … HL01 … HL02) -IHV -HV02 -HL01 -HL02 - elim (IHT … HT02 … H1 … H2) -L0 -T0 - /3 width=5 by cpx_bind, tdeq_pair, ex2_intro/ -| #I #G #L0 #V0 #V1 #T0 #T1 #_ #_ #IHV #IHT #X0 #H0 #L1 #H1 #L2 #H2 - elim (tdeq_inv_pair1 … H0) -H0 #V2 #T2 #HV02 #HT02 #H destruct - elim (lfpx_inv_flat … H1) -H1 #HL01 #H1 - elim (lfdeq_inv_flat … H2) -H2 #HL02 #H2 - elim (IHV … HV02 … HL01 … HL02) -IHV -HV02 -HL01 -HL02 - elim (IHT … HT02 … H1 … H2) -L0 -V0 -T0 - /3 width=5 by cpx_flat, tdeq_pair, ex2_intro/ -| #G #L0 #V0 #T0 #T1 #U1 #_ #IH #HUT1 #X0 #H0 #L1 #H1 #L2 #H2 - elim (tdeq_inv_pair1 … H0) -H0 #V2 #T2 #HV02 #HT02 #H destruct - elim (lfpx_inv_bind … H1) -H1 #HL01 #H1 - elim (lfdeq_inv_bind … H2) -H2 #HL02 #H2 - lapply (lfdeq_pair_repl_dx … H2 … HV02) -H2 -HV02 #H2 - elim (IH … HT02 … H1 … H2) -L0 -T0 #T #HT1 - elim (tdeq_inv_lifts … HT1 … HUT1) -T1 - /3 width=5 by cpx_zeta, ex2_intro/ -| #G #L0 #V0 #T0 #T1 #_ #IH #X0 #H0 #L1 #H1 #L2 #H2 - elim (tdeq_inv_pair1 … H0) -H0 #V2 #T2 #_ #HT02 #H destruct - elim (lfpx_inv_flat … H1) -H1 #HL01 #H1 - elim (lfdeq_inv_flat … H2) -H2 #HL02 #H2 - elim (IH … HT02 … H1 … H2) -L0 -V0 -T0 - /3 width=3 by cpx_eps, ex2_intro/ -| #G #L0 #V0 #T0 #T1 #_ #IH #X0 #H0 #L1 #H1 #L2 #H2 - elim (tdeq_inv_pair1 … H0) -H0 #V2 #T2 #HV02 #_ #H destruct - elim (lfpx_inv_flat … H1) -H1 #HL01 #H1 - elim (lfdeq_inv_flat … H2) -H2 #HL02 #H2 - elim (IH … HV02 … HL01 … HL02) -L0 -V0 -T1 - /3 width=3 by cpx_ee, ex2_intro/ -| #p #G #L0 #V0 #V1 #W0 #W1 #T0 #T1 #_ #_ #_ #IHV #IHW #IHT #X0 #H0 #L1 #H1 #L2 #H2 - elim (tdeq_inv_pair1 … H0) -H0 #V2 #X #HV02 #H0 #H destruct - elim (tdeq_inv_pair1 … H0) -H0 #W2 #T2 #HW02 #HT02 #H destruct - elim (lfpx_inv_flat … H1) -H1 #H1LV0 #H1 - elim (lfpx_inv_bind … H1) -H1 #H1LW0 #H1LT0 - elim (lfdeq_inv_flat … H2) -H2 #H2LV0 #H2 - elim (lfdeq_inv_bind … H2) -H2 #H2LW0 #H2LT0 - lapply (lfdeq_pair_repl_dx … H2LT0 … HW02) -H2LT0 #H2LT0 - elim (IHV … HV02 … H1LV0 … H2LV0) -IHV -HV02 -H1LV0 -H2LV0 - elim (IHW … HW02 … H1LW0 … H2LW0) -IHW -HW02 -H1LW0 -H2LW0 - elim (IHT … HT02 … H1LT0 … H2LT0) -L0 -V0 -T0 - /4 width=7 by cpx_beta, tdeq_pair, ex2_intro/ (* note: 2 tdeq_pair *) -| #p #G #L0 #V0 #V1 #U1 #W0 #W1 #T0 #T1 #_ #_ #_ #IHV #IHW #IHT #HVU1 #X0 #H0 #L1 #H1 #L2 #H2 - elim (tdeq_inv_pair1 … H0) -H0 #V2 #X #HV02 #H0 #H destruct - elim (tdeq_inv_pair1 … H0) -H0 #W2 #T2 #HW02 #HT02 #H destruct - elim (lfpx_inv_flat … H1) -H1 #H1LV0 #H1 - elim (lfpx_inv_bind … H1) -H1 #H1LW0 #H1LT0 - elim (lfdeq_inv_flat … H2) -H2 #H2LV0 #H2 - elim (lfdeq_inv_bind … H2) -H2 #H2LW0 #H2LT0 - lapply (lfdeq_pair_repl_dx … H2LT0 … HW02) -H2LT0 #H2LT0 - elim (IHV … HV02 … H1LV0 … H2LV0) -IHV -HV02 -H1LV0 -H2LV0 #V #HV1 - elim (IHW … HW02 … H1LW0 … H2LW0) -IHW -HW02 -H1LW0 -H2LW0 - elim (IHT … HT02 … H1LT0 … H2LT0) -L0 -V0 -T0 - elim (tdeq_lifts … HV1 … HVU1) -V1 - /4 width=9 by cpx_theta, tdeq_pair, ex2_intro/ (* note: 2 tdeq_pair *) -] -qed-. -(* -lemma cpx_lleq_conf: ∀h,o,G,L2,T1,T2. ⦃G, L2⦄ ⊢ T1 ⬈[h, o] T2 → - ∀L1. L2 ≡[T1, 0] L1 → ⦃G, L1⦄ ⊢ T1 ⬈[h, o] T2. -/3 width=3 by lleq_cpx_trans, lleq_sym/ qed-. +(* Basic_2A1: was just: cpx_lleq_conf_sn *) +lemma cpx_lfdeq_conf_sn: ∀h,o,G. s_r_confluent1 … (cpx h G) (lfdeq h o). +/3 width=6 by cpx_lfxs_conf/ qed-. -lemma cpx_lleq_conf_sn: ∀h,o,G. s_r_confluent1 … (cpx h o G) (lleq 0). -/3 width=6 by cpx_llpx_sn_conf, lift_mono, ex2_intro/ qed-. - -lemma cpx_lleq_conf_dx: ∀h,o,G,L2,T1,T2. ⦃G, L2⦄ ⊢ T1 ⬈[h, o] T2 → - ∀L1. L1 ≡[T1, 0] L2 → L1 ≡[T2, 0] L2. -/4 width=6 by cpx_lleq_conf_sn, lleq_sym/ qed-. -*) \ No newline at end of file +(* Basic_2A1: was just: cpx_lleq_conf_dx *) +lemma cpx_lfdeq_conf_dx: ∀h,o,G,L2,T1,T2. ⦃G, L2⦄ ⊢ T1 ⬈[h] T2 → + ∀L1. L1 ≛[h, o, T1] L2 → L1 ≛[h, o, T2] L2. +/4 width=4 by cpx_lfdeq_conf_sn, lfdeq_sym/ qed-.