X-Git-Url: http://matita.cs.unibo.it/gitweb/?p=helm.git;a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Fstatic%2Flsubf_frees.ma;h=390e6f13a368c47fb2b4b42f80506dba3f179ece;hp=65de4cfae86a6d3ee5853fba27638ca2944a9971;hb=222044da28742b24584549ba86b1805a87def070;hpb=9c20dc97d029acbc383aed6b4f0636175a3de609 diff --git a/matita/matita/contribs/lambdadelta/basic_2/static/lsubf_frees.ma b/matita/matita/contribs/lambdadelta/basic_2/static/lsubf_frees.ma index 65de4cfae..390e6f13a 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/static/lsubf_frees.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/static/lsubf_frees.ma @@ -18,34 +18,34 @@ include "basic_2/static/lsubf.ma". (* Properties with context-sensitive free variables *************************) -lemma lsubf_free_trans: ∀f2,L2,T. L2 ⊢ 𝐅*⦃T⦄ ≡ f2 → ∀f,L1. ⦃L1, f⦄ ⫃𝐅* ⦃L2, f2⦄ → - ∃∃f1. L1 ⊢ 𝐅*⦃T⦄ ≡ f1 & f1 ⊆ f. +lemma lsubf_frees_trans: ∀f2,L2,T. L2 ⊢ 𝐅*⦃T⦄ ≘ f2 → + ∀f1,L1. ⦃L1, f1⦄ ⫃𝐅* ⦃L2, f2⦄ → L1 ⊢ 𝐅*⦃T⦄ ≘ f1. #f2 #L2 #T #H elim H -f2 -L2 -T -[ #f2 #I #Hf2 #f #L1 #H elim (lsubf_inv_atom2 … H) -H - #H1 #H2 destruct /3 width=3 by frees_atom, sle_refl, ex2_intro/ -| #f2 #I #K2 #W #s #_ #IH #f #L1 #H elim (lsubf_inv_push2 … H) -H * - [ #g1 #K1 #H12 #H1 #H2 - | #g #g1 #K1 #V #Hg #Hg1 #H12 #H1 #H2 #H3 - ] destruct elim (IH … H12) -f2 -K2 - /3 width=7 by frees_sort, sle_push, ex2_intro/ -| #f2 #I #K2 #W #_ #IH #f #L1 #H elim (lsubf_inv_next2 … H) -H * - [ #g1 #K1 #H12 #H1 #H2 destruct elim (IH … H12) -f2 -K2 - /3 width=7 by frees_zero, sle_next, ex2_intro/ - | #g #g1 #K1 #V #Hg #Hg1 #H12 #H1 #H2 #H3 destruct - elim (IH … H12) -K2 #f1 #Hf1 #Hfg1 - elim (sor_isfin_ex … f1 g ??) - /5 width=10 by frees_fwd_isfin, frees_flat, frees_zero, monotonic_sle_sor, sor_inv_sle_dx, sor_sle_sn, sle_next, ex2_intro/ +[ /3 width=5 by lsubf_fwd_isid_dx, frees_sort/ +| #f2 #i #Hf2 #g1 #Y1 #H + elim (lsubf_inv_atom2 … H) -H #Hg1 #H destruct + elim (eq_inv_pushs_dx … Hg1) -Hg1 #g #Hg #H destruct + elim (eq_inv_xn … Hg) -Hg + /3 width=3 by frees_atom, isid_eq_repl_fwd/ +| #f2 #I #K2 #W #_ #IH #g1 #Y1 #H elim (lsubf_inv_pair2 … H) -H * + [ #f1 #K1 #H12 #H1 #H2 destruct /3 width=1 by frees_pair/ + | #f #f0 #f1 #K1 #V #H12 #Hf #Hf1 #H1 #H2 #H3 destruct + /4 width=5 by frees_pair, frees_flat/ ] -| #f2 #I #K2 #W #i #_ #IH #f #L1 #H elim (lsubf_inv_push2 … H) -H * - [ #g1 #K1 #H12 #H1 #H2 - | #g #g1 #K1 #V #Hg #Hg1 #H12 #H1 #H2 #H3 - ] destruct elim (IH … H12) -f2 -K2 - /3 width=7 by frees_lref, sle_push, ex2_intro/ -| #f2 #I #K2 #W #l #_ #IH #f #L1 #H elim (lsubf_inv_push2 … H) -H * - [ #g1 #K1 #H12 #H1 #H2 - | #g #g1 #K1 #V #Hg #Hg1 #H12 #H1 #H2 #H3 - ] destruct elim (IH … H12) -f2 -K2 - /3 width=7 by frees_gref, sle_push, ex2_intro/ -| #f2V #f2T #f2 #p #I #L2 #V #T #_ #_ #Hf2 #IHV #IHT #f #L1 #H12 -| #f2V #f2T #f2 #I #L2 #V #T #_ #_ #Hf2 #IHV #IHT #f #L1 #H12 - \ No newline at end of file +| #f2 #I #L2 #Hf2 #g1 #Y1 #H elim (lsubf_inv_unit2 … H) -H * + [ #f1 #L1 #H12 #H1 #H2 destruct + /3 width=5 by lsubf_fwd_isid_dx, frees_unit/ + | #f #f0 #f1 #J #L1 #V #H12 #Hf #Hf1 #H1 #H2 destruct + /5 width=9 by lsubf_fwd_isid_dx, frees_eq_repl_back, frees_pair, sor_isid_inv_sn/ + ] +| #f2 #I #L2 #i #_ #IH #g1 #L1 #H elim (lsubf_inv_push2 … H) -H + /3 width=1 by frees_lref/ +| /3 width=5 by lsubf_fwd_isid_dx, frees_gref/ +| #f2V #f2T #f2 #p #I #L2 #V #T #_ #_ #Hf2 #IHV #IHT #f1 #L1 #H12 + elim (lsubf_inv_sor_dx … H12 … Hf2) -f2 #f1V #g1T #HV #HT #Hf1 + elim (lsubf_bind_tl_dx … (BPair I V) … HT) -HT #f1T #HT #H destruct + /3 width=5 by frees_bind/ +| #f2V #f2T #f2 #I #L2 #V #T #_ #_ #Hf2 #IHV #IHT #f1 #L1 #H12 + elim (lsubf_inv_sor_dx … H12 … Hf2) -f2 /3 width=5 by frees_flat/ +] +qed-.