X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Fstatic%2Ffrees_append.ma;fp=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Fstatic%2Ffrees_append.ma;h=56205c3db360c832b67c7f9da216ce9d0f4fa791;hb=47a745462a714af9d65cea7b61af56524bd98fa1;hp=0000000000000000000000000000000000000000;hpb=990f97071a9939d47be16b36f6045d3b23f218e0;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/basic_2/static/frees_append.ma b/matita/matita/contribs/lambdadelta/basic_2/static/frees_append.ma new file mode 100644 index 000000000..56205c3db --- /dev/null +++ b/matita/matita/contribs/lambdadelta/basic_2/static/frees_append.ma @@ -0,0 +1,59 @@ +(**************************************************************************) +(* ___ *) +(* ||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 "basic_2/syntax/append.ma". +include "basic_2/static/frees.ma". + +(* CONTEXT-SENSITIVE FREE VARIABLES *****************************************) + +(* Properties with append for local environments ****************************) + +lemma frees_append_void: ∀f,K,T. K ⊢ 𝐅*⦃T⦄ ≡ f → ⓧ.K ⊢ 𝐅*⦃T⦄ ≡ f. +#f #K #T #H elim H -f -K -T +[ /2 width=1 by frees_sort/ +| #f * /3 width=1 by frees_atom, frees_unit, frees_lref/ +| /2 width=1 by frees_pair/ +| /2 width=1 by frees_unit/ +| /2 width=1 by frees_lref/ +| /2 width=1 by frees_gref/ +| /3 width=5 by frees_bind/ +| /3 width=5 by frees_flat/ +] +qed. + +(* Inversion lemmas with append for local environments **********************) + +fact frees_inv_append_void_aux: ∀f,L,T. L ⊢ 𝐅*⦃T⦄ ≡ f → + ∀K. L = ⓧ.K → K ⊢ 𝐅*⦃T⦄ ≡ f. +#f #L #T #H elim H -f -L -T +[ /2 width=1 by frees_sort/ +| #f #i #_ #K #H + elim (append_inv_atom3_sn … H) -H #H1 #H2 destruct +| #f #I #L #V #_ #IH #K #H + elim (append_inv_bind3_sn … H) -H * [ | #Y ] #H1 #H2 destruct + /3 width=1 by frees_pair/ +| #f #I #L #Hf #K #H + elim (append_inv_bind3_sn … H) -H * [ | #Y ] #H1 #H2 destruct + /2 width=1 by frees_atom, frees_unit/ +| #f #I #L #i #Hf #IH #K #H + elim (append_inv_bind3_sn … H) -H * [ | #Y ] #H1 #H2 destruct + /3 width=1 by frees_lref, frees_lref_push/ +| /2 width=1 by frees_gref/ +| /3 width=5 by frees_bind/ +| /3 width=5 by frees_flat/ +] +qed-. + +lemma frees_inv_append_void: ∀f,K,T. ⓧ.K ⊢ 𝐅*⦃T⦄ ≡ f → K ⊢ 𝐅*⦃T⦄ ≡ f. +/2 width=3 by frees_inv_append_void_aux/ qed-.