X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Frt_computation%2Fcpmuwe.ma;fp=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Frt_computation%2Fcpmuwe.ma;h=44d91e8da100b45ec9ff2a8bdc431afc0ac5ea9e;hb=0fea4ed429678c3293027cfe76fdbe15cfa331cb;hp=0000000000000000000000000000000000000000;hpb=bac74b5cff042d37e1abc9c961a6c41094b8a294;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpmuwe.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpmuwe.ma new file mode 100644 index 000000000..44d91e8da --- /dev/null +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpmuwe.ma @@ -0,0 +1,58 @@ +(**************************************************************************) +(* ___ *) +(* ||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/notation/relations/predevalwstar_6.ma". +include "basic_2/rt_computation/cnuw.ma". + +(* T-UNBOUND WHD EVALUATION FOR T-BOUND RT-TRANSITION ON TERMS **************) + +definition cpmuwe (h) (n) (G) (L): relation2 term term ≝ + λT1,T2. ∧∧ ⦃G,L⦄ ⊢ T1 ➡*[n,h] T2 & ⦃G,L⦄ ⊢ ➡𝐍𝐖*[h] T2. + +interpretation "t-unbound whd evaluation for t-bound context-sensitive parallel rt-transition (term)" + 'PRedEvalWStar h n G L T1 T2 = (cpmuwe h n G L T1 T2). + +definition R_cpmuwe (h) (G) (L) (T): predicate nat ≝ + λn. ∃U. ⦃G,L⦄ ⊢ T ➡*𝐍𝐖*[h,n] U. + +(* Basic properties *********************************************************) + +lemma cpmuwe_intro (h) (n) (G) (L): + ∀T1,T2. ⦃G,L⦄ ⊢ T1 ➡*[n,h] T2 → ⦃G,L⦄ ⊢ ➡𝐍𝐖*[h] T2 → ⦃G,L⦄ ⊢ T1 ➡*𝐍𝐖*[h,n] T2. +/2 width=1 by conj/ qed. + +(* Advanced properties ******************************************************) + +lemma cpmuwe_sort (h) (n) (G) (L) (T): + ∀s. ⦃G,L⦄ ⊢ T ➡*[n,h] ⋆s → ⦃G,L⦄ ⊢ T ➡*𝐍𝐖*[h,n] ⋆s. +/3 width=5 by cnuw_sort, cpmuwe_intro/ qed. + +lemma cpmuwe_ctop (h) (n) (G) (T): + ∀i. ⦃G,⋆⦄ ⊢ T ➡*[n,h] #i → ⦃G,⋆⦄ ⊢ T ➡*𝐍𝐖*[h,n] #i. +/3 width=5 by cnuw_ctop, cpmuwe_intro/ qed. + +lemma cpmuwe_zero_unit (h) (n) (G) (L) (T): + ∀I. ⦃G,L.ⓤ{I}⦄ ⊢ T ➡*[n,h] #0 → ⦃G,L.ⓤ{I}⦄ ⊢ T ➡*𝐍𝐖*[h,n] #0. +/3 width=6 by cnuw_zero_unit, cpmuwe_intro/ qed. + +lemma cpmuwe_gref (h) (n) (G) (L) (T): + ∀l. ⦃G,L⦄ ⊢ T ➡*[n,h] §l → ⦃G,L⦄ ⊢ T ➡*𝐍𝐖*[h,n] §l. +/3 width=5 by cnuw_gref, cpmuwe_intro/ qed. + +(* Basic forward lemmas *****************************************************) + +lemma cpmuwe_fwd_cpms (h) (n) (G) (L): + ∀T1,T2. ⦃G,L⦄ ⊢ T1 ➡*𝐍𝐖*[h,n] T2 → ⦃G,L⦄ ⊢ T1 ➡*[n,h] T2. +#h #n #G #L #T1 #T2 * #HT12 #_ // +qed-.