X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Fi_dynamic%2Fntas_nta_ind.ma;fp=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Fi_dynamic%2Fntas_nta_ind.ma;h=ec6b81822c4d8ffa968e54285746b88b7261bf57;hb=86861e6f031df66824a381527dfe847029ff72bc;hp=0000000000000000000000000000000000000000;hpb=7e6fea0332e132a8cb89c689ba68c5e884c4354c;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_nta_ind.ma b/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_nta_ind.ma new file mode 100644 index 000000000..ec6b81822 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_nta_ind.ma @@ -0,0 +1,111 @@ +(**************************************************************************) +(* ___ *) +(* ||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/dynamic/nta_drops.ma". +include "basic_2/dynamic/nta_cpcs.ma". +include "basic_2/i_dynamic/ntas_cpcs.ma". +include "basic_2/i_dynamic/ntas_nta.ma". +include "basic_2/i_dynamic/ntas_ntas.ma". + +(* ITERATED NATIVE TYPE ASSIGNMENT FOR TERMS ********************************) + +(* Advanced eliminators for native type assignment **************************) + +lemma ntas_ind_bi_nta (h) (a) (G) (L) (Q:relation3 …): + (∀T1,T2. ⦃G,L⦄ ⊢ T1 ![h,a] → ⦃G,L⦄ ⊢ T2 ![h,a] → ⦃G,L⦄ ⊢ T1 ⬌*[h] T2 → + Q 0 T1 T2 + ) → + (∀T1,T2. ⦃G,L⦄ ⊢ T1 :[h,a] T2 → Q 1 T1 T2 + ) → + (∀n1,n2,T1,T2,T0. ⦃G,L⦄ ⊢ T1 :*[h,a,n1] T0 → ⦃G,L⦄ ⊢ T0 :*[h,a,n2] T2 → + Q n1 T1 T0 → Q n2 T0 T2 → Q (n1+n2) T1 T2 + ) → + ∀n,T1,T2. ⦃G,L⦄ ⊢ T1 :*[h,a,n] T2 → Q n T1 T2. +#h #a #G #L #Q #IH1 #IH2 #IH3 #n +@(nat_elim1 n) -n * [| * ] +[ #_ #T1 #T2 #H + elim (ntas_inv_zero … H) -H #HT1 #HT2 #HT12 + /2 width=1 by/ +| #_ #T1 #T2 #H + /3 width=1 by ntas_inv_nta/ +| #n #IH #T1 #T2