X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2A%2Funfold%2Flstas_aaa.ma;fp=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2A%2Funfold%2Flstas_aaa.ma;h=9345eb7ef39e9de4d11618c455b5ca0abb375834;hb=d2545ffd201b1aa49887313791386add78fa8603;hp=0000000000000000000000000000000000000000;hpb=57ae1762497a5f3ea75740e2908e04adb8642cc2;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/basic_2A/unfold/lstas_aaa.ma b/matita/matita/contribs/lambdadelta/basic_2A/unfold/lstas_aaa.ma new file mode 100644 index 000000000..9345eb7ef --- /dev/null +++ b/matita/matita/contribs/lambdadelta/basic_2A/unfold/lstas_aaa.ma @@ -0,0 +1,54 @@ +(**************************************************************************) +(* ___ *) +(* ||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_2A/static/aaa_lift.ma". +include "basic_2A/unfold/lstas_lstas.ma". + +(* NAT-ITERATED STATIC TYPE ASSIGNMENT FOR TERMS ****************************) + +(* Properties on atomic arity assignment for terms **************************) + +lemma aaa_lstas: ∀h,G,L,T,A. ⦃G, L⦄ ⊢ T ⁝ A → ∀d. + ∃∃U. ⦃G, L⦄ ⊢ T •*[h, d] U & ⦃G, L⦄ ⊢ U ⁝ A. +#h #G #L #T #A #H elim H -G -L -T -A +[ /2 width=3 by ex2_intro/ +| * #G #L #K #V #B #i #HLK #HV #IHV #d + [ elim (IHV d) -IHV #W + elim (lift_total W 0 (i+1)) + lapply (drop_fwd_drop2 … HLK) + /3 width=10 by lstas_ldef, aaa_lift, ex2_intro/ + | @(nat_ind_plus … d) -d + [ elim (IHV 0) -IHV /3 width=7 by lstas_zero, aaa_lref, ex2_intro/ + | #d #_ elim (IHV d) -IHV #W + elim (lift_total W 0 (i+1)) + lapply (drop_fwd_drop2 … HLK) + /3 width=10 by lstas_succ, aaa_lift, ex2_intro/ + ] + ] +| #a #G #L #V #T #B #A #HV #_ #_ #IHT #d elim (IHT d) -IHT + /3 width=7 by lstas_bind, aaa_abbr, ex2_intro/ +| #a #G #L #V #T #B #A #HV #_ #_ #IHT #d elim (IHT d) -IHT + /3 width=6 by lstas_bind, aaa_abst, ex2_intro/ +| #G #L #V #T #B #A #HV #_ #_ #IHT #d elim (IHT d) -IHT + /3 width=6 by lstas_appl, aaa_appl, ex2_intro/ +| #G #L #W #T #A #HW #_ #_ #IHT #d elim (IHT d) -IHT + /3 width=3 by lstas_cast, aaa_cast, ex2_intro/ +] +qed-. + +lemma lstas_aaa_conf: ∀h,G,L,d. Conf3 … (aaa G L) (lstas h d G L). +#h #G #L #d #A #T #HT #U #HTU +elim (aaa_lstas h … HT d) -HT #X #HTX +lapply (lstas_mono … HTX … HTU) -T // +qed-.