X-Git-Url: http://matita.cs.unibo.it/gitweb/?p=helm.git;a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Frt_transition%2Ffpb_feqg.ma;h=22219566dbf428ddf17fd741534dd3dc8a9b00e7;hp=27f3df4e378f645d4e588c23d5bc80412a8b7e16;hb=e23331eef5817eaa6c5e1c442d1d6bbb18650573;hpb=b118146b97959e6a6dde18fdd014b8e1e676a2d1 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_feqg.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_feqg.ma index 27f3df4e3..22219566d 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_feqg.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_feqg.ma @@ -12,38 +12,36 @@ (* *) (**************************************************************************) -include "static_2/s_transition/fqu_teqg.ma". -include "static_2/static/feqg.ma". -include "basic_2/rt_transition/fpb_reqg.ma". +include "static_2/static/feqg_fqus.ma". +include "static_2/static/feqg_feqg.ma". +include "basic_2/rt_transition/cpx_feqg.ma". +include "basic_2/rt_transition/lpx_reqg.ma". +include "basic_2/rt_transition/fpb.ma". -(* PROPER PARALLEL RST-TRANSITION FOR CLOSURES ******************************) +(* PARALLEL RST-TRANSITION FOR CLOSURES *************************************) -(* Properties with generic equivalence for closures *************************) +(* Propreties with generic equivalence on referred closures *****************) -(* Basic_2A1: uses: fleq_fpb_trans *) -lemma feqg_fpb_trans (S): - reflexive … S → symmetric … S → Transitive … S → - ∀F1,F2,K1,K2,T1,T2. ❪F1,K1,T1❫ ≛[S] ❪F2,K2,T2❫ → - ∀G2,L2,U2. ❪F2,K2,T2❫ ≻ ❪G2,L2,U2❫ → - ∃∃G1,L1,U1. ❪F1,K1,T1❫ ≻ ❪G1,L1,U1❫ & ❪G1,L1,U1❫ ≛[S] ❪G2,L2,U2❫. -#S #H1S #H2S #H3S #F1 #F2 #K1 #K2 #T1 #T2 * -F2 -K2 -T2 -#K2 #T2 #HK12 #HT12 #G2 #L2 #U2 #H12 -elim (teqg_fpb_trans … HT12 … H12) -T2 // #K0 #T0 #H #HT0 #HK0 -elim (reqg_fpb_trans … HK12 … H) -K2 // #L0 #U0 #H #HUT0 #HLK0 -@(ex2_3_intro … H) -H (**) (* full auto too slow *) -/4 width=5 by feqg_intro_dx, reqg_trans, teqg_reqg_conf_sn, teqg_trans/ -qed-. +(* Basic_2A1: includes: fleq_fpbq fpbq_lleq *) +(* Basic_2A1: uses: fpbq_feqx *) +lemma feqg_fpb (S) (G1) (G2) (L1) (L2) (T1) (T2): + reflexive … S → symmetric … S → + ❪G1,L1,T1❫ ≛[S] ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≽ ❪G2,L2,T2❫. +#S #G1 #G2 #L1 #L2 #T1 #T2 #HS1 #HS2 #H +elim (feqg_inv_gen_sn … H) -H #H #HL12 #HT12 destruct +/4 width=8 by reqg_rpx, teqg_cpx, fpb_intro/ +qed. -(* Inversion lemmas with generic equivalence for closures *******************) - -(* Basic_2A1: uses: fpb_inv_fleq *) -lemma fpb_inv_feqg (S): - ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≻ ❪G2,L2,T2❫ → - ❪G1,L1,T1❫ ≛[S] ❪G2,L2,T2❫ → ⊥. -#S #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2 -[ #G2 #L2 #T2 #H12 #H elim (feqg_inv_gen_sn … H) -H - /3 width=11 by reqg_fwd_length, fqu_inv_teqg/ -| #T2 #_ #HnT #H elim (feqg_inv_gen_sn … H) -H /3 width=2 by teqg_teqx/ -| #L2 #_ #HnL #H elim (feqg_inv_gen_sn … H) -H /3 width=2 by reqg_reqx/ -] +lemma feqg_fpb_trans (S) (G) (L) (T): + reflexive … S → symmetric … S → Transitive … S → + ∀G1,L1,T1. ❪G1,L1,T1❫ ≛[S] ❪G,L,T❫ → + ∀G2,L2,T2. ❪G,L,T❫ ≽ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≽ ❪G2,L2,T2❫. +#S #G #L #T #H1S #H2S #H3S #G1 #L1 #T1 #H1 #G2 #L2 #T2 #H2 +elim (fpb_inv_gen … H2) -H2 #L0 #T0 #H0 #HT02 #H +elim (rpx_inv_reqg_lpx S … H) -H // #L3 #HL03 #HL32 +elim (feqg_fquq_trans … H1 … H0) -G -L -T // #G #L #T #H1 #H0 +lapply (feqg_cpx_trans_cpx … H0 … HT02) // -HT02 #HT2 +lapply (feqg_reqg_trans … H0 … HL03) -H0 -HL03 // #H +elim (feqg_inv_gen_sn … H) -H #H #HL3 #_ destruct -T0 +/3 width=10 by fpb_intro, reqg_lpx_trans_rpx/ qed-.